From 49df6fb60690acf72f5c4e9d80dcd87fe40f686b Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 21 Sep 2022 11:04:30 +0200 Subject: [PATCH] bump version to 0.7.1 --- CHANGELOG.md | 12 + VERSION | 2 +- docs/.buildinfo | 2 +- docs/_images/fittrackee_screenshot-01.png | Bin 563068 -> 563139 bytes docs/_images/fittrackee_screenshot-02.png | Bin 379975 -> 380063 bytes docs/_images/fittrackee_screenshot-03.png | Bin 211317 -> 211405 bytes docs/_images/fittrackee_screenshot-04.png | Bin 71504 -> 71592 bytes docs/_images/fittrackee_screenshot-05.png | Bin 72857 -> 72940 bytes docs/_images/fittrackee_screenshot-06.png | Bin 107168 -> 107240 bytes docs/_images/fittrackee_screenshot-07.png | Bin 111668 -> 131351 bytes docs/_sources/changelog.md.txt | 12 + docs/_sources/installation.rst.txt | 16 +- docs/_static/documentation_options.js | 2 +- docs/api/auth.html | 4 +- docs/api/configuration.html | 8 +- docs/api/index.html | 4 +- docs/api/oauth2.html | 4 +- docs/api/records.html | 4 +- docs/api/sports.html | 4 +- docs/api/stats.html | 4 +- docs/api/users.html | 4 +- docs/api/workouts.html | 4 +- docs/apps.html | 4 +- docs/changelog.html | 665 +++++++++--------- docs/cli.html | 4 +- docs/features.html | 4 +- docs/genindex.html | 4 +- docs/http-routingtable.html | 4 +- docs/index.html | 4 +- docs/installation.html | 20 +- docs/objects.inv | Bin 1522 -> 1522 bytes docs/search.html | 4 +- docs/searchindex.js | 2 +- docs/troubleshooting/administrator.html | 4 +- docs/troubleshooting/index.html | 4 +- docs/troubleshooting/user.html | 4 +- .../_images/fittrackee_screenshot-01.png | Bin 563068 -> 563139 bytes .../_images/fittrackee_screenshot-02.png | Bin 379975 -> 380063 bytes .../_images/fittrackee_screenshot-03.png | Bin 211317 -> 211405 bytes .../_images/fittrackee_screenshot-04.png | Bin 71504 -> 71592 bytes .../_images/fittrackee_screenshot-05.png | Bin 72857 -> 72940 bytes .../_images/fittrackee_screenshot-06.png | Bin 107168 -> 107240 bytes .../_images/fittrackee_screenshot-07.png | Bin 111668 -> 131351 bytes docsrc/source/installation.rst | 16 +- fittrackee/__init__.py | 2 +- fittrackee/application/app_config.py | 4 +- fittrackee/dist/index.html | 2 +- fittrackee/dist/service-worker.js | 2 +- fittrackee/dist/service-worker.js.map | 2 +- .../js/{app.93333818.js => app.66d3a1a4.js} | 4 +- ...pp.93333818.js.map => app.66d3a1a4.js.map} | 2 +- ...kouts.39602236.js => workouts.520d24bf.js} | 2 +- ...602236.js.map => workouts.520d24bf.js.map} | 2 +- fittrackee_client/package.json | 2 +- pyproject.toml | 2 +- 55 files changed, 450 insertions(+), 405 deletions(-) rename fittrackee/dist/static/js/{app.93333818.js => app.66d3a1a4.js} (99%) rename fittrackee/dist/static/js/{app.93333818.js.map => app.66d3a1a4.js.map} (99%) rename fittrackee/dist/static/js/{workouts.39602236.js => workouts.520d24bf.js} (99%) rename fittrackee/dist/static/js/{workouts.39602236.js.map => workouts.520d24bf.js.map} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2d6b86e..7a180ede 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Change log +## Version 0.7.1 (2022/09/21) + +### Bugs Fixed + +* [PR#241](https://github.com/SamR1/FitTrackee/issues/241) - Add missing password strength estimation package (german) + +### Translations + +* [PR#239](https://github.com/SamR1/FitTrackee/issues/239) - Translations update from Weblate (German, thanks to @qwerty287) +* [cb9d02f](https://github.com/SamR1/FitTrackee/commit/cb9d02ff1d047e9abd80a87121796f94376b54d3) - Update OAuth 2.0 translations (English & French) + + ## Version 0.7.0 (2022/09/19) ### Features and enhancements diff --git a/VERSION b/VERSION index faef31a4..39e898a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.0 +0.7.1 diff --git a/docs/.buildinfo b/docs/.buildinfo index d3f0656c..fa7555e0 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 0fd6e5b14109ac1347607ea7ecf55a9e +config: 9594882bb2b61dd90626b5f49f21c53b tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_images/fittrackee_screenshot-01.png b/docs/_images/fittrackee_screenshot-01.png index 83199b9d62029f6f443e40818e67cd96785eabc1..a8f783e4c9c5314d8d8829f8863b4fbf4d8666fa 100644 GIT binary patch delta 23644 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 Sv#BHqIP@=@=$2~#5&j>?rJYCs delta 23726 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 A5C8xG diff --git a/docs/_images/fittrackee_screenshot-02.png b/docs/_images/fittrackee_screenshot-02.png index 93ddd79139b11f2c22045dadd6005aa05a9e8f2d..62e01438b7d714f8d78079b0e7252c3129748cf2 100644 GIT binary patch delta 18279 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%0AXY-?{~L@zp342=YP^ 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 Y1Bre?V1XQ?q5uE@07*qoM6N<$g7L?=NB{r; delta 18381 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 Y0FEnX%3j2KIRF3v07*qoM6N<$f^dw#8~^|S diff --git a/docs/_images/fittrackee_screenshot-03.png b/docs/_images/fittrackee_screenshot-03.png index 5a8406d771d6166a07b8ffee4722f36ff88d3258..317069804aa10a3df1d2b76222452a631d2043e3 100644 GIT binary patch delta 10801 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⪻$EnM)T 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 Wt+)Bb^dT<<*kmLW#H&RO0{*5M_uS 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%0AoAQp{Xav2t4YG9WVibB*w1sX$ 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 VVY0V}|9Y!ISzhBs`SX_{{~w1|W{Cg* delta 16732 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 diff --git a/docs/_images/fittrackee_screenshot-05.png b/docs/_images/fittrackee_screenshot-05.png index dd0f171c1da28d26c7dc0ae7743779ce8babfd06..eae8064296aef4739def090cbafd6b5d75ed3cc1 100644 GIT binary patch delta 13476 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 delta 13560 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 delta 17245 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

5I7e zR~wz3E&|@p`6lvJxdgI}ZvGB(8;0wO7hG53zPEopR|vW~>YdnxYcO*WnLn!SbnSMX zjtHny_XN>i+jZW$Z{o6iFIVqY%l))r;$Q7Ii*hgdX+Z_$v%eAf`+ic?Z=t9oNQ>=9DVh`qJxAcvq~1Pa4x*Q9iCLpSnbtSc@mpV1Zv! z5sUp0_;iSg`n|U(0~nWvsJuX>s(mc%D8nplcQ%zTCNWHLVri@lN334WfQCtGyb z$$M92sc6PJ!-}_ICwL-dy1;B{p6{21dkqct{te(Y-ZABu$r}Qc3+pdFE>W}7-L+$PHbTDyX zjA|r0DbCJz_{g2OPbFz+#0lt*0cfUpC~DuG>z5<@OPoJ5Lo!_NBoI`qLsi}~8&wsH z{lQ;Cqwpt`f&QG_{=kMla_o#ts(P<=aMHTe~DquSkJ~lM1PEIucF8`cxkGm#%pV@ zHl#Y;LIW7k=9e-$rf!iv*XVx!0WDHd9Nk#s>sV3L=eOcF_P7t;>jVQ-F~!Id;V3E@ zVh*>zfj`aK9KwLm7Inay$aaV|fQ8Vho1s_@KQdgfNrCv7{+6=5VsQR+9do879r6aj zYoVjZSvuy@dx#|C0h)j{5QWHjcO~!#Cb1HW@}pj4Bxyn0ku)DyB&kVi8G;(rVdqmd zBe=XYwY<=7nsj#ufr~iI2Fj=ALm=c!<|-Oa8nQC{hSdo8K8Tdu#(bZRdD+;Rc-h#D zm^it)SeXnA**KWE**^2K8ga9K27igkBPhV+;$!FI;p61x=HQCad}WWx#;3x@#m~ye z&%qZn^@`&E{JR>7&;`F*hvgF*G8O8WWK0JSJK76ubQ)n}RXM+Fp89JZ1baSUSd{xM z8NH3e+Q)H5$ujl{&WU*AcTCM%GxbgLcY94*b=3wInu+G`E30Zs7B%=fP}W4A8TUWm zfS?W^;hs_Y$j(BX-p*LxeHegac@VQdq6$CQ;)K?08J|yD}Yod(BtLFu?W$?*1 zS!KRdxker4#wD9z$gJhz{u>6jMM4Cp3vf9RqzCB90T3eS(Wn ztZHm*?9jaAA165lPU!I=HuXcRcKx3#pQ<22>;fOZA&~R#sHekL+(Qcs+MAo3{;^z> z!r+L0i`wT(kAt55&!DlGE@DEDsEjK2u<$Z`2!z)W?Y~zGe2N2sq=fy9{bxwl#%~+*onDc9*8}&>wT(ng8k&bv8=?p?FqlZ!3hr`2>6d*F97f| z?|B9~I;eC4v#NwdU{-dv^PF)4ICW*vK44SW2j^X@qNkU(HJrNdmKqyNnLklzzuv1z z40dK8Ah~HJG^l!vUnqwXaaunw`;KEh#Y(9FT8292TNVUj_XK>US`{%dv0CH8!a@iB z)S4o2ic?0U{mP3!fb=Pby6PwA`%qDf3efFs_pri8$6>!mG_KS@V?==P`k~SLXbmnb zH1~qm0$oMD|Gd6P-O9Aqav}ONaaYtlr43ZkYR1KZm$+)q3ONq64!KMo(xeg_8{5>6 z!P!|23?vA|qK3v=n0yo6Y^E-E{KBN5qC%mkr-vS3VM$nk=dpqpA%G!iLD#%g292RM z-yP2#92!z~a;o|K`7l@UK*Vc_@t`ExKl@L#;h z-q|q=27PQ7+@Ql87Z+F9(vtES{PWTCwKAY_*VfizqoP(d<6~oUKnv2*(*wbXV8Esz z+SE4>5`bR5dwf|V@abAjPUd0zYwPRik8YPEN0b7il@Wa8%a5|MsyaF;C#RLDBfF6my9hoI@X$vW$|k#BpJNEIj}H?*Ch(f8~^!hqy|AL=<61m}ECC`vW_ zH78cL=`_>SdHdJQ&YgOiTF}lk-X?N)cXxr~_Hf!v2my&_t$wI9fv#99k zXt{!BS8Hcj1aq){vWD^82m_${V~cWg3*R-K%1SDJ>9F*|T06DMQM>ddcEcZmTEKiR z6crC5cYK6_B)O8+{063$Yix{{6F&&MvfgaDSrz8*?F^Nggc>iTdlJmEx~S~t{!CGQ!4(yG)4NMY$$2gO+^5WW`6x8;jrbH-s|t2Cmgy` z{zORV`ZATr;!}EBG-W1 z1wIk)!LF&P?7+d55%mz5ULlR1t27d`fc(pl&4z7yUX22pG(Z{mVgDspNGR`?3ybWP zh_XIRiYZAPu-NNM->=+WR(MzzG^*4%yL~-T15=LH^ISvV!oi*55oVnFIkJ|6>Q;s@ ziEH_yekV;bZNm8d_3p}-(&Q&+mNUa?<~ogCZXoGj*xIK{{=29}g;=Et;= z#L%MnUe|LB_KA^y^wT;3`M8doY>LdP=-BLv6%=w1f@ zCCPZg%6&oKVYBYG%Wg*RYS`o<9uS_04l!*mL269;bCe&Kte=tSxOUb)Lr?Smo!Upf zdwTazlhm;H*V2a=_~oU``xL;TXJaZ=u-2b%T8#H%nGwr0+7pB6adlr=1B4vPlUPzp z`*+I=KP}g*hOaI*h}ZSoaXlPza9x=N2Ltj7he7F6uGozern{rTTo%^@?*NPYC1NPG z@!h4W4OmoapEA+g&u?yQT8=Z#?2LyuXd#PEX0J&^jD;Y$fa{m$C(1##|U1 z73SpBoV@<6Uz6u)IL}Cx3mi=LDW~1+3r`aLb-gDcenkeQXJ#Hd{NYtpP{5n};u<1i zy|!M#z)LF<6r38Jqp1(ezV$<`eG4NYH`e{c{TOK{i+hG<3q+E%fK5s;OfU0^*GR&p zVhr7U5*MFEvz=S51^LXfms0(peIt_(!U-vt411yxHn!sLDT+AYa!dzhg}-dx4X4*D zKN4C$_#BTGiqT*aJ8s*of5@I7!+pPq0LkE9rQwl#XUoFkc2}4zH_>Y_IPfcs++UDGM;>|BI;)bX?C7Ainvxt>z9R+ z3E_i3g)+dxlkf|0zqR!V>k_No$&b^jb1!8kwChCIUx*@~U34g()w~L7oD)NGft)KN zkp`KxT!h-(&SXnTk3>>>RlAzUS)s<1y9GSo3rUvdU@6<6nGp5p<3`*2mD@uN>0aW*DhvCB%V zjN7lnaay=a9YnVkO0{SkItqYi($hjDQzc5<{+r`wVM6JrPt zzB&x)HU!8x2{!QC*j^BkmxpPykz`NtGM?p>vw;f?s&sOp;w+F~MFo|!d4tR0?M?;$ z_m?Z2aOtePuZG48h;#OjtzGDBIHF8e4KGWz&^ekY4)SzASJ)j^fwy0>Y5F1>TP~|4 z%C}|o+P2er^f^*O&3RN(Ka~m4s5>+Z8sstn9NN=?;9O6A6 zPA$X>FC%jMwguFGNQc!b6nc!GU!bO&d+fcz7N&3L{x;X-Y#BB*Q=*xjlau4F9`RT= z!Y4V;cc<K>ETh{_Dsbol60)y@JmQ}zP0NANI(U)8aCsLIcemG!(Rjn1cz0K1tsdR7G(ojE z&8q{tSrzY{DvV5h>xs~bkN{(_Be1R(XH(Aa;^qePIobZ1(A=U^R)RG6a3;<5YBs-j z|G3%etHa8}M`Mo*wR=w%{+#I2g$6}1!-~}ubeqo<>b`D0+dy)+yta}}V}H+-#5Gm} zA|M)w3s<~(zbo6 zAfZ;beGb+zi}h(d>~>f*Q2_E|5~Af1)}KRlnBr}Tx<2DqC;g?F!C>2{AF=3>?B3^c zeqhO-c((GeSQ@o{G=`e~YeH5%LST2_^KLHad?Uoxd@&W5fwe=v>&f}lV#ASJ0m9@v zgG}*BNn#pM?W%@&@-YA>v}SDlfu0SVtxxkAZ7vXq8wN~5j?d&)oeQ4?BGFDfEy*eWWfR`A~eM1s%IiYP(w` zBqZ>wOTO(CjrVIl39FFWn!vZ~WQIw*gy_HJjHn}9WJynl?(I~yb(rhFh>L&1Eh zqUqwK@U419oFFYfgjpa$>>oD(?1+)$Iy4!<*R;2{AMEe{!}x9-e)F}Upn(2{H+9&Z zD-$eBU@LeHPN7;wNhum6G2o9i%`G^*bicg)zTw8$$Vdf~1*9op8+LiTpIKKR_EeJx zkHzFi3W-n!4UJbQATI)&Gma>gT|87)w)CY^o%Mnm&=rK6FU|9>ub>(vwY<&eyAzUz zy`g+29|@m66^R1hUf*J#Qb#-bi^A9TM~;~ELG9ubTcQjeGQ^wX>r3!))b#XH>UwUu zrX>UIM7Hd#tQCX%cQ=(*Csq@}zd)?hBL6w^8nCL!Y*HIpg7IC5P&9%15P?SJ?@x+oIrA)VEDWoe1S7=VmEeZ zGa96uysCRDD5*eHNcoc*5GqNg> z2pphUswVb0hV^me;}~~`?-YhC&s8YY%E!iPLEo5yjsd$AMxOpafOuC&fy&K)jg=?? zHwu9h(4-T+i}50p2aAt|{5&jJafs{x!uG*yytTe%RHY3FMdmjI2p5Ay9eZyk#&^;I zbl}eZQNp7^9|eM!Apsr#J!4V|Iqv*tQ+Mee{(|N|1<1K0>gGFW^h(`@0Z>3OseYyc z{EHuNtspk~{X{|Y8+5w;?=IHb^wze47?_wKAuc&NaR3FI{}v3y0w1Kx;dcC~px)rn zsPm`_fGuPC(NSm#L%CH|>~RSR${?`^+dqlJ*?$3Eb^MkLze#Z>0T4=?8Nt6}B(j@YtFCuQv)5PJ(*DpZp&cpY~<-2yZ$r1y*jC;qC z(i7|7T}c0<;$R`i@tVKrjhO0wU9JQLpoQF2wliK4tr?LW5M4ow9YVf`EPXY)d#opM z)DyxBD^}byNeZA`1hx)ZDSrONMmT=ol6ndENn~Zd-<&K7Dqf7M#ie0}g`pOClM%PE$ z3;))Bqo<=&{oq=V=J_dWzSf!!I^WFl9z-6J-?ZxnK=M?t_eDJJF5PvNN!&kx-oUX6 zrri$pL4dh`T5~1o9{?uKVS|522fM!+Wa3Q>cdR^EEPHUo7F zr)^pF{q+$7vzszbE{j(=H-`;_{b~g{B^y> z;Aw;^IvthyjyERPbyery7Z|RW@V21fO?opG^a18xMZbuz_2*by>tvG?1?Adu&F?`T z)OxPp+j3ied{|DpT;10qy3G8{|6w1r-pA-goBBgwjVgc}Yg%6a*XZ_y-t-6qtkfkG z*JNaZ1mFoB+Y6|6y8FKBzLTi_NEEk5Jm0SX7ir@c#%4B)S%%YxONowWi-wox=RY)w zfT_*v5kNm?NOk!Af1$m{1PVMg=INe=dhg3sBRUPawx(|$r_NulZ8~yolR8hw$oV09 zvi(bm)X*SE^(ml_LD6KrXjW?hEUV~oCu`N4ZOx5XRGM9vuz*A$b=mFs_{EzEdwq%c zH9&s!?nUoVy-x(OOY@uWyn1x+E@|zD>WD5ID@?y|{jvWTeVw}U-u#B066$ejY@w_a zeAu?B<>oQBvCtt|e_JS?OL-m+FB*m~3|euUgC?S9aNOOplo;$YQ1=Gf%iU97XHV9g z8S0&We@4Ji1oi)E67$INf^qOI0TXUqFqMO?pnm5%EXL)uHkdIJN5J_pgy+Ql7L@}&SR#ti@RDQcqGY0L7 zmzc&=@P@tGxDwF7BYM7}xmB@%kM}ztiO+4SZe-xsOf$zeh?=ZH?U$Zk1DQxkIk5*@08xW2}E895qW{LY3?kek%@@fElT;Wh*r5&|0wkr&F)1dduVF7@4t28Bcs5c;h6c0k;YY1*D0 z9E>5aevmYxeeRqc`3X#H45xO*vQT;#{PMF)<%8A3_i`pzK`_ZJ$y{rGY!pZXGN zxZ@#&?E@|({3+8_G)h!$iUJrlAy<-I3wq(@UpsbkT>?rihHWN({6z!jZncX zx#9UyK6UZIpAYXOIdN=rOy8vC(CDXRkrbLw4GROeYxfv9SPBnOJi9(L`mvO=f!ivwZ@VZT z<#^wJga0eg-*!jUKv45kZTcBlna!q>kh#!tqXvwM{&x-304x4DSg8}R4obV3=(K97 zeZVpf-fObj!(#v*J+(!Z{EIrIN6g^A@GX6>pgHnghMEh&LRSF=d5e|2!W6lD9p;2Z z8=juR+RGX-5H%gRG=rZKHHLp%H4uo%|GEr>DSX7?gQy)As+yXK;3WpeOs(nQYT!SQdoJK3YIc#r z0lXj=PwRO!a=5O!|9{{Dl0VvZH#c9&AS;{fuN+$abpY!K)Ty^gh3Qm% zxVt%5zC2vQE{qx49FI7#?3Lw}jX)YsQ<*Dl$pL(L0uNcbu1 z7fQj@8y6e96GRG&oHCghm1d5jIzxDKTo=8U=_{(L9hli(PtSKcGtX8I#I~0f=Q(j&U z`@4$j)ohnpMl6^VbWD0}v}_R&_}BbT012%GNsB(Pylhgv_hYs$7!5n)JE#vRBZKF( zAd_tHh1!V>QNJRlbY27B618H+mmwftj%%?7%eW0(Q`qG|1F8gW?k%Tt%XW&25(&dR zQ;WieHkHK0e0xI)vqwi2pi1Rwg81zwvb7oGR@@A{ytAiG1qC0WP-xTUR&udby$f8c zr?;0LBw^81^*o|6%}WWOi3H+*VL!D;Z1-MaiR?^m?9T*{1D0A3RXwaSsI- zGq_col_h4|b{>z2gyekn^;y!@m?T(WklHxis;)2K#c#ILJbvD-B(aMtDk{>mu&9G( zd9>f=_O>N_zIJeEBmtbPtH$>yxNk}_GRVMM#iU&)^P0yd7O2ko0P=7mHc!{u_2EPg z$>z(0u>!^H$trP7_;RcEqc>b!>WFcIhT+S)OHIx(l#h2EkQb&C6x5BL%#(eM-LUgk zlQEvYFNFtaYq8?SCgGo~wi;XO0o73jneE}|oUecEMnG%OGTpDDlJGn2G%!i>*ertd znf3~}zE;yrYqL$iKHFV)BOxYc)YsRCFSI|@pvLj>@zK-LD#TFB8r7zy>F?LU2PbdR znWyS>6X_WpinQ}-1-Z??6aBp%v*0-lI!|i-tqyJ|T7F!?X*w?wVozoWBKUjVhwODb zMZdX$U#O~5@Fs~>MNw9a5_%~hsO`sWRxS;&6t%GI^Bj#$lrxPc9LY_dU&>CToe|$P z8RRb~HGaTd zHZpPb^|A@LhegNP9{c^Y*y!35XT7Mx^jvUn#9NZ4^F1LVPlKTKX@%&rrhVNdd%#-Q z>rW4c@ircPp00A(>p5kX_V$lA)fkgm=I;gVN9<5g)o@fR=-kTn9)3&07gI|EJKKnO ziV~Q2X9gTg(ATfcdl&KfBee_qE64=-&A%soK%R1KzwWM^O6Eu~yW0{3MLQ)U*T^@` z9^bXNF$K5oS{>FF+&9V$_Qu=HH-T;D!V`BFcwtK#`po%6K&3SmbcGSBFjyuN7u!^0 za)%Qar*5_pIoJd;-uZ8x{vd8NZE0zlY_KFsR|USlh+rY3?*kTEO(R^6=CZeb zB^MiqyyTCJ$!<&s%2HB@YpoRL1}(ryGY69!7}YZ=e2z7SeK=g8u#-( ziHX%JC?u_c?YhcD~@05p@ zru^f|eTs&0^564!=Rdl#osXFOIFD|euP^fb2TiGs(?JKJE^%HU%6i>DskJ67yGg&2 zF*e==+?ILLnk01JaZZF8GLI4*$xL=&&Zoy;);sMg{Q|Dfl)d;p>R{Jb+Y>JBTP%9z zD8ke`4~GpJq-~y#wWH@fU)q%ui*;;;-^oQRIv1|NG|J1{^ckQI@v*yO32jOV7qVP; zJ+IF<1Sux-+-A{J>szwK^gS<|^KRSs&sH~*YYc|o2=cq7rMZ2|X>&i4OZ-XwOS|T< z;PmH&_bITj+m&ED{&%dE%Wdziu@Ql5`1x2uF&B6OGfCJvTFjToY(B-fuSH)7hoz^+ zvWVc#o6^Mc#S$0mx18|mO&U)iqUGo?HH#A-a7^^BBq$AL?NgU;;$D|nZIcogpksDZ`fnvqjA!yo-45|Zc-Y<%RhUDg4Qj!bC@G3&SKm{emoV!klNK$Q!2rjt zVO0x@q7*8sK^9ttdYh%m?H`z`ii(+Zw(X_5g@t=d%@+HG;Al``GTWan-CJy|b~#+6 z3+l@3@Be7M+|oGjtikvaRFfKY$_(2smzuwT(N$l-k0ET6$v%bIP1e^;|ijHzjXBMAN+2dMh92w zEoZ%7d7UczUSIO}aXeXFT1PcA_pDMYUpO?!|H6m>!vQ(d)oiOk>7Crnc8~Hz_lJ>F z*CMa;C9Nepah4HEHj;S>i_VC+^q7Mbv7YjkLe27(ysr`n7GpJ;yXI$UV_zNBNoi$55iSc78vcy@TXH?Kqr ztK9QHIs&gWx~$u+1B!13jiQsdai)*H6@p9YgDjD-Nc3ctW`P9O-dm`}48K^^s_1-L zQf@*2Qy6&KMgjBj^p8T{ts6VZe!5r<;IK$Ro=b_3hiBF^7$*gu`>?mK1dpW%c53Ru z+Ccd+iN}_?&^@x==FS}qh(e$phJjv)g?HlMNCiDz2iA(LEV+{f_ovHri)$@s+^01y zTx~%>4c4jAUfJZyMn_ZYxhipzcP=H1%NFM~H3Dn>$nX31`BNjm7lf1Wt0XfmIk=`r zM?VLZ#*q`SO-$q8pxr25YD6CZ7M1Qr#EcGmOY*R>a`fg{phCmgm^ti?mh*S-$ZX%d zctG~G#ZcYg;g!eb_HIkIiEW+6Pm4K56%US+;iQp}r3Gy&Dyp~#p}jY0QefoXu%AxV z8M}tvEPF`KdmXhg~cP(A>YVP6OT@=$!}_Ewt4qs8Z#| zWnM3b3Q*auly|P{U6hm;*r_LuE%hA(eQgN$IDDzbeQqmpFSc$gJgci5aEfXsbK?~= zX*`#}c|2AklDoQv8nlVLt`YUkb63?lnvN04;b?Z)Q_vyO|2brmGf_@lyoXLu64VX0 zex?@tq2gNn_C~OHMN~9bZ93$_o8s8K)Q7DK0xXc^srB_0d)-_B;E5#uar>((gRYIE zqocWLaM3^F5=sy(75!3t0U=?~08g&OfQNj*+MY}D?n}|is+z++3i1W4yw`KAh3r4s$Gs7dYRry5 zL&rN1kmQE=28S3_w&;ajmKOW;omxhY2Bs_WB63Y`E`uAcqpzG$co$<4+o zLHWdtu+8X;ODuJ#A-lU4eyBd|^5&bq750kcA{QW_48Q=JY*Km%AO;3T5qIF$GqA?185wP`^&N+z;m(AE1Z6TW zBSR#N;;r1iAQl$Z{C7h|H5J8mUQ$g- z++`_Dg6skc1MfHl_UY*t=UXqm0U}Zxz8$!+s-pcjQ!g8s;*`G1h{(=lm9g}a{SCZn z{bHfm87>S4O$g$hR}BxvO!dL2;!(4`Mn(#ivDCt4-*u`-)f8{Z$rTRfvHHm{R$PKQ zF5^Q{AWb$n1}sH|S!+jAwLAMoLFu*2s+bqIX?V^c^GNh$ zrq^coD}CUuHgDv6X8nqrWMX2XYPdbDT(3%lQLEj+52O-PSARkmrQ;dL)b+h``5d?R zS__q(cSgxUwQx%6(L3Olk%`xJVOtW9{E>We9(G8itOt*ZByM%7;w$m)pIcd7u(4vFhW~*P^je`uasmcW-FK@MS z&okQ7-zP^;)Ut5M7n;|4_{QojY428}v={yUREdM1uvdIEm=*mTUGus5*cSEU{V!<>*z&z7g7XDAKQ|l0t>1B+ zf%rtu^+9;0{Oc&Bbm@Chi|_mSItJzH^=TFJyDRm}OJ7Ir;+hg2Wua?OKi#$%tCH0^ z)|QI12e;oumL89#iU@A3+wCkmj>G}KOq4+$YNe+~Q`g16VSO<1R#sN-Ew?s<$X7)}qu}e;uNH>f;4);Orj}q%kY-RXRWdUx2*e>N^7e+n z7i*=#Fxi`}%m$ex_>l-FF6<3^%>Zs7nwy(j%-0n9`uat%k5 z5r9;8G&?NKYuyr9vRmQws-_f`Uw-$4BMRC){mk8LO~LE$mDFQT=}L>_hybe+x3)3C z4g>QpbMaJ(Vts4w!_A7$lH-I3%9FpYS~z-(_1V)lQd9ntLeqQa?<|~2j)-UUS2Gcs z4wo;TPanK8hMx5H_Z@DcAHHd{1R0yF^hG7qd1g2s!ULExesMxpM3v6ujy|v diff --git a/docs/_images/fittrackee_screenshot-07.png b/docs/_images/fittrackee_screenshot-07.png index e33f00b5e6b384c94e6ad1653ad7e42bec9dabc7..793f820cabf3a63dea1724a7a6460da2371c4df7 100644 GIT binary patch literal 131351 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∈ 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 diff --git a/docs/_sources/changelog.md.txt b/docs/_sources/changelog.md.txt index d2d6b86e..7a180ede 100644 --- a/docs/_sources/changelog.md.txt +++ b/docs/_sources/changelog.md.txt @@ -1,5 +1,17 @@ # Change log +## Version 0.7.1 (2022/09/21) + +### Bugs Fixed + +* [PR#241](https://github.com/SamR1/FitTrackee/issues/241) - Add missing password strength estimation package (german) + +### Translations + +* [PR#239](https://github.com/SamR1/FitTrackee/issues/239) - Translations update from Weblate (German, thanks to @qwerty287) +* [cb9d02f](https://github.com/SamR1/FitTrackee/commit/cb9d02ff1d047e9abd80a87121796f94376b54d3) - Update OAuth 2.0 translations (English & French) + + ## Version 0.7.0 (2022/09/19) ### Features and enhancements diff --git a/docs/_sources/installation.rst.txt b/docs/_sources/installation.rst.txt index 326f95da..fae3ae7d 100644 --- a/docs/_sources/installation.rst.txt +++ b/docs/_sources/installation.rst.txt @@ -477,13 +477,13 @@ Production environment .. warning:: | Note that FitTrackee is under heavy development, some features may be unstable. -- Download the last release (for now, it is the release v0.7.0): +- Download the last release (for now, it is the release v0.7.1): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.0.tar.gz - $ tar -xzf v0.7.0.tar.gz - $ mv FitTrackee-0.7.0 FitTrackee + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.1.tar.gz + $ tar -xzf v0.7.1.tar.gz + $ mv FitTrackee-0.7.1 FitTrackee $ cd FitTrackee - Create **.env** from example and update it @@ -603,13 +603,13 @@ Prod environment - Change to the directory where FitTrackee directory is located -- Download the last release (for now, it is the release v0.7.0) and overwrite existing files: +- Download the last release (for now, it is the release v0.7.1) and overwrite existing files: .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.0.tar.gz - $ tar -xzf v0.7.0.tar.gz - $ cp -R FitTrackee-0.7.0/* FitTrackee/ + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.1.tar.gz + $ tar -xzf v0.7.1.tar.gz + $ cp -R FitTrackee-0.7.1/* FitTrackee/ $ cd FitTrackee - Update **.env** if needed (see `Environment variables `__). diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 63bfaec7..e15b7333 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.7.0', + VERSION: '0.7.1', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/api/auth.html b/docs/api/auth.html index 1251e9b0..2cd90e2e 100644 --- a/docs/api/auth.html +++ b/docs/api/auth.html @@ -5,7 +5,7 @@ - Authentication — FitTrackee 0.7.0 + <title>Authentication — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/configuration.html b/docs/api/configuration.html index 1f59fda0..f1adf703 100644 --- a/docs/api/configuration.html +++ b/docs/api/configuration.html @@ -5,7 +5,7 @@ - Configuration — FitTrackee 0.7.0 + <title>Configuration — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 @@ -153,7 +153,7 @@ "max_users": 0, "max_zip_file_size": 10485760, "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors" - "version": "0.7.0" + "version": "0.7.1" }, "status": "success" } @@ -194,7 +194,7 @@ "max_users": 10, "max_zip_file_size": 10485760, "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors" - "version": "0.7.0" + "version": "0.7.1" }, "status": "success" } diff --git a/docs/api/index.html b/docs/api/index.html index 86dddb79..d1a0857c 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -5,7 +5,7 @@ - API documentation — FitTrackee 0.7.0 + <title>API documentation — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/oauth2.html b/docs/api/oauth2.html index 4c563280..bd200cb6 100644 --- a/docs/api/oauth2.html +++ b/docs/api/oauth2.html @@ -5,7 +5,7 @@ - OAuth2 — FitTrackee 0.7.0 + <title>OAuth2 — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/records.html b/docs/api/records.html index 54a4cd7c..1b1211de 100644 --- a/docs/api/records.html +++ b/docs/api/records.html @@ -5,7 +5,7 @@ - Records — FitTrackee 0.7.0 + <title>Records — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/sports.html b/docs/api/sports.html index db38bd9d..6693d95f 100644 --- a/docs/api/sports.html +++ b/docs/api/sports.html @@ -5,7 +5,7 @@ - Sports — FitTrackee 0.7.0 + <title>Sports — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/stats.html b/docs/api/stats.html index 7d77c72c..ed40c1df 100644 --- a/docs/api/stats.html +++ b/docs/api/stats.html @@ -5,7 +5,7 @@ - Statistics — FitTrackee 0.7.0 + <title>Statistics — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/users.html b/docs/api/users.html index 07ac13ed..a2367383 100644 --- a/docs/api/users.html +++ b/docs/api/users.html @@ -5,7 +5,7 @@ - Users — FitTrackee 0.7.0 + <title>Users — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/api/workouts.html b/docs/api/workouts.html index c3408001..bf9543d8 100644 --- a/docs/api/workouts.html +++ b/docs/api/workouts.html @@ -5,7 +5,7 @@ - Workouts — FitTrackee 0.7.0 + <title>Workouts — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/apps.html b/docs/apps.html index 00ecdfa9..c8203023 100644 --- a/docs/apps.html +++ b/docs/apps.html @@ -5,7 +5,7 @@ - Third-party applications — FitTrackee 0.7.0 + <title>Third-party applications — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/changelog.html b/docs/changelog.html index 0683ee72..8126a803 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -5,7 +5,7 @@ - Change log — FitTrackee 0.7.0 + <title>Change log — FitTrackee 0.7.1 documentation @@ -40,7 +40,7 @@ FitTrackee - 0.7.0 + 0.7.1 @@ -80,15 +80,20 @@ role="menu" aria-labelledby="dLabelLocalToc">

  • Change log
      -
    • Version 0.7.0 (2022/09/19)
        -
      • Features and enhancements
      • +
      • Version 0.7.1 (2022/09/21)
      • +
      • Version 0.7.0 (2022/09/19) +
      • Version 0.6.12 (2022/09/14)
        • Issues Closed
        • Pull Requests
            @@ -98,298 +103,298 @@
        • Version 0.6.11 (2022/07/27)
            -
          • Issues Closed
              -
            • Bugs Fixed
            • +
            • Issues Closed
            • -
            • Pull Requests
                +
              • Pull Requests
              • Version 0.6.10 (2022/07/13)
              • -
              • Issues Closed
                  -
                • Bugs Fixed
                • +
                • Issues Closed
                • -
                • Pull Requests
                • Version 0.6.9 (2022/07/03)
                    -
                  • Issues Closed
                  • Version 0.6.8 (2022/06/22)
                      -
                    • Issues Closed
                    • Version 0.6.7 (2022/06/11)
                        -
                      • Issues Closed
                      • Version 0.6.6 (2022/05/29)
                      • Version 0.6.5 (2022/04/24)
                          -
                        • Issues Closed
                        • Version 0.6.4 (2022/04/23) -
                        • -
                        • Version 0.6.3 (2022/04/09)
                            -
                          • Pull Requests
                          • -
                          • Version 0.6.2 (2022/04/03)
                              -
                            • Issues Closed
                                +
                              • Version 0.6.3 (2022/04/09)
                              • -
                              • Version 0.6.1 (2022/03/27)
                                  +
                                • Version 0.6.2 (2022/04/03)
                                • -
                                • Version 0.6.0 (2022/03/27)
                                    +
                                  • Version 0.6.1 (2022/03/27)
                                    • Issues Closed
                                    • -
                                    • Pull Requests
                                        +
                                      +
                                    • +
                                    • Version 0.6.0 (2022/03/27)
                                    • Version 0.5.7 (2022/02/13)
                                        -
                                      • Issues Closed
                                          -
                                        • Misc
                                        • +
                                        • Issues Closed
                                        • -
                                        • Pull Requests
                                        • Version 0.5.6 (2022/02/05)
                                            -
                                          • Issues Closed
                                          • Version 0.5.5 (2022/01/19) -
                                          • -
                                          • Version 0.5.4 (2022/01/01)
                                          • -
                                          • Version 0.5.3 (2022/01/01)
                                              +
                                            • Version 0.5.4 (2022/01/01)
                                            • -
                                            • Version 0.5.2 (2021/12/19)
                                                +
                                              • Version 0.5.3 (2022/01/01)
                                              • -
                                              • Version 0.5.1 (2021/11/30)
                                                  +
                                                • Version 0.5.2 (2021/12/19)
                                                • -
                                                • Version 0.5.0 (2021/11/14)
                                                    +
                                                  • Version 0.5.1 (2021/11/30) +
                                                  • +
                                                  • Version 0.5.0 (2021/11/14)
                                                  • Version 0.4.9 (2021/07/16) -
                                                  • -
                                                  • Version 0.4.8 (2021/07/03)
                                                      -
                                                    • Issues Closed
                                                    • -
                                                    • Version 0.4.7 (2021/04/07)
                                                        +
                                                      • Version 0.4.8 (2021/07/03) +
                                                      • +
                                                      • Version 0.4.7 (2021/04/07)
                                                      • Version 0.4.6 (2021/02/21) -
                                                      • -
                                                      • Version 0.4.5 (2021/02/17)
                                                      • -
                                                      • Version 0.4.4 (2021/01/31)
                                                          +
                                                        • Version 0.4.5 (2021/02/17) +
                                                        • +
                                                        • Version 0.4.4 (2021/01/31)
                                                        • Version 0.4.3 (2021/01/10)
                                                            -
                                                          • Issues Closed
                                                          • Version 0.4.2 (2021/01/03)
                                                          • Version 0.4.1 (2020/12/31) -
                                                          • -
                                                          • Version 0.4.0 - FitTrackee on PyPI (2020/09/19)
                                                          • -
                                                          • Version 0.3.0 - Administration (2020/07/15)
                                                              +
                                                            • Version 0.4.0 - FitTrackee on PyPI (2020/09/19)
                                                            • +
                                                            • Version 0.3.0 - Administration (2020/07/15) +
                                                            • Version 0.2.5 - Fix and improvements (2020/01/31)
                                                            • Version 0.2.4 - Minor fix (2020/01/30)
                                                                -
                                                              • Issues Closed
                                                              • Version 0.2.3 - FitTrackee available in French (2019/12/29) -
                                                              • -
                                                              • Version 0.2.2 - Statistics fix (2019/09/23)
                                                                  -
                                                                • Issues Closed
                                                                • -
                                                                • Version 0.2.1 - Fix and improvements (2019/09/01)
                                                                    +
                                                                  • Version 0.2.2 - Statistics fix (2019/09/23) +
                                                                  • +
                                                                  • Version 0.2.1 - Fix and improvements (2019/09/01)
                                                                  • Version 0.2.0 - Statistics (2019/07/07)
                                                                      -
                                                                    • Issues Closed
                                                                    • Version 0.1.1 - Fix and improvements (2019/02/07)
                                                                        -
                                                                      • Issues Closed
                                                                      • Version 0.1.0 - First release 🎉 (2018-07-04)
                                                                          -
                                                                        • Issues Closed @@ -441,6 +446,22 @@

                                                                          Change log

                                                                          +
                                                                          +

                                                                          Version 0.7.1 (2022/09/21)

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          +
                                                                            +
                                                                          • PR#241 - Add missing password strength estimation package (german)

                                                                          • +
                                                                          +
                                                                          +
                                                                          +

                                                                          Translations

                                                                          +
                                                                            +
                                                                          • PR#239 - Translations update from Weblate (German, thanks to @qwerty287)

                                                                          • +
                                                                          • cb9d02f - Update OAuth 2.0 translations (English & French)

                                                                          • +
                                                                          +
                                                                          +

                                                                          Version 0.7.0 (2022/09/19)

                                                                          @@ -451,15 +472,15 @@
                                                                        • PR#236 - Add API rate limits

                                                                        -
                                                                        -

                                                                        Bugs Fixed

                                                                        +
                                                                        +

                                                                        Bugs Fixed

                                                                        • #232 - Speed chart can not be hidden

                                                                        • #237 - Can not edit a workout when notes value is null

                                                                        -
                                                                        -

                                                                        Translations

                                                                        +
                                                                        +

                                                                        Translations

                                                                        • PR#212 - Translations update from Hosted Weblate (thanks to J. Lavoie)

                                                                        @@ -470,8 +491,8 @@

                                                                        Version 0.6.12 (2022/09/14)

                                                                        Issues Closed

                                                                        -
                                                                        -

                                                                        Bugs Fixed

                                                                        +
                                                                        +

                                                                        Bugs Fixed

                                                                        • #230 - Database problem after upgrade to 0.6.11

                                                                        @@ -491,17 +512,17 @@

                                                                        Version 0.6.11 (2022/07/27)

                                                                        -
                                                                        -

                                                                        Issues Closed

                                                                        -
                                                                        -

                                                                        Bugs Fixed

                                                                        +
                                                                        +

                                                                        Issues Closed

                                                                        +
                                                                        +

                                                                        Bugs Fixed

                                                                        • #213 - Statistics - When using imperial measurements, ascent/descent should be in ft not mi

                                                                        -
                                                                        -

                                                                        Pull Requests

                                                                        +
                                                                        +

                                                                        Pull Requests

                                                                        Features

                                                                          @@ -516,19 +537,19 @@

                                                                          Version 0.6.10 (2022/07/13)

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #210 - ERROR - could not download 6 tiles
                                                                            Note: for tile server requiring subdomains, see the new environment variable STATICMAP_SUBDOMAINS

                                                                          -
                                                                          -

                                                                          Pull Requests

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Pull Requests

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #209 - Incorrect duration with track containing multiple segments

                                                                          @@ -540,23 +561,23 @@

                                                                          Version 0.6.9 (2022/07/03)

                                                                          FitTrackee is now available in German (thanks to @gorgobacka).
                                                                          And translations can be updated on Weblate.

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Features

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Features

                                                                          • #200 - Detect browser language to use matching translation if available

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • PR#208 - fix order on records cards

                                                                          • #201 - html lang attribute is not updated when changing language

                                                                          -
                                                                          -

                                                                          Translations

                                                                          +
                                                                          +

                                                                          Translations

                                                                          • PR#197 - Translations update from Weblate (French)

                                                                          • #196 - Use translation management tool

                                                                          • @@ -573,10 +594,10 @@

                                                                          Version 0.6.8 (2022/06/22)

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #193 - Allow deleting a workout when files are missing

                                                                          • #192 - Returns 404 instead of 500 when map file not found

                                                                          • @@ -584,8 +605,8 @@
                                                                          -
                                                                          -

                                                                          Misc

                                                                          +
                                                                          +

                                                                          Misc

                                                                          • change gpx and map file naming (included in PR#195)
                                                                            Note: it does not affect previously imported files

                                                                          • cc4287e - Fix docker env file

                                                                          • @@ -595,10 +616,10 @@

                                                                          Version 0.6.7 (2022/06/11)

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #156 - Process gpx file with offset

                                                                          @@ -608,8 +629,8 @@

                                                                          Version 0.6.6 (2022/05/29)

                                                                          -
                                                                          -

                                                                          Misc

                                                                          +
                                                                          +

                                                                          Misc

                                                                          No new features in this release, only dependencies update and code refacto before introducing new features.

                                                                          @@ -618,10 +639,10 @@

                                                                          It is now possible to start FitTrackee without a configured SMTP provider (see documentation). It reduces pre-requisites for single-user instances.

                                                                          To manage users, a new CLI is available.

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Features

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Features

                                                                          • #180 - allow using FitTrackee without SMTP server

                                                                          @@ -631,10 +652,10 @@ It reduces pre-requisites for single-user instances.

                                                                          Version 0.6.4 (2022/04/23)

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #178 - cannot send email with TLS

                                                                          @@ -644,10 +665,10 @@ It reduces pre-requisites for single-user instances.

                                                                          Version 0.6.3 (2022/04/09)

                                                                          -
                                                                          -

                                                                          Pull Requests

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Pull Requests

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #177 - Minor fixes

                                                                              @@ -661,10 +682,10 @@ It reduces pre-requisites for single-user instances.

                                                                          Version 0.6.2 (2022/04/03)

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #175 - Distance card on dashboard is not refreshed

                                                                          • #173 - link to user profile in workout card is incorrect

                                                                          • @@ -675,10 +696,10 @@ It reduces pre-requisites for single-user instances.

                                                                          Version 0.6.1 (2022/03/27)

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #171 - Stats chart is not updated correctly

                                                                          @@ -689,26 +710,26 @@ It reduces pre-requisites for single-user instances.

                                                                          Version 0.6.0 (2022/03/27)

                                                                          This version introduces some changes on user registration.
                                                                          From now on, a user needs to confirm his account after registration (an email with confirmation instructions is sent after registration).

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          Features

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          Features

                                                                          • #155 - Improve user registration

                                                                          • #106 - Allow user to update email

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #169 - user picture is not refreshed after update

                                                                          -
                                                                          -

                                                                          Pull Requests

                                                                          -
                                                                          -

                                                                          Bugs Fixed

                                                                          +
                                                                          +

                                                                          Pull Requests

                                                                          +
                                                                          +

                                                                          Bugs Fixed

                                                                          • #161 - Minor translation issue on ‘Farthest’

                                                                          • #160 - Minor translation issue on APP_ERROR

                                                                          • @@ -723,17 +744,17 @@ It reduces pre-requisites for single-user instances.

                                                                            This release contains several fixes including security fixes.
                                                                            Thanks to @DanielSiersleben for the report.

                                                                            And from now on, admin account is not created on application initialization.
                                                                            A new command is added to set administration rights on the account created after registration (see documentation)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Misc

                                                                            • #149 - improve database initialisation

                                                                            -
                                                                            -

                                                                            Pull Requests

                                                                            +
                                                                            +

                                                                            Pull Requests

                                                                            Security

                                                                              @@ -751,8 +772,8 @@ It reduces pre-requisites for single-user instances.

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            • #152 - Fixes and improvements:

                                                                                @@ -768,17 +789,17 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.6 (2022/02/05)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #146 - incorrect label on workouts filters

                                                                            -
                                                                            -

                                                                            Pull Requests

                                                                            +
                                                                            +

                                                                            Pull Requests

                                                                            • #145 - fix on database models

                                                                            @@ -787,8 +808,8 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.5 (2022/01/19)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            New Features

                                                                              @@ -798,8 +819,8 @@ It reduces pre-requisites for single-user instances.

                                                                            • #134 - Wind direction

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • 877fa0f - fix sport icon color (when changed) on calendar on small resolutions

                                                                            @@ -809,10 +830,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.4 (2022/01/01)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #131 - No workouts displayed on calendar

                                                                            @@ -822,10 +843,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.3 (2022/01/01)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #129 - Display only active sports when editing a workout

                                                                            • #127 - parse_email_url() can’t validate a legitimate EMAIL_URI such as “smtp://localhost:25”

                                                                            • @@ -836,10 +857,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.2 (2021/12/19)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #123 - Allow user to reset preferences for a sport

                                                                            • #121 - Add activity : snowshoes

                                                                            • @@ -850,10 +871,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.1 (2021/11/30)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #116 - Better UI for Speed and Elevation buttons in the graph of the Workout screen

                                                                            • #115 - Add option to download the GPX file of a Workout

                                                                            • @@ -865,10 +886,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.5.0 (2021/11/14)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #99 - Display workout with imperial units

                                                                            • #91 - Display elevation chart with min and max altitude of workout

                                                                            • @@ -876,21 +897,21 @@ It reduces pre-requisites for single-user instances.

                                                                            • #18 - Better UI

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #95 - Some workouts seem to be missing on statistics chart

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            • #104 - Switch to AGPLv3 license

                                                                            -
                                                                            -

                                                                            Pull Requests

                                                                            +
                                                                            +

                                                                            Pull Requests

                                                                            • #101 - Docker updates for full files

                                                                            • #100 - Add client application in docker for development

                                                                            • @@ -907,17 +928,17 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.9 (2021/07/16)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #83 - allow using configured tile server to generate static maps
                                                                              Note: to keep using the default tile server, set environment variable DEFAULT_STATICMAP to True

                                                                            • #81 - display remaining characters in textarea

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #82 - a user can not modify his birth day

                                                                            • #80 - can not save notes with control characters

                                                                            • @@ -928,10 +949,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.8 (2021/07/03)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #79 - Fails to start after make rebuild

                                                                            @@ -941,17 +962,17 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.7 (2021/04/07)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #75 - Workouts on the same day are not displayed in right order

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            • Update Python and Javascript dependencies
                                                                              IMPORTANT: Due to SQLAlchemy update (1.4+), engine URLs starting with postgres:// are no longer supported. Please update DATABASE_URL with postgresql://.

                                                                            @@ -960,10 +981,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.6 (2021/02/21)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #72 - Error message when file exceeding size is incorrect

                                                                            • #71 - max size or max number of files must be greater than 0

                                                                            • @@ -975,10 +996,10 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.5 (2021/02/17)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #66 - invalid gpx limit used when importing zip archive

                                                                            • #64 - Only 50 workouts per month shown in calendar

                                                                            • @@ -989,17 +1010,17 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.4 (2021/01/31)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #62 - Error when sending reset password email

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            • Refactoring before introducing new features.

                                                                            • Add docker files for evaluation purposes.

                                                                            • @@ -1009,16 +1030,16 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.3 (2021/01/10)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #58 - Standardize terms used for workouts
                                                                              Note: Database model, upload directory for workouts and API endpoints are also updated.

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #59 - No message displayed on uploading image error

                                                                            @@ -1028,18 +1049,18 @@ It reduces pre-requisites for single-user instances.

                                                                            Version 0.4.2 (2021/01/03)

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            No new features in this release, only some refactorings before introducing new features.

                                                                            Version 0.4.1 (2020/12/31)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #57 - Use uuid for activities

                                                                            @@ -1055,10 +1076,10 @@ new features.

                                                                          • It’s now possible to change the tile provider for maps. The default tile server is now OpenStreetMap’s standard tile layer (replacing ThunderForest Outdoors), see Map tile server in documentation.

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          New Features

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          New Features

                                                                          • #54 - Tile server can be changed

                                                                          • #53 - Simplify FitTrackee installation

                                                                          • @@ -1074,10 +1095,10 @@ see documentation)
                                                                            ⚠️ Warning: some application parameters move from environment variables to database (see installation).

                                                                          • in order to send emails, Redis is now a mandatory dependency

                                                                          -
                                                                          -

                                                                          Issues Closed

                                                                          -
                                                                          -

                                                                          New Features

                                                                          +
                                                                          +

                                                                          Issues Closed

                                                                          +
                                                                          +

                                                                          New Features

                                                                          • #50 - A user can reset his password

                                                                          • #17 - A user can delete his account

                                                                          • @@ -1089,8 +1110,8 @@ see

                                                                            Version 0.2.5 - Fix and improvements (2020/01/31)

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            This version contains minor fix and improvements on client side:

                                                                            • 4c3fc34 - empty user data on logout

                                                                            • @@ -1103,10 +1124,10 @@ add URL interceptors to simplify routes definition

                                                                            Version 0.2.4 - Minor fix (2020/01/30)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #47 - timezone drop-down is not displayed correctly

                                                                            • #46 - calendar cannot display more than 5 or 6 activities on the same day

                                                                            • @@ -1117,17 +1138,17 @@ add URL interceptors to simplify routes definition

                                                                            Version 0.2.3 - FitTrackee available in French (2019/12/29)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #43 - Display weekend days with a different background color on calendar

                                                                            • #40 - Localize FitTrackee (i18n)

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #44 - Cannot edit an activity that does not have a gpx file

                                                                            @@ -1137,10 +1158,10 @@ add URL interceptors to simplify routes definition

                                                                            Version 0.2.2 - Statistics fix (2019/09/23)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #41 - User statistics are incorrect

                                                                            @@ -1150,10 +1171,10 @@ add URL interceptors to simplify routes definition

                                                                            Version 0.2.1 - Fix and improvements (2019/09/01)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #4 - Show points on the map when mouse over the chart

                                                                            • #14 - Display segments informations

                                                                            • @@ -1164,15 +1185,15 @@ add URL interceptors to simplify routes definition

                                                                            • #37 - Display map on activities list

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #34 - Weather is not displayed anymore

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            @@ -1181,17 +1202,17 @@ add URL interceptors to simplify routes definition

                                                                            Version 0.2.0 - Statistics (2019/07/07)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #13 - Detailed statistics

                                                                            -
                                                                            -

                                                                            Misc

                                                                            +
                                                                            +

                                                                            Misc

                                                                            • Update dependencies

                                                                            @@ -1200,17 +1221,17 @@ add URL interceptors to simplify routes definition

                                                                            Version 0.1.1 - Fix and improvements (2019/02/07)

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #25 - Display records on calendar

                                                                            • #22 - Add a total on current month statistics

                                                                            -
                                                                            -

                                                                            Bugs Fixed

                                                                            +
                                                                            +

                                                                            Bugs Fixed

                                                                            • #31 - Use moving duration for stats

                                                                            • #29 - Pause duration calculation with segments

                                                                            • @@ -1259,10 +1280,10 @@ add URL interceptors to simplify routes definition

                                                                            • no administration for now

                                                                            ➡️ more informations: see documentation and current issues

                                                                            -
                                                                            -

                                                                            Issues Closed

                                                                            -
                                                                            -

                                                                            New Features

                                                                            +
                                                                            +

                                                                            Issues Closed

                                                                            +
                                                                            +

                                                                            New Features

                                                                            • #11 - Timezone support

                                                                            • #10 - Add a note to an activity

                                                                            • diff --git a/docs/cli.html b/docs/cli.html index 314e13e2..617f89ca 100644 --- a/docs/cli.html +++ b/docs/cli.html @@ -5,7 +5,7 @@ - Command line interface — FitTrackee 0.7.0 + <title>Command line interface — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/features.html b/docs/features.html index 378c9c9a..7635e9df 100644 --- a/docs/features.html +++ b/docs/features.html @@ -5,7 +5,7 @@ - Features — FitTrackee 0.7.0 + <title>Features — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/genindex.html b/docs/genindex.html index 21854078..b0f93d5d 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -4,7 +4,7 @@ - Index — FitTrackee 0.7.0 + <title>Index — FitTrackee 0.7.1 documentation @@ -38,7 +38,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/http-routingtable.html b/docs/http-routingtable.html index 00444e73..0933e7e6 100644 --- a/docs/http-routingtable.html +++ b/docs/http-routingtable.html @@ -4,7 +4,7 @@ - HTTP Routing Table — FitTrackee 0.7.0 + <title>HTTP Routing Table — FitTrackee 0.7.1 documentation @@ -45,7 +45,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/index.html b/docs/index.html index 6653ef5e..086066cb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,7 +5,7 @@ - FitTrackee — FitTrackee 0.7.0 + <title>FitTrackee — FitTrackee 0.7.1 documentation @@ -40,7 +40,7 @@ FitTrackee - 0.7.0 + 0.7.1 diff --git a/docs/installation.html b/docs/installation.html index 9e6205a6..eaa184b6 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -5,7 +5,7 @@ - Installation — FitTrackee 0.7.0 + <title>Installation — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1 @@ -787,11 +787,11 @@ $ make install-db
                                                                                -
                                                                              • Download the last release (for now, it is the release v0.7.0):

                                                                              • +
                                                                              • Download the last release (for now, it is the release v0.7.1):

                                                                              -
                                                                              $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.0.tar.gz
                                                                              -$ tar -xzf v0.7.0.tar.gz
                                                                              -$ mv FitTrackee-0.7.0 FitTrackee
                                                                              +
                                                                              $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.1.tar.gz
                                                                              +$ tar -xzf v0.7.1.tar.gz
                                                                              +$ mv FitTrackee-0.7.1 FitTrackee
                                                                               $ cd FitTrackee
                                                                               
                                                                              @@ -911,11 +911,11 @@ $ source .env
                                                                              • Stop the application

                                                                              • Change to the directory where FitTrackee directory is located

                                                                              • -
                                                                              • Download the last release (for now, it is the release v0.7.0) and overwrite existing files:

                                                                              • +
                                                                              • Download the last release (for now, it is the release v0.7.1) and overwrite existing files:

                                                                              -
                                                                              $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.0.tar.gz
                                                                              -$ tar -xzf v0.7.0.tar.gz
                                                                              -$ cp -R FitTrackee-0.7.0/* FitTrackee/
                                                                              +
                                                                              $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.1.tar.gz
                                                                              +$ tar -xzf v0.7.1.tar.gz
                                                                              +$ cp -R FitTrackee-0.7.1/* FitTrackee/
                                                                               $ cd FitTrackee
                                                                               
                                                                              diff --git a/docs/objects.inv b/docs/objects.inv index a4d1f6e0ab3f8d81934a09ad91f5cf4f97f82c7b..f0c37cff988fea18f528d91a3f449de939213918 100644 GIT binary patch delta 12 Tcmeyw{fT>m6Qkiq=k=@rA?*aG delta 12 Tcmeyw{fT>m6QjXK=k=@rA?O6A diff --git a/docs/search.html b/docs/search.html index 5f42147d..07f0837c 100644 --- a/docs/search.html +++ b/docs/search.html @@ -4,7 +4,7 @@ - Search — FitTrackee 0.7.0 + <title>Search — FitTrackee 0.7.1 documentation @@ -45,7 +45,7 @@ FitTrackee - 0.7.0 + 0.7.1
                                                                              diff --git a/docs/searchindex.js b/docs/searchindex.js index 7beab2a3..117a6839 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "apps", "changelog", "cli", "features", "index", "installation", "troubleshooting/administrator", "troubleshooting/index", "troubleshooting/user"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "apps.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst", "troubleshooting/user.rst"], "titles": ["Authentication", "Configuration", "API documentation", "OAuth2", "Records", "Sports", "Statistics", "Users", "Workouts", "Third-party applications", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "Administrator", "Troubleshooting", "User"], "terms": {"post": [0, 3, 8, 9], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13], "auth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "regist": [0, 1, 12, 14], "user": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 16], "send": [0, 7, 10, 12, 14], "confirm": [0, 3, 10, 12, 14], "email": [0, 1, 7, 10, 11, 12, 15], "The": [0, 9, 10, 11, 12, 14], "newli": [0, 14], "creat": [0, 3, 8, 9, 10, 12, 14], "account": [0, 7, 10, 11, 14], "i": [0, 1, 3, 9, 10, 11, 12, 13, 14, 16], "inact": [0, 7, 12, 14], "must": [0, 1, 3, 5, 7, 9, 10, 12, 14, 15], "hi": [0, 7, 10, 12], "activ": [0, 5, 7, 10, 11, 12, 13, 14], "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 14], "request": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 12, 14], "content": [0, 1, 3, 4, 5, 6, 7, 8], "type": [0, 1, 3, 4, 5, 6, 7, 8, 14], "applic": [0, 1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8], "respons": [0, 1, 3, 4, 5, 6, 7, 8], "success": [0, 1, 3, 4, 5, 6, 7, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14], "statu": [0, 1, 3, 4, 5, 6, 7, 8, 11], "error": [0, 1, 3, 5, 7, 8, 10, 12, 14, 15], "registr": [0, 1, 10, 12, 14], "400": [0, 1, 3, 5, 7, 8], "bad": [0, 1, 3, 5, 7, 8], "messag": [0, 1, 3, 8, 10, 11, 14], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14, 15], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15], "n": 0, "object": [0, 1, 5, 7, 8], "usernam": [0, 6, 7, 10, 14], "string": [0, 1, 3, 5, 6, 7, 8, 14], "3": [0, 5, 6, 7, 8, 12, 14], "30": [0, 6], "charact": [0, 10], "requir": [0, 9, 10, 14], "password": [0, 7, 10, 11, 12, 14], "8": [0, 8], "lang": [0, 10], "languag": [0, 7, 10, 12], "prefer": [0, 7, 10], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14], "fallback": 0, "en": [0, 7], "english": 0, "code": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "payload": [0, 1, 3, 5, 7, 8], "sorri": 0, "alreadi": 0, "taken": 0, "onli": [0, 3, 7, 8, 9, 10, 11, 12, 14], "alphanumer": [0, 10], "underscor": 0, "_": [0, 10], "allow": [0, 1, 8, 9, 10, 12, 13], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "disabl": [0, 10, 12, 14], "500": [0, 1, 5, 7, 8, 10], "intern": [0, 1, 5, 7, 8], "server": [0, 1, 5, 7, 8, 10, 12, 13], "pleas": [0, 1, 3, 4, 5, 6, 7, 8, 10], "try": [0, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "contact": [0, 1, 7, 8, 12], "administr": [0, 1, 7, 8, 9, 16], "after": [0, 3, 10, 12, 14], "auth_token": 0, "web": [0, 9, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "resend": 0, "instruct": [0, 10, 12, 14], "If": [0, 3, 9, 12, 14], "thi": [0, 3, 8, 10, 11, 12, 13, 14], "endpoint": [0, 1, 3, 9, 10, 14], "avail": [0, 4, 9, 11, 12, 14], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 10], "Not": [0, 3, 5, 6, 7, 8], "found": [0, 3, 5, 6, 7, 8, 10], "url": [0, 3, 10, 14, 15], "wa": [0, 10], "login": 0, "an": [0, 1, 3, 5, 7, 9, 10, 12, 14, 15], "can": [0, 7, 9, 10, 12, 13, 14, 15], "log": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15], "successfulli": 0, "401": [0, 1, 3, 4, 5, 6, 7, 8], "unauthor": [0, 1, 3, 4, 5, 6, 7, 8], "credenti": [0, 14], "get": [0, 1, 3, 4, 5, 6, 7, 8], "profil": [0, 3, 9, 10], "info": 0, "scope": [0, 1, 3, 4, 5, 6, 7, 8, 9], "read": [0, 3, 4, 5, 6, 7, 8, 9, 10], "data": [0, 1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14], "admin": [0, 1, 4, 5, 6, 7, 8, 10, 11, 12, 14], "fals": [0, 1, 3, 5, 7, 8, 14], "bio": [0, 7], "null": [0, 5, 7, 8, 10], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 10], "gmt": [0, 3, 4, 7, 8], "display_asc": 0, "true": [0, 1, 3, 5, 7, 10, 14], "sam": [0, 4, 7, 8], "com": [0, 1, 3, 7, 14], "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "last_nam": [0, 7], "locat": [0, 7, 14], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 11, 12, 14], "pictur": [0, 7, 8, 10], "record": [0, 2, 7, 8, 10, 12], "id": [0, 3, 4, 5, 6, 7, 8, 9], "9": [0, 4, 7, 12, 14], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "valu": [0, 3, 4, 7, 8, 10, 14], "18": [0, 4, 7, 8, 10], "workout_d": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 14], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8], "ha": [0, 4, 7, 8, 12, 13], "43": [0, 4, 7, 8, 10], "97": [0, 4, 7, 8], "11": [0, 4, 7, 12], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8], "m": [0, 4, 6, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 14], "timezon": [0, 7, 8, 10, 12], "europ": [0, 7], "pari": [0, 7], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 10, 14], "27": [0, 3, 7], "weekm": [0, 6, 7], "header": [0, 1, 3, 4, 5, 6, 7, 8, 9], "author": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "2": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 14], "0": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "bearer": [0, 1, 3, 4, 5, 6, 7, 8], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expir": [0, 1, 3, 4, 5, 6, 7, 8, 11], "edit": [0, 10, 12], "write": [0, 1, 3, 5, 7, 8, 9], "updat": [0, 1, 5, 7, 8, 10, 12, 14], "first": [0, 3, 9, 12], "name": [0, 3, 7, 10, 14], "last": [0, 10, 14], "biographi": 0, "birth": [0, 10], "date": [0, 6, 8, 10, 12], "format": [0, 6, 8], "y": [0, 6, 8, 14], "d": [0, 6, 8], "boolean": [0, 1, 3, 7, 11], "displai": [0, 8, 10, 11, 12, 13, 14, 16], "highest": [0, 4, 12], "ascent": [0, 4, 8, 10, 12], "total": [0, 3, 10, 12], "distanc": [0, 4, 8, 10, 12], "imperi": [0, 10, 12], "unit": [0, 10, 14], "time": [0, 6, 8, 10, 12], "zone": 0, "doe": [0, 6, 7, 8, 10], "week": [0, 6, 10, 12], "start": [0, 6, 8, 10, 12, 14, 16], "mondai": [0, 6, 12], "don": 0, "t": [0, 10, 15], "match": [0, 10], "sport": [0, 2, 6, 8, 10, 12, 14], "color": [0, 5, 10, 12], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "hexadecim": 0, "when": [0, 1, 10, 11, 12, 14], "ad": [0, 10, 11, 12], "workout": [0, 2, 3, 4, 5, 6, 9, 10, 13, 16], "float": [0, 8], "stop": [0, 10, 12, 14], "speed": [0, 4, 8, 10, 12, 14], "threshold": [0, 10, 12], "us": [0, 3, 7, 8, 9, 10, 12, 13, 14], "gpxpy": [0, 12, 14], "exist": [0, 6, 7, 8, 12, 13, 14], "delet": [0, 3, 7, 8, 10, 11, 12], "reset": [0, 7, 10, 11, 12, 14], "given": [0, 3, 14], "204": [0, 3, 7, 8], "paramet": [0, 3, 5, 6, 7, 8, 10, 12], "No": [0, 3, 7, 8, 10, 13], "multipart": [0, 3, 8], "form": [0, 3, 8], "file": [0, 1, 8, 10, 11, 12, 13, 14], "imag": [0, 7, 8, 10, 12, 14, 16], "extens": [0, 8, 14], "jpg": 0, "png": [0, 8, 14], "gif": 0, "part": [0, 8], "select": [0, 8, 12], "413": [0, 8], "entiti": [0, 8], "too": [0, 8], "larg": [0, 8, 12], "dure": [0, 8], "size": [0, 1, 8, 10, 12], "exce": [0, 8], "0mb": [0, 8], "NO": [0, 3, 7, 8], "handl": [0, 12, 14], "process": [0, 10, 12, 14], "patch": [0, 1, 5, 7, 8], "It": [0, 7, 9, 10, 12, 13, 15], "enabl": [0, 1, 7, 12, 14], "chang": [0, 12, 13, 14], "one": [0, 7, 8, 12], "current": [0, 10], "address": [0, 12, 14], "inform": [0, 10, 13, 14], "anoth": [0, 7, 14], "new": [0, 7, 9, 11, 12, 14], "new_password": 0, "miss": [0, 10], "logout": [0, 10], "blacklist": [0, 11], "out": 0, "access": [0, 3, 9, 10, 14], "revok": [0, 3], "malform": 0, "other": [0, 7, 14], "reason": 0, "config": [1, 10, 14], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_en": 1, "is_registration_en": 1, "max_single_file_s": 1, "1048576": 1, "max_us": 1, "max_zip_file_s": 1, "10485760": 1, "map_attribut": [1, 14], "copi": [1, 14], "href": [1, 14], "www": [1, 14], "openstreetmap": [1, 10, 14], "org": [1, 14], "copyright": [1, 14], "contributor": [1, 10, 14], "version": [1, 11, 14], "7": [1, 8, 9, 11, 12, 14], "authent": [1, 2, 3, 4, 5, 7, 8, 9], "integ": [1, 3, 5, 6, 7, 8], "max": [1, 7, 8, 10], "number": [1, 7, 8, 10, 11, 12, 14], "zip": [1, 8, 10, 12], "archiv": [1, 10, 12, 14], "singl": [1, 7, 10, 12, 14], "instanc": [1, 3, 9, 10, 12, 14], "you": [1, 5, 6, 7, 8, 12, 13], "do": [1, 5, 6, 7, 8], "have": [1, 5, 6, 7, 8, 10], "permiss": [1, 5, 6, 7, 8], "ping": 1, "health": 1, "check": [1, 10, 14, 15], "pong": 1, "configur": [2, 9, 10, 12, 14], "oauth2": [2, 9], "statist": 2, "app": [3, 9, 10, 12, 13], "client": [3, 9, 10, 12, 14], "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 11, 12, 14], "page": [3, 7, 8, 10], "fittracke": [3, 9, 11, 12, 14, 16], "parti": [3, 12, 13], "without": [3, 6, 7, 8, 10, 12, 13], "client_descript": 3, "client_id": 3, "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "juli": 3, "2022": 3, "06": [3, 6], "53": [3, 10], "gpx": [3, 8, 10, 12, 13, 14], "import": [3, 10, 14], "redirect_uri": 3, "callback": 3, "websit": 3, "has_next": 3, "has_prev": 3, "queri": [3, 6, 7, 8], "default": [3, 6, 7, 8, 10, 12, 14], "client_secret": 3, "secret": [3, 9, 14], "client_nam": 3, "client_uri": 3, "arrai": 3, "list": [3, 10, 13, 14], "redirect": 3, "descript": [3, 11, 14], "option": [3, 10, 11, 14], "client_client_id": 3, "NOT": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "all": [3, 4, 5, 6, 7, 14], "associ": 3, "issu": [3, 13, 14], "response_typ": 3, "support": [3, 9, 10, 12, 14, 15], "state": 3, "uniqu": 3, "prevent": 3, "cross": [3, 12], "site": 3, "forgeri": 3, "mandatori": [3, 8, 10, 14], "recommend": [3, 9, 14], "code_challeng": 3, "gener": [3, 10, 12, 14], "from": [3, 6, 8, 10, 12, 13], "verifi": 3, "pkce": [3, 9], "code_challenge_method": 3, "method": [3, 14], "challeng": 3, "s256": 3, "return": [3, 4, 7, 8, 10, 14], "authlib": [3, 9, 14], "librari": [3, 9, 14], "refresh": [3, 10], "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "grant": [3, 9, 14], "authorization_cod": 3, "ar": [3, 4, 8, 9, 10, 11, 12, 13, 14, 16], "code_verifi": 3, "follow": [4, 9, 11, 12, 14, 15], "averag": [4, 8, 10, 12], "farthest": [4, 10, 12], "longest": [4, 10, 12], "durat": [4, 8, 10, 12], "maximum": [4, 10, 12], "non": [5, 13], "is_active_for_us": 5, "label": [5, 10], "cycl": [5, 10, 12], "transport": [5, 10, 12], "hike": [5, 10, 12], "mountain": [5, 12], "bike": [5, 8, 10, 12], "run": [5, 9, 10, 12, 14], "walk": [5, 10, 12], "has_workout": 5, "stat": [6, 10], "user_nam": [6, 7], "by_tim": 6, "2018": [6, 8], "2017": [6, 8], "average_spe": 6, "48": 6, "total_asc": 6, "203": 6, "156": [6, 10], "15": [6, 8], "282": 6, "12341": 6, "16": [6, 8], "99": [6, 10], "150": 6, "178": [6, 10], "47": [6, 8, 10], "9960": 6, "95": [6, 10], "46": [6, 10], "78": 6, "613": 6, "1267": 6, "end": [6, 8], "frame": 6, "sundai": [6, 8, 12], "month": [6, 10, 12], "year": [6, 12], "by_sport": 6, "uploads_dir_s": 6, "1000": 6, "regardless": 7, "right": [7, 9, 10, 11, 12, 14], "some": [7, 8, 9, 10, 12, 13, 14], "order_bi": 7, "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": 7, "03": [7, 8], "fr": [7, 14], "per_pag": [7, 8], "per": [7, 8, 10, 14], "q": 7, "sort": [7, 8], "criteria": 7, "order": [7, 8, 10], "asc": 7, "detail": [7, 10, 14, 16], "jpeg": 7, "add": [7, 10, 11, 12, 13], "remov": [7, 10, 11, 12], "modifi": [7, 10, 11, 14], "new_email": 7, "reset_password": 7, "differ": [7, 10, 12], "than": [7, 10, 11], "curent": 7, "A": [7, 10, 11, 12, 14, 15], "own": [7, 12, 13], "except": [7, 14, 15], "he": 7, "": [7, 8, 10, 14], "john_do": 7, "your": [7, 12, 13, 14], "02": 8, "31": 8, "least": 8, "ave_spe": 8, "bound": 8, "creation_d": 8, "51": 8, "descent": [8, 10, 12], "17": [8, 14], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 10, 12, 13, 16], "max_alt": 8, "max_spe": 8, "min_alt": 8, "modification_d": 8, "move": [8, 10], "next_workout": 8, "note": [8, 10, 12, 14], "paus": [8, 10], "previous_workout": 8, "mon": 8, "jan": 8, "segment": [8, 10, 12], "titl": 8, "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 10, 12], "distance_from": 8, "minim": [8, 9], "distance_to": 8, "maxim": 8, "duration_from": 8, "h": [8, 12], "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "desc": 8, "workout_short_id": 8, "57": [8, 10], "45": 8, "22": 8, "morn": 8, "short": 8, "leaflet": [8, 14], "chart_data": 8, "chart": [8, 10, 12, 14], "j": [8, 10, 14], "elev": [8, 10, 12, 14], "279": 8, "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "63": 8, "fri": 8, "44": [8, 10], "7380": 8, "280": 8, "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "rechart": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 14], "x": [8, 9, 14], "tile": [8, 10, 12], "c": [8, 14], "4109": 8, "2930": 8, "subdomain": [8, 10, 14], "zoom": 8, "index": 8, "along": 8, "axi": 8, "download": [8, 10, 12, 14], "xml": 8, "201": [8, 10], "no_gpx": 8, "uuid": [8, 10], "km": [8, 12], "second": 8, "rest": 9, "see": [9, 10, 12, 13, 14, 15], "document": [9, 10, 13, 14], "whose": 9, "most": 9, "To": [9, 10, 14], "interact": 9, "set": [9, 10, 11, 12, 14, 15], "tab": 9, "flow": 9, "exchang": 9, "sent": [9, 10, 12, 14], "bodi": 9, "better": [9, 10], "secur": 9, "relat": [9, 12, 14], "implement": 9, "behind": 9, "proxi": [9, 14], "forward": [9, 14], "proto": [9, 14], "For": [9, 12, 14], "nginx": [9, 12, 14], "proxy_set_head": [9, 14], "scheme": [9, 14], "resourc": 9, "about": [9, 14], "simplifi": [9, 10], "aaron": 9, "parecki": 9, "oauthlib": 9, "python": [9, 10, 14], "session": 9, "88": 10, "231": 10, "pr": 10, "236": 10, "rate": 10, "limit": [10, 12], "232": 10, "hidden": [10, 12], "237": 10, "212": 10, "host": [10, 14], "weblat": 10, "thank": 10, "lavoi": 10, "contain": [10, 12, 14], "databas": [10, 12, 14, 15], "migrat": [10, 11, 14], "upgrad": 10, "230": 10, "problem": 10, "225": 10, "grammar": 10, "skylan0916": 10, "In": [10, 12], "execut": 10, "lower": 10, "v0": [10, 14], "postgr": [10, 15], "213": 10, "measur": 10, "should": [10, 14], "ft": 10, "mi": 10, "223": 10, "icon": [10, 14], "167": 10, "dashboard": 10, "162": 10, "fmstrat": 10, "210": 10, "could": 10, "environ": [10, 11, 15], "variabl": [10, 15], "staticmap_subdomain": [10, 14], "209": 10, "incorrect": 10, "track": [10, 13], "multipl": 10, "gorgobacka": 10, "now": [10, 11, 12, 14], "german": 10, "And": 10, "detect": 10, "browser": 10, "208": 10, "card": 10, "html": 10, "attribut": [10, 14], "197": 10, "196": 10, "manag": [10, 11, 14], "tool": [10, 14], "190": 10, "were": 10, "193": 10, "192": 10, "instead": [10, 12], "191": 10, "layout": 10, "includ": 10, "195": 10, "affect": 10, "previous": 10, "cc4287e": 10, "docker": 10, "env": [10, 14], "offset": 10, "depend": [10, 14], "refacto": 10, "befor": [10, 14], "introduc": 10, "possibl": [10, 12, 13, 14], "smtp": [10, 14], "reduc": 10, "pre": 10, "requisit": 10, "cli": [10, 11, 12, 14], "180": 10, "cannot": [10, 12], "tl": [10, 14], "177": 10, "posit": [10, 12], "small": 10, "screen": [10, 12], "175": 10, "173": 10, "link": [10, 14], "171": 10, "correctli": 10, "need": [10, 14], "155": 10, "106": 10, "169": 10, "161": 10, "160": 10, "sever": [10, 12, 13, 14], "danielsiersleben": 10, "report": 10, "initi": [10, 14], "command": [10, 12, 13, 14], "149": 10, "initialis": [10, 14], "152": 10, "autoescap": 10, "jinja": 10, "templat": 10, "151": 10, "sanit": 10, "input": 10, "serv": [10, 14], "dramatiq": [10, 14], "warn": [10, 12], "launch": 10, "worker": [10, 14], "w": 10, "script": 10, "entrypoint": 10, "drop": 10, "avoid": 10, "product": 10, "dotenv": 10, "146": 10, "filter": [10, 12], "145": 10, "model": 10, "140": 10, "fullscreen": 10, "control": [10, 12], "138": 10, "135": 10, "finish": 10, "marker": 10, "134": 10, "wind": [10, 12], "direct": [10, 12], "877fa0f": 10, "calendar": [10, 12], "resolut": 10, "131": 10, "129": 10, "127": [10, 14], "pars": [10, 14], "legitim": 10, "uri": 10, "localhost": [10, 14], "25": [10, 14], "123": 10, "121": 10, "snowsho": [10, 12], "116": 10, "ui": 10, "button": 10, "graph": 10, "115": 10, "91": 10, "min": 10, "altitud": 10, "90": 10, "seem": 10, "104": 10, "switch": 10, "agplv3": 10, "licens": [10, 13, 14], "101": 10, "full": [10, 12], "develop": [10, 11, 13], "98": 10, "109": 10, "slow": 10, "movement": 10, "84": 10, "93": 10, "paf38": 10, "83": 10, "static": [10, 12, 14], "keep": [10, 13, 14], "default_staticmap": [10, 14], "81": 10, "remain": 10, "textarea": 10, "82": 10, "dai": [10, 11, 12, 14], "80": [10, 14], "save": [10, 12], "79": 10, "fail": [10, 16], "make": [10, 14], "rebuild": 10, "75": 10, "same": 10, "javascript": [10, 14], "due": 10, "sqlalchemi": [10, 14, 15], "engin": [10, 14, 15], "longer": [10, 15], "database_url": [10, 14], "postgresql": [10, 14, 15], "72": 10, "exceed": 10, "71": 10, "greater": 10, "70": 10, "less": 10, "upload": [10, 11, 12, 14], "66": 10, "64": 10, "shown": [10, 16], "62": 10, "refactor": 10, "evalu": [10, 14], "purpos": [10, 14], "standard": [10, 14], "term": [10, 14], "directori": [10, 12, 14], "also": [10, 11, 13, 14], "59": 10, "major": 10, "instal": [10, 13], "becom": 10, "more": [10, 11, 12, 13, 14], "easi": 10, "been": [10, 13], "renam": 10, "layer": [10, 14], "replac": [10, 14], "thunderforest": [10, 14], "outdoor": [10, 12, 13, 14], "54": 10, "redi": [10, 14], "complet": 10, "side": 10, "4c3fc34": 10, "empti": [10, 11, 14], "34614d5": 10, "spinner": 10, "load": [10, 15], "b862a77": 10, "2e1ee2c": 10, "interceptor": 10, "rout": [10, 14], "definit": 10, "down": 10, "weekend": 10, "background": 10, "40": 10, "local": [10, 13, 14], "i18n": 10, "41": 10, "show": [10, 11, 14], "point": [10, 14], "mous": 10, "over": 10, "choos": [10, 12], "36": 10, "33": 10, "37": 10, "34": 10, "weather": [10, 12, 14], "anymor": 10, "poetri": [10, 14], "pipenv": 10, "packag": [10, 14], "calcul": 10, "28": 10, "26": 10, "tooltip": [10, 12], "creation": [10, 12], "montain": 10, "even": [10, 12], "enter": [10, 12], "darkski": [10, 12], "kei": [10, 12, 14], "farest": 10, "search": 10, "owner": [10, 12], "view": [10, 12, 14], "usag": [11, 14], "arg": [11, 14], "help": [11, 14], "exit": [11, 14], "deprec": 11, "next": [11, 12], "fittrackee_set_admin": 11, "fittrackee_upgrade_db": 11, "appli": 11, "store": [12, 13], "kind": 12, "encrypt": 12, "With": [12, 14], "open": [12, 13, 14], "street": [12, 13], "electr": 12, "row": 12, "ski": 12, "alpin": 12, "countri": 12, "trail": 12, "overridden": 12, "which": 12, "up": [12, 13], "metric": 12, "system": [12, 14], "arrow": 12, "indic": 12, "come": 12, "period": 12, "mai": [12, 13, 14], "origin": 12, "dropdown": 12, "On": [12, 14], "case": [12, 14], "line": [12, 13, 14], "between": 12, "hide": 12, "overrid": 12, "appear": 12, "still": [12, 13, 14], "third": [12, 13], "defin": 12, "rais": 12, "necessari": [12, 14], "like": [12, 14], "lock": 12, "via": 12, "mobil": 13, "yet": 13, "export": [13, 14], "them": 13, "android": 13, "exhaust": 13, "runner": 13, "gpl": 13, "v3": 13, "forrunn": 13, "opentrack": 13, "apach": 13, "fitotrack": 13, "under": [13, 14], "heavi": [13, 14], "featur": [13, 14], "unstabl": [13, 14], "interfac": [13, 14], "troubleshoot": 13, "written": 14, "typescript": 14, "flask": 14, "staticmap": 14, "coordin": 14, "forecast": 14, "io": 14, "fetch": 14, "dark": 14, "sky": 14, "former": 14, "task": 14, "queue": 14, "vue3": 14, "vuex": 14, "logo": 14, "made": 14, "freepik": 14, "flaticon": 14, "fork": 14, "awesom": 14, "yarn": 14, "compos": 14, "step": 14, "describ": 14, "linux": 14, "test": 14, "debian": 14, "arch": 14, "o": 14, "encount": 14, "adapt": 14, "sinc": 14, "makefil": 14, "custom": 14, "thei": 14, "flask_app": 14, "modul": 14, "pwd": 14, "__main__": 14, "py": 14, "els": 14, "port": 14, "5000": 14, "app_set": 14, "productionconfig": 14, "app_secret_kei": 14, "strong": 14, "jwt": 14, "app_work": 14, "spawn": 14, "gunicorn": [14, 15], "app_log": 14, "path": [14, 15], "upload_fold": [14, 15], "absolut": [14, 15], "where": 14, "folder": 14, "application_directori": 14, "virtualenv": 14, "5432": 14, "begin": 14, "database_disable_pool": 14, "pool": 14, "entri": 14, "directli": 14, "ui_url": 14, "email_url": [14, 15], "sender_email": 14, "sender": 14, "redis_url": 14, "workers_process": 14, "api_rate_limit": 14, "300": 14, "minut": 14, "tile_server_url": 14, "b": 14, "osm": 14, "franc": 14, "target": 14, "_blank": 14, "rel": 14, "noopen": 14, "noreferr": 14, "komoot": 14, "de": 14, "otherwis": 14, "insensit": 14, "weather_api_kei": 14, "weather_api": 14, "vue_app_api_url": 14, "unencrypt": 14, "ssl": 14, "465": 14, "starttl": 14, "587": 14, "office365": 14, "work": 14, "omit": 14, "old": 14, "adress": 14, "apikei": 14, "xxxx": 14, "servic": 14, "expect": 14, "osmfr": 14, "fond": 14, "cart": 14, "par": 14, "mention": 14, "legal": 14, "nofollow": 14, "sou": 14, "nbsp": 14, "creativecommon": 14, "sa": 14, "licenc": 14, "cc": 14, "BY": 14, "chosen": 14, "randomli": 14, "base": 14, "ip": 14, "fix": 14, "window": 14, "strategi": 14, "subject": 14, "asset": 14, "notat": 14, "separ": 14, "comma": 14, "hour": 14, "mainten": 14, "diagnost": 14, "util": 14, "commmand": 14, "clear": 14, "specif": 14, "enumer": 14, "wai": 14, "pip": 14, "WITH": 14, "privileg": 14, "ON": 14, "TO": 14, "nano": 14, "schema": 14, "ftcli": 14, "db": 14, "fittrackee_work": 14, "systemd": 14, "3000": 14, "archlinux": 14, "yai": 14, "project": 14, "clone": 14, "repo": 14, "git": 14, "github": 14, "samr1": 14, "cd": 14, "vue": 14, "releas": 14, "wget": 14, "tar": 14, "gz": 14, "xzf": 14, "mv": 14, "sql": 14, "backup": 14, "pg_dump": 14, "u": 14, "changelog": 14, "restart": 14, "pull": 14, "repositori": 14, "overwrit": 14, "cp": 14, "r": 14, "There": 14, "One": 14, "pass": 14, "distribut": 14, "network": 14, "startlimitintervalsec": 14, "simpl": 14, "alwai": 14, "restartsec": 14, "standardoutput": 14, "syslog": 14, "standarderror": 14, "syslogidentifi": 14, "workingdirectori": 14, "home": 14, "execstart": 14, "venv": 14, "bin": 14, "create_app": 14, "logfil": 14, "wantedbi": 14, "multi": 14, "OF": 14, "listen": 14, "443": 14, "http2": 14, "server_nam": 14, "ssl_certif": 14, "fullchain": 14, "pem": 14, "ssl_certificate_kei": 14, "privkei": 14, "proxy_pass": 14, "proxy_redirect": 14, "real": 14, "remote_addr": 14, "proxy_add_x_forwarded_for": 14, "301": 14, "request_uri": 14, "larger": 14, "client_max_body_s": 14, "build": 14, "init": 14, "8025": 14, "mailhog": 14, "shell": 14, "insid": 14, "addit": 14, "fittrackee_cli": 14, "lint": 14, "exc": 15, "nosuchmoduleerror": 15, "plugin": 15, "dialect": 15, "invalidemailurlschem": 15, "todo": 17}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 1, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 2, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 1, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 2, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 2, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 1, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 2, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 2, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 2, 1, "get--api-ping", "/api/ping"], [4, 2, 1, "get--api-records", "/api/records"], [5, 2, 1, "get--api-sports", "/api/sports"], [5, 2, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 2, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 2, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 2, 1, "get--api-stats-all", "/api/stats/all"], [7, 2, 1, "get--api-users", "/api/users"], [7, 1, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 2, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 2, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 2, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 1, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 2, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [14, 4, 1, "envvar-API_RATE_LIMITS", "API_RATE_LIMITS \ud83c\udd95"], [14, 4, 1, "-", "APP_LOG"], [14, 4, 1, "-", "APP_SECRET_KEY"], [14, 4, 1, "-", "APP_SETTINGS"], [14, 4, 1, "-", "APP_WORKERS"], [14, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [14, 4, 1, "-", "DATABASE_URL"], [14, 4, 1, "-", "DEFAULT_STATICMAP"], [14, 4, 1, "-", "EMAIL_URL"], [14, 4, 1, "-", "FLASK_APP"], [14, 4, 1, "-", "HOST"], [14, 4, 1, "-", "MAP_ATTRIBUTION"], [14, 4, 1, "-", "PORT"], [14, 4, 1, "-", "REDIS_URL"], [14, 4, 1, "-", "SENDER_EMAIL"], [14, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [14, 4, 1, "-", "TILE_SERVER_URL"], [14, 4, 1, "-", "UI_URL"], [14, 4, 1, "-", "UPLOAD_FOLDER"], [14, 4, 1, "-", "VUE_APP_API_URL"], [14, 4, 1, "-", "WEATHER_API_KEY"], [14, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 2, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:delete", "2": "http:get", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "delete", "HTTP delete"], "2": ["http", "get", "HTTP get"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "environment variable"]}, "titleterms": {"authent": 0, "configur": 1, "api": [2, 14], "document": 2, "endpoint": 2, "oauth2": [3, 11], "record": 4, "sport": 5, "statist": [6, 10, 12], "user": [7, 11, 17], "workout": [8, 12, 15], "third": 9, "parti": 9, "applic": 9, "chang": 10, "log": 10, "version": 10, "0": 10, "7": 10, "2022": 10, "09": 10, "19": 10, "featur": [10, 12], "enhanc": 10, "bug": 10, "fix": 10, "translat": [10, 12], "6": 10, "12": 10, "14": 10, "issu": 10, "close": 10, "pull": 10, "request": 10, "misc": 10, "11": 10, "07": 10, "27": 10, "10": 10, "13": 10, "9": 10, "03": 10, "8": 10, "06": 10, "22": 10, "05": 10, "29": 10, "5": 10, "04": 10, "24": 10, "4": 10, "23": 10, "3": 10, "2": 10, "1": 10, "02": 10, "secur": 10, "01": 10, "new": 10, "2021": 10, "30": 10, "16": 10, "21": 10, "17": 10, "31": 10, "2020": 10, "fittracke": [10, 13, 15], "pypi": [10, 14], "administr": [10, 12, 15], "15": 10, "improv": 10, "minor": 10, "avail": 10, "french": 10, "2019": 10, "first": 10, "releas": 10, "2018": 10, "command": 11, "line": 11, "interfac": 11, "databas": 11, "ftcli": 11, "db": 11, "upgrad": [11, 14], "drop": 11, "clean": 11, "clean_token": 11, "updat": 11, "account": 12, "prefer": 12, "screenshot": 12, "dashboard": 12, "detail": [12, 15], "list": 12, "tabl": 13, "content": 13, "instal": 14, "prerequisit": 14, "environ": 14, "variabl": 14, "email": 14, "map": [14, 15], "tile": 14, "server": 14, "rate": 14, "limit": 14, "from": 14, "sourc": 14, "dev": 14, "product": 14, "prod": 14, "deploy": 14, "docker": 14, "develop": 14, "fail": 15, "start": 15, "imag": 15, "ar": 15, "displai": 15, "i": 15, "shown": 15, "troubleshoot": 16}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/auth", "api/configuration", "api/index", "api/oauth2", "api/records", "api/sports", "api/stats", "api/users", "api/workouts", "apps", "changelog", "cli", "features", "index", "installation", "troubleshooting/administrator", "troubleshooting/index", "troubleshooting/user"], "filenames": ["api/auth.rst", "api/configuration.rst", "api/index.rst", "api/oauth2.rst", "api/records.rst", "api/sports.rst", "api/stats.rst", "api/users.rst", "api/workouts.rst", "apps.rst", "changelog.md", "cli.rst", "features.rst", "index.rst", "installation.rst", "troubleshooting/administrator.rst", "troubleshooting/index.rst", "troubleshooting/user.rst"], "titles": ["Authentication", "Configuration", "API documentation", "OAuth2", "Records", "Sports", "Statistics", "Users", "Workouts", "Third-party applications", "Change log", "Command line interface", "Features", "FitTrackee", "Installation", "Administrator", "Troubleshooting", "User"], "terms": {"post": [0, 3, 8, 9], "api": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13], "auth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "regist": [0, 1, 12, 14], "user": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 16], "send": [0, 7, 10, 12, 14], "confirm": [0, 3, 10, 12, 14], "email": [0, 1, 7, 10, 11, 12, 15], "The": [0, 9, 10, 11, 12, 14], "newli": [0, 14], "creat": [0, 3, 8, 9, 10, 12, 14], "account": [0, 7, 10, 11, 14], "i": [0, 1, 3, 9, 10, 11, 12, 13, 14, 16], "inact": [0, 7, 12, 14], "must": [0, 1, 3, 5, 7, 9, 10, 12, 14, 15], "hi": [0, 7, 10, 12], "activ": [0, 5, 7, 10, 11, 12, 13, 14], "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 14], "request": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "http": [0, 1, 3, 4, 5, 6, 7, 8, 14], "1": [0, 1, 3, 4, 5, 6, 7, 8, 12, 14], "content": [0, 1, 3, 4, 5, 6, 7, 8], "type": [0, 1, 3, 4, 5, 6, 7, 8, 14], "applic": [0, 1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14], "json": [0, 1, 3, 4, 5, 6, 7, 8], "respons": [0, 1, 3, 4, 5, 6, 7, 8], "success": [0, 1, 3, 4, 5, 6, 7, 8], "200": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14], "statu": [0, 1, 3, 4, 5, 6, 7, 8, 11], "error": [0, 1, 3, 5, 7, 8, 10, 12, 14, 15], "registr": [0, 1, 10, 12, 14], "400": [0, 1, 3, 5, 7, 8], "bad": [0, 1, 3, 5, 7, 8], "messag": [0, 1, 3, 8, 10, 11, 14], "valid": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14, 15], "provid": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15], "n": 0, "object": [0, 1, 5, 7, 8], "usernam": [0, 6, 7, 10, 14], "string": [0, 1, 3, 5, 6, 7, 8, 14], "3": [0, 5, 6, 7, 8, 12, 14], "30": [0, 6], "charact": [0, 10], "requir": [0, 9, 10, 14], "password": [0, 7, 10, 11, 12, 14], "8": [0, 8], "lang": [0, 10], "languag": [0, 7, 10, 12], "prefer": [0, 7, 10], "invalid": [0, 1, 3, 4, 5, 6, 7, 8, 10, 14], "fallback": 0, "en": [0, 7], "english": [0, 10], "code": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], "ok": [0, 1, 3, 4, 5, 6, 7, 8], "payload": [0, 1, 3, 5, 7, 8], "sorri": 0, "alreadi": 0, "taken": 0, "onli": [0, 3, 7, 8, 9, 10, 11, 12, 14], "alphanumer": [0, 10], "underscor": 0, "_": [0, 10], "allow": [0, 1, 8, 9, 10, 12, 13], "403": [0, 1, 5, 6, 7, 8], "forbidden": [0, 1, 5, 6, 7, 8], "disabl": [0, 10, 12, 14], "500": [0, 1, 5, 7, 8, 10], "intern": [0, 1, 5, 7, 8], "server": [0, 1, 5, 7, 8, 10, 12, 13], "pleas": [0, 1, 3, 4, 5, 6, 7, 8, 10], "try": [0, 7, 8], "again": [0, 1, 3, 4, 5, 6, 7, 8], "contact": [0, 1, 7, 8, 12], "administr": [0, 1, 7, 8, 9, 16], "after": [0, 3, 10, 12, 14], "auth_token": 0, "web": [0, 9, 13, 14], "token": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11], "resend": 0, "instruct": [0, 10, 12, 14], "If": [0, 3, 9, 12, 14], "thi": [0, 3, 8, 10, 11, 12, 13, 14], "endpoint": [0, 1, 3, 9, 10, 14], "avail": [0, 4, 9, 11, 12, 14], "resent": 0, "404": [0, 3, 5, 6, 7, 8, 10], "Not": [0, 3, 5, 6, 7, 8], "found": [0, 3, 5, 6, 7, 8, 10], "url": [0, 3, 10, 14, 15], "wa": [0, 10], "login": 0, "an": [0, 1, 3, 5, 7, 9, 10, 12, 14, 15], "can": [0, 7, 9, 10, 12, 13, 14, 15], "log": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15], "successfulli": 0, "401": [0, 1, 3, 4, 5, 6, 7, 8], "unauthor": [0, 1, 3, 4, 5, 6, 7, 8], "credenti": [0, 14], "get": [0, 1, 3, 4, 5, 6, 7, 8], "profil": [0, 3, 9, 10], "info": 0, "scope": [0, 1, 3, 4, 5, 6, 7, 8, 9], "read": [0, 3, 4, 5, 6, 7, 8, 9, 10], "data": [0, 1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14], "admin": [0, 1, 4, 5, 6, 7, 8, 10, 11, 12, 14], "fals": [0, 1, 3, 5, 7, 8, 14], "bio": [0, 7], "null": [0, 5, 7, 8, 10], "birth_dat": [0, 7], "created_at": [0, 7], "sun": [0, 4, 7, 8], "14": [0, 3, 7, 8], "jul": [0, 4, 7, 8], "2019": [0, 4, 6, 7, 8], "09": [0, 7], "58": [0, 7, 10], "gmt": [0, 3, 4, 7, 8], "display_asc": 0, "true": [0, 1, 3, 5, 7, 10, 14], "sam": [0, 4, 7, 8], "com": [0, 1, 3, 7, 14], "first_nam": [0, 7], "imperial_unit": [0, 7], "is_act": [0, 5, 7], "last_nam": [0, 7], "locat": [0, 7, 14], "nb_sport": [0, 7], "nb_workout": [0, 6, 7], "6": [0, 5, 7, 8, 11, 12, 14], "pictur": [0, 7, 8, 10], "record": [0, 2, 7, 8, 10, 12], "id": [0, 3, 4, 5, 6, 7, 8, 9], "9": [0, 4, 7, 12, 14], "record_typ": [0, 4, 7, 8], "AS": [0, 4, 7, 8], "sport_id": [0, 4, 5, 6, 7, 8], "valu": [0, 3, 4, 7, 8, 10, 14], "18": [0, 4, 7, 8, 10], "workout_d": [0, 4, 7, 8], "07": [0, 4, 7, 8], "08": [0, 4, 7, 8], "00": [0, 4, 7, 8], "workout_id": [0, 4, 7, 8], "hvybqybra7wwxpastwr4v2": [0, 4, 7, 8], "10": [0, 1, 4, 7, 8, 14], "fd": [0, 4, 7, 8], "13": [0, 4, 7, 8], "ha": [0, 4, 7, 8, 12, 13], "43": [0, 4, 7, 8, 10], "97": [0, 4, 7, 8], "11": [0, 4, 7, 12], "ld": [0, 4, 7, 8], "01": [0, 4, 6, 7, 8], "12": [0, 4, 7, 8], "m": [0, 4, 6, 7, 8], "sports_list": [0, 7], "4": [0, 5, 6, 7, 8, 14], "timezon": [0, 7, 8, 10, 12], "europ": [0, 7], "pari": [0, 7], "total_dist": [0, 6, 7], "67": [0, 7], "895": [0, 7], "total_dur": [0, 6, 7], "50": [0, 7, 10, 14], "27": [0, 3, 7], "weekm": [0, 6, 7], "header": [0, 1, 3, 4, 5, 6, 7, 8, 9], "author": [0, 1, 3, 4, 5, 6, 7, 8, 9, 14], "oauth": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 14], "2": [0, 1, 3, 4, 5, 6, 7, 8, 9, 12, 14], "0": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14], "bearer": [0, 1, 3, 4, 5, 6, 7, 8], "signatur": [0, 1, 3, 4, 5, 6, 7, 8], "expir": [0, 1, 3, 4, 5, 6, 7, 8, 11], "edit": [0, 10, 12], "write": [0, 1, 3, 5, 7, 8, 9], "updat": [0, 1, 5, 7, 8, 10, 12, 14], "first": [0, 3, 9, 12], "name": [0, 3, 7, 10, 14], "last": [0, 10, 14], "biographi": 0, "birth": [0, 10], "date": [0, 6, 8, 10, 12], "format": [0, 6, 8], "y": [0, 6, 8, 14], "d": [0, 6, 8], "boolean": [0, 1, 3, 7, 11], "displai": [0, 8, 10, 11, 12, 13, 14, 16], "highest": [0, 4, 12], "ascent": [0, 4, 8, 10, 12], "total": [0, 3, 10, 12], "distanc": [0, 4, 8, 10, 12], "imperi": [0, 10, 12], "unit": [0, 10, 14], "time": [0, 6, 8, 10, 12], "zone": 0, "doe": [0, 6, 7, 8, 10], "week": [0, 6, 10, 12], "start": [0, 6, 8, 10, 12, 14, 16], "mondai": [0, 6, 12], "don": 0, "t": [0, 10, 15], "match": [0, 10], "sport": [0, 2, 6, 8, 10, 12, 14], "color": [0, 5, 10, 12], "000000": 0, "stopped_speed_threshold": [0, 5], "user_id": 0, "hexadecim": 0, "when": [0, 1, 10, 11, 12, 14], "ad": [0, 10, 11, 12], "workout": [0, 2, 3, 4, 5, 6, 9, 10, 13, 16], "float": [0, 8], "stop": [0, 10, 12, 14], "speed": [0, 4, 8, 10, 12, 14], "threshold": [0, 10, 12], "us": [0, 3, 7, 8, 9, 10, 12, 13, 14], "gpxpy": [0, 12, 14], "exist": [0, 6, 7, 8, 12, 13, 14], "delet": [0, 3, 7, 8, 10, 11, 12], "reset": [0, 7, 10, 11, 12, 14], "given": [0, 3, 14], "204": [0, 3, 7, 8], "paramet": [0, 3, 5, 6, 7, 8, 10, 12], "No": [0, 3, 7, 8, 10, 13], "multipart": [0, 3, 8], "form": [0, 3, 8], "file": [0, 1, 8, 10, 11, 12, 13, 14], "imag": [0, 7, 8, 10, 12, 14, 16], "extens": [0, 8, 14], "jpg": 0, "png": [0, 8, 14], "gif": 0, "part": [0, 8], "select": [0, 8, 12], "413": [0, 8], "entiti": [0, 8], "too": [0, 8], "larg": [0, 8, 12], "dure": [0, 8], "size": [0, 1, 8, 10, 12], "exce": [0, 8], "0mb": [0, 8], "NO": [0, 3, 7, 8], "handl": [0, 12, 14], "process": [0, 10, 12, 14], "patch": [0, 1, 5, 7, 8], "It": [0, 7, 9, 10, 12, 13, 15], "enabl": [0, 1, 7, 12, 14], "chang": [0, 12, 13, 14], "one": [0, 7, 8, 12], "current": [0, 10], "address": [0, 12, 14], "inform": [0, 10, 13, 14], "anoth": [0, 7, 14], "new": [0, 7, 9, 11, 12, 14], "new_password": 0, "miss": [0, 10], "logout": [0, 10], "blacklist": [0, 11], "out": 0, "access": [0, 3, 9, 10, 14], "revok": [0, 3], "malform": 0, "other": [0, 7, 14], "reason": 0, "config": [1, 10, 14], "admin_contact": 1, "gpx_limit_import": 1, "is_email_sending_en": 1, "is_registration_en": 1, "max_single_file_s": 1, "1048576": 1, "max_us": 1, "max_zip_file_s": 1, "10485760": 1, "map_attribut": [1, 14], "copi": [1, 14], "href": [1, 14], "www": [1, 14], "openstreetmap": [1, 10, 14], "org": [1, 14], "copyright": [1, 14], "contributor": [1, 10, 14], "version": [1, 11, 14], "7": [1, 8, 9, 11, 12, 14], "authent": [1, 2, 3, 4, 5, 7, 8, 9], "integ": [1, 3, 5, 6, 7, 8], "max": [1, 7, 8, 10], "number": [1, 7, 8, 10, 11, 12, 14], "zip": [1, 8, 10, 12], "archiv": [1, 10, 12, 14], "singl": [1, 7, 10, 12, 14], "instanc": [1, 3, 9, 10, 12, 14], "you": [1, 5, 6, 7, 8, 12, 13], "do": [1, 5, 6, 7, 8], "have": [1, 5, 6, 7, 8, 10], "permiss": [1, 5, 6, 7, 8], "ping": 1, "health": 1, "check": [1, 10, 14, 15], "pong": 1, "configur": [2, 9, 10, 12, 14], "oauth2": [2, 9], "statist": 2, "app": [3, 9, 10, 12, 13], "client": [3, 9, 10, 12, 14], "pagin": [3, 7, 8], "5": [3, 5, 6, 7, 8, 11, 12, 14], "page": [3, 7, 8, 10], "fittracke": [3, 9, 11, 12, 14, 16], "parti": [3, 12, 13], "without": [3, 6, 7, 8, 10, 12, 13], "client_descript": 3, "client_id": 3, "o22a27s2abpuoxjbxv3ujdox": 3, "issued_at": 3, "thu": 3, "juli": 3, "2022": 3, "06": [3, 6], "53": [3, 10], "gpx": [3, 8, 10, 12, 13, 14], "import": [3, 10, 14], "redirect_uri": 3, "callback": 3, "websit": 3, "has_next": 3, "has_prev": 3, "queri": [3, 6, 7, 8], "default": [3, 6, 7, 8, 10, 12, 14], "client_secret": 3, "secret": [3, 9, 14], "client_nam": 3, "client_uri": 3, "arrai": 3, "list": [3, 10, 13, 14], "redirect": 3, "descript": [3, 11, 14], "option": [3, 10, 11, 14], "client_client_id": 3, "NOT": [3, 5, 8], "int": [3, 5, 8], "by_id": 3, "all": [3, 4, 5, 6, 7, 14], "associ": 3, "issu": [3, 13, 14], "response_typ": 3, "support": [3, 9, 10, 12, 14, 15], "state": 3, "uniqu": 3, "prevent": 3, "cross": [3, 12], "site": 3, "forgeri": 3, "mandatori": [3, 8, 10, 14], "recommend": [3, 9, 14], "code_challeng": 3, "gener": [3, 10, 12, 14], "from": [3, 6, 8, 10, 12, 13], "verifi": 3, "pkce": [3, 9], "code_challenge_method": 3, "method": [3, 14], "challeng": 3, "s256": 3, "return": [3, 4, 7, 8, 10, 14], "authlib": [3, 9, 14], "librari": [3, 9, 14], "refresh": [3, 10], "access_token": 3, "roehv64thcg28wcewzhrnvlusoduvw8nvnhkcml57": 3, "expires_in": 3, "864000": 3, "refresh_token": 3, "nuv9cy8vqonrqkhtz5pqaq2zw7msh0mornpjr14amswd6f6i": 3, "token_typ": 3, "expires_at": 3, "1658660147": 3, "0667062": 3, "grant_typ": 3, "grant": [3, 9, 14], "authorization_cod": 3, "ar": [3, 4, 8, 9, 10, 11, 12, 13, 14, 16], "code_verifi": 3, "follow": [4, 9, 11, 12, 14, 15], "averag": [4, 8, 10, 12], "farthest": [4, 10, 12], "longest": [4, 10, 12], "durat": [4, 8, 10, 12], "maximum": [4, 10, 12], "non": [5, 13], "is_active_for_us": 5, "label": [5, 10], "cycl": [5, 10, 12], "transport": [5, 10, 12], "hike": [5, 10, 12], "mountain": [5, 12], "bike": [5, 8, 10, 12], "run": [5, 9, 10, 12, 14], "walk": [5, 10, 12], "has_workout": 5, "stat": [6, 10], "user_nam": [6, 7], "by_tim": 6, "2018": [6, 8], "2017": [6, 8], "average_spe": 6, "48": 6, "total_asc": 6, "203": 6, "156": [6, 10], "15": [6, 8], "282": 6, "12341": 6, "16": [6, 8], "99": [6, 10], "150": 6, "178": [6, 10], "47": [6, 8, 10], "9960": 6, "95": [6, 10], "46": [6, 10], "78": 6, "613": 6, "1267": 6, "end": [6, 8], "frame": 6, "sundai": [6, 8, 12], "month": [6, 10, 12], "year": [6, 12], "by_sport": 6, "uploads_dir_s": 6, "1000": 6, "regardless": 7, "right": [7, 9, 10, 11, 12, 14], "some": [7, 8, 9, 10, 12, 13, 14], "order_bi": 7, "workouts_count": 7, "par_pag": 7, "is_admin": 7, "sat": 7, "20": 7, "03": [7, 8], "fr": [7, 14], "per_pag": [7, 8], "per": [7, 8, 10, 14], "q": 7, "sort": [7, 8], "criteria": 7, "order": [7, 8, 10], "asc": 7, "detail": [7, 10, 14, 16], "jpeg": 7, "add": [7, 10, 11, 12, 13], "remov": [7, 10, 11, 12], "modifi": [7, 10, 11, 14], "new_email": 7, "reset_password": 7, "differ": [7, 10, 12], "than": [7, 10, 11], "curent": 7, "A": [7, 10, 11, 12, 14, 15], "own": [7, 12, 13], "except": [7, 14, 15], "he": 7, "": [7, 8, 10, 14], "john_do": 7, "your": [7, 12, 13, 14], "02": 8, "31": 8, "least": 8, "ave_spe": 8, "bound": 8, "creation_d": 8, "51": 8, "descent": [8, 10, 12], "17": [8, 14], "04": 8, "kjxavsturjvoah2wvcegef": 8, "map": [8, 10, 12, 13, 16], "max_alt": 8, "max_spe": 8, "min_alt": 8, "modification_d": 8, "move": [8, 10], "next_workout": 8, "note": [8, 10, 12, 14], "paus": [8, 10], "previous_workout": 8, "mon": 8, "jan": 8, "segment": [8, 10, 12], "titl": 8, "weather_end": 8, "weather_start": 8, "with_gpx": 8, "100": [8, 10, 12], "distance_from": 8, "minim": [8, 9], "distance_to": 8, "maxim": 8, "duration_from": 8, "h": [8, 12], "duration_to": 8, "ave_speed_from": 8, "ave_speed_to": 8, "max_speed_from": 8, "max_speed_to": 8, "desc": 8, "workout_short_id": 8, "57": [8, 10], "45": 8, "22": 8, "morn": 8, "short": 8, "leaflet": [8, 14], "chart_data": 8, "chart": [8, 10, 12, 14], "j": [8, 10, 14], "elev": [8, 10, 12, 14], "279": 8, "latitud": 8, "5078118": 8, "longitud": 8, "1232004": 8, "63": 8, "fri": 8, "44": [8, 10], "7380": 8, "280": 8, "5079733": 8, "1234538": 8, "39": 8, "segment_id": 8, "rechart": 8, "map_id": 8, "fa33f4d996844a5c73ecd1ae24456ab8": 8, "1563529507772": 8, "map_til": 8, "z": [8, 14], "x": [8, 9, 14], "tile": [8, 10, 12], "c": [8, 14], "4109": 8, "2930": 8, "subdomain": [8, 10, 14], "zoom": 8, "index": 8, "along": 8, "axi": 8, "download": [8, 10, 12, 14], "xml": 8, "201": [8, 10], "no_gpx": 8, "uuid": [8, 10], "km": [8, 12], "second": 8, "rest": 9, "see": [9, 10, 12, 13, 14, 15], "document": [9, 10, 13, 14], "whose": 9, "most": 9, "To": [9, 10, 14], "interact": 9, "set": [9, 10, 11, 12, 14, 15], "tab": 9, "flow": 9, "exchang": 9, "sent": [9, 10, 12, 14], "bodi": 9, "better": [9, 10], "secur": 9, "relat": [9, 12, 14], "implement": 9, "behind": 9, "proxi": [9, 14], "forward": [9, 14], "proto": [9, 14], "For": [9, 12, 14], "nginx": [9, 12, 14], "proxy_set_head": [9, 14], "scheme": [9, 14], "resourc": 9, "about": [9, 14], "simplifi": [9, 10], "aaron": 9, "parecki": 9, "oauthlib": 9, "python": [9, 10, 14], "session": 9, "pr": 10, "241": 10, "strength": 10, "estim": 10, "packag": [10, 14], "german": 10, "239": 10, "weblat": 10, "thank": 10, "qwerty287": 10, "cb9d02f": 10, "88": 10, "231": 10, "236": 10, "rate": 10, "limit": [10, 12], "232": 10, "hidden": [10, 12], "237": 10, "212": 10, "host": [10, 14], "lavoi": 10, "contain": [10, 12, 14], "databas": [10, 12, 14, 15], "migrat": [10, 11, 14], "upgrad": 10, "230": 10, "problem": 10, "225": 10, "grammar": 10, "skylan0916": 10, "In": [10, 12], "execut": 10, "lower": 10, "v0": [10, 14], "postgr": [10, 15], "213": 10, "measur": 10, "should": [10, 14], "ft": 10, "mi": 10, "223": 10, "icon": [10, 14], "167": 10, "dashboard": 10, "162": 10, "fmstrat": 10, "210": 10, "could": 10, "environ": [10, 11, 15], "variabl": [10, 15], "staticmap_subdomain": [10, 14], "209": 10, "incorrect": 10, "track": [10, 13], "multipl": 10, "gorgobacka": 10, "now": [10, 11, 12, 14], "And": 10, "detect": 10, "browser": 10, "208": 10, "card": 10, "html": 10, "attribut": [10, 14], "197": 10, "196": 10, "manag": [10, 11, 14], "tool": [10, 14], "190": 10, "were": 10, "193": 10, "192": 10, "instead": [10, 12], "191": 10, "layout": 10, "includ": 10, "195": 10, "affect": 10, "previous": 10, "cc4287e": 10, "docker": 10, "env": [10, 14], "offset": 10, "depend": [10, 14], "refacto": 10, "befor": [10, 14], "introduc": 10, "possibl": [10, 12, 13, 14], "smtp": [10, 14], "reduc": 10, "pre": 10, "requisit": 10, "cli": [10, 11, 12, 14], "180": 10, "cannot": [10, 12], "tl": [10, 14], "177": 10, "posit": [10, 12], "small": 10, "screen": [10, 12], "175": 10, "173": 10, "link": [10, 14], "171": 10, "correctli": 10, "need": [10, 14], "155": 10, "106": 10, "169": 10, "161": 10, "160": 10, "sever": [10, 12, 13, 14], "danielsiersleben": 10, "report": 10, "initi": [10, 14], "command": [10, 12, 13, 14], "149": 10, "initialis": [10, 14], "152": 10, "autoescap": 10, "jinja": 10, "templat": 10, "151": 10, "sanit": 10, "input": 10, "serv": [10, 14], "dramatiq": [10, 14], "warn": [10, 12], "launch": 10, "worker": [10, 14], "w": 10, "script": 10, "entrypoint": 10, "drop": 10, "avoid": 10, "product": 10, "dotenv": 10, "146": 10, "filter": [10, 12], "145": 10, "model": 10, "140": 10, "fullscreen": 10, "control": [10, 12], "138": 10, "135": 10, "finish": 10, "marker": 10, "134": 10, "wind": [10, 12], "direct": [10, 12], "877fa0f": 10, "calendar": [10, 12], "resolut": 10, "131": 10, "129": 10, "127": [10, 14], "pars": [10, 14], "legitim": 10, "uri": 10, "localhost": [10, 14], "25": [10, 14], "123": 10, "121": 10, "snowsho": [10, 12], "116": 10, "ui": 10, "button": 10, "graph": 10, "115": 10, "91": 10, "min": 10, "altitud": 10, "90": 10, "seem": 10, "104": 10, "switch": 10, "agplv3": 10, "licens": [10, 13, 14], "101": 10, "full": [10, 12], "develop": [10, 11, 13], "98": 10, "109": 10, "slow": 10, "movement": 10, "84": 10, "93": 10, "paf38": 10, "83": 10, "static": [10, 12, 14], "keep": [10, 13, 14], "default_staticmap": [10, 14], "81": 10, "remain": 10, "textarea": 10, "82": 10, "dai": [10, 11, 12, 14], "80": [10, 14], "save": [10, 12], "79": 10, "fail": [10, 16], "make": [10, 14], "rebuild": 10, "75": 10, "same": 10, "javascript": [10, 14], "due": 10, "sqlalchemi": [10, 14, 15], "engin": [10, 14, 15], "longer": [10, 15], "database_url": [10, 14], "postgresql": [10, 14, 15], "72": 10, "exceed": 10, "71": 10, "greater": 10, "70": 10, "less": 10, "upload": [10, 11, 12, 14], "66": 10, "64": 10, "shown": [10, 16], "62": 10, "refactor": 10, "evalu": [10, 14], "purpos": [10, 14], "standard": [10, 14], "term": [10, 14], "directori": [10, 12, 14], "also": [10, 11, 13, 14], "59": 10, "major": 10, "instal": [10, 13], "becom": 10, "more": [10, 11, 12, 13, 14], "easi": 10, "been": [10, 13], "renam": 10, "layer": [10, 14], "replac": [10, 14], "thunderforest": [10, 14], "outdoor": [10, 12, 13, 14], "54": 10, "redi": [10, 14], "complet": 10, "side": 10, "4c3fc34": 10, "empti": [10, 11, 14], "34614d5": 10, "spinner": 10, "load": [10, 15], "b862a77": 10, "2e1ee2c": 10, "interceptor": 10, "rout": [10, 14], "definit": 10, "down": 10, "weekend": 10, "background": 10, "40": 10, "local": [10, 13, 14], "i18n": 10, "41": 10, "show": [10, 11, 14], "point": [10, 14], "mous": 10, "over": 10, "choos": [10, 12], "36": 10, "33": 10, "37": 10, "34": 10, "weather": [10, 12, 14], "anymor": 10, "poetri": [10, 14], "pipenv": 10, "calcul": 10, "28": 10, "26": 10, "tooltip": [10, 12], "creation": [10, 12], "montain": 10, "even": [10, 12], "enter": [10, 12], "darkski": [10, 12], "kei": [10, 12, 14], "farest": 10, "search": 10, "owner": [10, 12], "view": [10, 12, 14], "usag": [11, 14], "arg": [11, 14], "help": [11, 14], "exit": [11, 14], "deprec": 11, "next": [11, 12], "fittrackee_set_admin": 11, "fittrackee_upgrade_db": 11, "appli": 11, "store": [12, 13], "kind": 12, "encrypt": 12, "With": [12, 14], "open": [12, 13, 14], "street": [12, 13], "electr": 12, "row": 12, "ski": 12, "alpin": 12, "countri": 12, "trail": 12, "overridden": 12, "which": 12, "up": [12, 13], "metric": 12, "system": [12, 14], "arrow": 12, "indic": 12, "come": 12, "period": 12, "mai": [12, 13, 14], "origin": 12, "dropdown": 12, "On": [12, 14], "case": [12, 14], "line": [12, 13, 14], "between": 12, "hide": 12, "overrid": 12, "appear": 12, "still": [12, 13, 14], "third": [12, 13], "defin": 12, "rais": 12, "necessari": [12, 14], "like": [12, 14], "lock": 12, "via": 12, "mobil": 13, "yet": 13, "export": [13, 14], "them": 13, "android": 13, "exhaust": 13, "runner": 13, "gpl": 13, "v3": 13, "forrunn": 13, "opentrack": 13, "apach": 13, "fitotrack": 13, "under": [13, 14], "heavi": [13, 14], "featur": [13, 14], "unstabl": [13, 14], "interfac": [13, 14], "troubleshoot": 13, "written": 14, "typescript": 14, "flask": 14, "staticmap": 14, "coordin": 14, "forecast": 14, "io": 14, "fetch": 14, "dark": 14, "sky": 14, "former": 14, "task": 14, "queue": 14, "vue3": 14, "vuex": 14, "logo": 14, "made": 14, "freepik": 14, "flaticon": 14, "fork": 14, "awesom": 14, "yarn": 14, "compos": 14, "step": 14, "describ": 14, "linux": 14, "test": 14, "debian": 14, "arch": 14, "o": 14, "encount": 14, "adapt": 14, "sinc": 14, "makefil": 14, "custom": 14, "thei": 14, "flask_app": 14, "modul": 14, "pwd": 14, "__main__": 14, "py": 14, "els": 14, "port": 14, "5000": 14, "app_set": 14, "productionconfig": 14, "app_secret_kei": 14, "strong": 14, "jwt": 14, "app_work": 14, "spawn": 14, "gunicorn": [14, 15], "app_log": 14, "path": [14, 15], "upload_fold": [14, 15], "absolut": [14, 15], "where": 14, "folder": 14, "application_directori": 14, "virtualenv": 14, "5432": 14, "begin": 14, "database_disable_pool": 14, "pool": 14, "entri": 14, "directli": 14, "ui_url": 14, "email_url": [14, 15], "sender_email": 14, "sender": 14, "redis_url": 14, "workers_process": 14, "api_rate_limit": 14, "300": 14, "minut": 14, "tile_server_url": 14, "b": 14, "osm": 14, "franc": 14, "target": 14, "_blank": 14, "rel": 14, "noopen": 14, "noreferr": 14, "komoot": 14, "de": 14, "otherwis": 14, "insensit": 14, "weather_api_kei": 14, "weather_api": 14, "vue_app_api_url": 14, "unencrypt": 14, "ssl": 14, "465": 14, "starttl": 14, "587": 14, "office365": 14, "work": 14, "omit": 14, "old": 14, "adress": 14, "apikei": 14, "xxxx": 14, "servic": 14, "expect": 14, "osmfr": 14, "fond": 14, "cart": 14, "par": 14, "mention": 14, "legal": 14, "nofollow": 14, "sou": 14, "nbsp": 14, "creativecommon": 14, "sa": 14, "licenc": 14, "cc": 14, "BY": 14, "chosen": 14, "randomli": 14, "base": 14, "ip": 14, "fix": 14, "window": 14, "strategi": 14, "subject": 14, "asset": 14, "notat": 14, "separ": 14, "comma": 14, "hour": 14, "mainten": 14, "diagnost": 14, "util": 14, "commmand": 14, "clear": 14, "specif": 14, "enumer": 14, "wai": 14, "pip": 14, "WITH": 14, "privileg": 14, "ON": 14, "TO": 14, "nano": 14, "schema": 14, "ftcli": 14, "db": 14, "fittrackee_work": 14, "systemd": 14, "3000": 14, "archlinux": 14, "yai": 14, "project": 14, "clone": 14, "repo": 14, "git": 14, "github": 14, "samr1": 14, "cd": 14, "vue": 14, "releas": 14, "wget": 14, "tar": 14, "gz": 14, "xzf": 14, "mv": 14, "sql": 14, "backup": 14, "pg_dump": 14, "u": 14, "changelog": 14, "restart": 14, "pull": 14, "repositori": 14, "overwrit": 14, "cp": 14, "r": 14, "There": 14, "One": 14, "pass": 14, "distribut": 14, "network": 14, "startlimitintervalsec": 14, "simpl": 14, "alwai": 14, "restartsec": 14, "standardoutput": 14, "syslog": 14, "standarderror": 14, "syslogidentifi": 14, "workingdirectori": 14, "home": 14, "execstart": 14, "venv": 14, "bin": 14, "create_app": 14, "logfil": 14, "wantedbi": 14, "multi": 14, "OF": 14, "listen": 14, "443": 14, "http2": 14, "server_nam": 14, "ssl_certif": 14, "fullchain": 14, "pem": 14, "ssl_certificate_kei": 14, "privkei": 14, "proxy_pass": 14, "proxy_redirect": 14, "real": 14, "remote_addr": 14, "proxy_add_x_forwarded_for": 14, "301": 14, "request_uri": 14, "larger": 14, "client_max_body_s": 14, "build": 14, "init": 14, "8025": 14, "mailhog": 14, "shell": 14, "insid": 14, "addit": 14, "fittrackee_cli": 14, "lint": 14, "exc": 15, "nosuchmoduleerror": 15, "plugin": 15, "dialect": 15, "invalidemailurlschem": 15, "todo": 17}, "objects": {"": [[0, 0, 1, "post--api-auth-account-confirm", "/api/auth/account/confirm"], [0, 0, 1, "post--api-auth-account-resend-confirmation", "/api/auth/account/resend-confirmation"], [0, 0, 1, "post--api-auth-email-update", "/api/auth/email/update"], [0, 0, 1, "post--api-auth-login", "/api/auth/login"], [0, 0, 1, "post--api-auth-logout", "/api/auth/logout"], [0, 0, 1, "post--api-auth-password-reset-request", "/api/auth/password/reset-request"], [0, 0, 1, "post--api-auth-password-update", "/api/auth/password/update"], [0, 1, 1, "delete--api-auth-picture", "/api/auth/picture"], [0, 0, 1, "post--api-auth-picture", "/api/auth/picture"], [0, 2, 1, "get--api-auth-profile", "/api/auth/profile"], [0, 0, 1, "post--api-auth-profile-edit", "/api/auth/profile/edit"], [0, 3, 1, "patch--api-auth-profile-edit-account", "/api/auth/profile/edit/account"], [0, 0, 1, "post--api-auth-profile-edit-preferences", "/api/auth/profile/edit/preferences"], [0, 0, 1, "post--api-auth-profile-edit-sports", "/api/auth/profile/edit/sports"], [0, 1, 1, "delete--api-auth-profile-reset-sports-(sport_id)", "/api/auth/profile/reset/sports/(sport_id)"], [0, 0, 1, "post--api-auth-register", "/api/auth/register"], [1, 2, 1, "get--api-config", "/api/config"], [1, 3, 1, "patch--api-config", "/api/config"], [3, 2, 1, "get--api-oauth-apps", "/api/oauth/apps"], [3, 0, 1, "post--api-oauth-apps", "/api/oauth/apps"], [3, 1, 1, "delete--api-oauth-apps-(int-client_id)", "/api/oauth/apps/(int:client_id)"], [3, 2, 1, "get--api-oauth-apps-(int-client_id)-by_id", "/api/oauth/apps/(int:client_id)/by_id"], [3, 0, 1, "post--api-oauth-apps-(int-client_id)-revoke", "/api/oauth/apps/(int:client_id)/revoke"], [3, 2, 1, "get--api-oauth-apps-(string-client_client_id)", "/api/oauth/apps/(string:client_client_id)"], [3, 0, 1, "post--api-oauth-authorize", "/api/oauth/authorize"], [3, 0, 1, "post--api-oauth-revoke", "/api/oauth/revoke"], [3, 0, 1, "post--api-oauth-token", "/api/oauth/token"], [1, 2, 1, "get--api-ping", "/api/ping"], [4, 2, 1, "get--api-records", "/api/records"], [5, 2, 1, "get--api-sports", "/api/sports"], [5, 2, 1, "get--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [5, 3, 1, "patch--api-sports-(int-sport_id)", "/api/sports/(int:sport_id)"], [6, 2, 1, "get--api-stats-(user_name)-by_sport", "/api/stats/(user_name)/by_sport"], [6, 2, 1, "get--api-stats-(user_name)-by_time", "/api/stats/(user_name)/by_time"], [6, 2, 1, "get--api-stats-all", "/api/stats/all"], [7, 2, 1, "get--api-users", "/api/users"], [7, 1, 1, "delete--api-users-(user_name)", "/api/users/(user_name)"], [7, 2, 1, "get--api-users-(user_name)", "/api/users/(user_name)"], [7, 3, 1, "patch--api-users-(user_name)", "/api/users/(user_name)"], [7, 2, 1, "get--api-users-(user_name)-picture", "/api/users/(user_name)/picture"], [8, 2, 1, "get--api-workouts", "/api/workouts"], [8, 0, 1, "post--api-workouts", "/api/workouts"], [8, 1, 1, "delete--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 3, 1, "patch--api-workouts-(string-workout_short_id)", "/api/workouts/(string:workout_short_id)"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data", "/api/workouts/(string:workout_short_id)/chart_data"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/chart_data/segment/(int:segment_id)"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx", "/api/workouts/(string:workout_short_id)/gpx"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-download", "/api/workouts/(string:workout_short_id)/gpx/download"], [8, 2, 1, "get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)", "/api/workouts/(string:workout_short_id)/gpx/segment/(int:segment_id)"], [8, 2, 1, "get--api-workouts-map-(map_id)", "/api/workouts/map/(map_id)"], [8, 0, 1, "post--api-workouts-no_gpx", "/api/workouts/no_gpx"], [14, 4, 1, "envvar-API_RATE_LIMITS", "API_RATE_LIMITS \ud83c\udd95"], [14, 4, 1, "-", "APP_LOG"], [14, 4, 1, "-", "APP_SECRET_KEY"], [14, 4, 1, "-", "APP_SETTINGS"], [14, 4, 1, "-", "APP_WORKERS"], [14, 4, 1, "-", "DATABASE_DISABLE_POOLING"], [14, 4, 1, "-", "DATABASE_URL"], [14, 4, 1, "-", "DEFAULT_STATICMAP"], [14, 4, 1, "-", "EMAIL_URL"], [14, 4, 1, "-", "FLASK_APP"], [14, 4, 1, "-", "HOST"], [14, 4, 1, "-", "MAP_ATTRIBUTION"], [14, 4, 1, "-", "PORT"], [14, 4, 1, "-", "REDIS_URL"], [14, 4, 1, "-", "SENDER_EMAIL"], [14, 4, 1, "-", "STATICMAP_SUBDOMAINS"], [14, 4, 1, "-", "TILE_SERVER_URL"], [14, 4, 1, "-", "UI_URL"], [14, 4, 1, "-", "UPLOAD_FOLDER"], [14, 4, 1, "-", "VUE_APP_API_URL"], [14, 4, 1, "-", "WEATHER_API_KEY"], [14, 4, 1, "-", "WORKERS_PROCESSES"]], "/api/workouts/map_tile/(s)/(z)/(x)/(y)": [[8, 2, 1, "get--api-workouts-map_tile-(s)-(z)-(x)-(y).png", "png"]]}, "objtypes": {"0": "http:post", "1": "http:delete", "2": "http:get", "3": "http:patch", "4": "std:envvar"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["http", "delete", "HTTP delete"], "2": ["http", "get", "HTTP get"], "3": ["http", "patch", "HTTP patch"], "4": ["std", "envvar", "environment variable"]}, "titleterms": {"authent": 0, "configur": 1, "api": [2, 14], "document": 2, "endpoint": 2, "oauth2": [3, 11], "record": 4, "sport": 5, "statist": [6, 10, 12], "user": [7, 11, 17], "workout": [8, 12, 15], "third": 9, "parti": 9, "applic": 9, "chang": 10, "log": 10, "version": 10, "0": 10, "7": 10, "1": 10, "2022": 10, "09": 10, "21": 10, "bug": 10, "fix": 10, "translat": [10, 12], "19": 10, "featur": [10, 12], "enhanc": 10, "6": 10, "12": 10, "14": 10, "issu": 10, "close": 10, "pull": 10, "request": 10, "misc": 10, "11": 10, "07": 10, "27": 10, "10": 10, "13": 10, "9": 10, "03": 10, "8": 10, "06": 10, "22": 10, "05": 10, "29": 10, "5": 10, "04": 10, "24": 10, "4": 10, "23": 10, "3": 10, "2": 10, "02": 10, "secur": 10, "01": 10, "new": 10, "2021": 10, "30": 10, "16": 10, "17": 10, "31": 10, "2020": 10, "fittracke": [10, 13, 15], "pypi": [10, 14], "administr": [10, 12, 15], "15": 10, "improv": 10, "minor": 10, "avail": 10, "french": 10, "2019": 10, "first": 10, "releas": 10, "2018": 10, "command": 11, "line": 11, "interfac": 11, "databas": 11, "ftcli": 11, "db": 11, "upgrad": [11, 14], "drop": 11, "clean": 11, "clean_token": 11, "updat": 11, "account": 12, "prefer": 12, "screenshot": 12, "dashboard": 12, "detail": [12, 15], "list": 12, "tabl": 13, "content": 13, "instal": 14, "prerequisit": 14, "environ": 14, "variabl": 14, "email": 14, "map": [14, 15], "tile": 14, "server": 14, "rate": 14, "limit": 14, "from": 14, "sourc": 14, "dev": 14, "product": 14, "prod": 14, "deploy": 14, "docker": 14, "develop": 14, "fail": 15, "start": 15, "imag": 15, "ar": 15, "displai": 15, "i": 15, "shown": 15, "troubleshoot": 16}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file diff --git a/docs/troubleshooting/administrator.html b/docs/troubleshooting/administrator.html index 02d47324..238b3e69 100644 --- a/docs/troubleshooting/administrator.html +++ b/docs/troubleshooting/administrator.html @@ -5,7 +5,7 @@ - Administrator — FitTrackee 0.7.0 + <title>Administrator — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1
                                                                              diff --git a/docs/troubleshooting/index.html b/docs/troubleshooting/index.html index a1e93d21..c42fc56f 100644 --- a/docs/troubleshooting/index.html +++ b/docs/troubleshooting/index.html @@ -5,7 +5,7 @@ - Troubleshooting — FitTrackee 0.7.0 + <title>Troubleshooting — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1
                                                                              diff --git a/docs/troubleshooting/user.html b/docs/troubleshooting/user.html index 36842b30..ceb65344 100644 --- a/docs/troubleshooting/user.html +++ b/docs/troubleshooting/user.html @@ -5,7 +5,7 @@ - User — FitTrackee 0.7.0 + <title>User — FitTrackee 0.7.1 documentation @@ -41,7 +41,7 @@ FitTrackee - 0.7.0 + 0.7.1
                                                                              diff --git a/docsrc/source/_images/fittrackee_screenshot-01.png b/docsrc/source/_images/fittrackee_screenshot-01.png index 83199b9d62029f6f443e40818e67cd96785eabc1..a8f783e4c9c5314d8d8829f8863b4fbf4d8666fa 100644 GIT binary patch delta 23644 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 Sv#BHqIP@=@=$2~#5&j>?rJYCs delta 23726 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 A5C8xG diff --git a/docsrc/source/_images/fittrackee_screenshot-02.png b/docsrc/source/_images/fittrackee_screenshot-02.png index 93ddd79139b11f2c22045dadd6005aa05a9e8f2d..62e01438b7d714f8d78079b0e7252c3129748cf2 100644 GIT binary patch delta 18279 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%0AXY-?{~L@zp342=YP^ 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 Y1Bre?V1XQ?q5uE@07*qoM6N<$g7L?=NB{r; delta 18381 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 Y0FEnX%3j2KIRF3v07*qoM6N<$f^dw#8~^|S diff --git a/docsrc/source/_images/fittrackee_screenshot-03.png b/docsrc/source/_images/fittrackee_screenshot-03.png index 5a8406d771d6166a07b8ffee4722f36ff88d3258..317069804aa10a3df1d2b76222452a631d2043e3 100644 GIT binary patch delta 10801 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⪻$EnM)T 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 Wt+)Bb^dT<<*kmLW#H&RO0{*5M_uS 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%0AoAQp{Xav2t4YG9WVibB*w1sX$ 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 VVY0V}|9Y!ISzhBs`SX_{{~w1|W{Cg* delta 16732 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 diff --git a/docsrc/source/_images/fittrackee_screenshot-05.png b/docsrc/source/_images/fittrackee_screenshot-05.png index dd0f171c1da28d26c7dc0ae7743779ce8babfd06..eae8064296aef4739def090cbafd6b5d75ed3cc1 100644 GIT binary patch delta 13476 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 delta 13560 zcmYj%by!pH8#h>3h>b|8l#Qp*T^%HrVV*fQduUmFIpwE^eOA zR|1gFov%2*aC70{ctIRawF;bT;(j}g`5^sD@jdCeri4c42KBZH#w%zKn%SpcOcblR z7k}klh}_(k4l8_OdOI)u3+}%4u(eiBsg)x+kHH+QnEpehg@o0^vrFLRjaRfMMe3bg z>Fm%Fx_lE*uEWz5^V#1*+i+;!-!ZiLGo$iTSjIoA>uLAn6KMu{_l?H)g1y$&9VhIM*)%{5N?_Yk23HA|43(C7>*uRBIy zcPE_v#P-}7>3L_VGruZlv!5odoj5jd;or~iKh|YYS14&5yp;j1sd4W)9_LEl;f6g; zI{n;97C687=)2F_FpANUh>6X|C4!|zc|XCWZNm+ z6)mtRmTaq6bYD-(I@nN|VB(SN{%KSU8fcRD;o-UDDHB{-H8HQIpv+_F(6ftWl0>tb zppm7X31oxfC;A!P%gFPpi*fz$Vzi+-X|8FAZckHJxNrX9@X`jSn*5U0Z_xa#pfLo_ z+a?Im$sjmY|DMTHW#$BA{4Oe1#1~&bBl7W==i!f+&h%*f^!p(dC_8ngrgQJ{MCP2F??<-R zT;|)A$atof_v)A0sCV-hDjSdY7HK~Yi(05$=P3tl&^JwGq2nT%DFU(iij`=^kVd1-tV+M}xyy~Bsdts$xSZ>WU*uC< zNb>I<@m*^*a(&x9V(GMT(;~(2$pq!(`?SNG6y&)M&Al-L9p2jEa#;8E?X@Akorh)F zXJb;<0Cmn?^czhNPUE}Rid}9!GMJJQmbN0|TCq92>?h;+2T$)|q5LTMnwca`(bZ!o zN?|XmX=kQNGr}gF-=%KZo;i^En11sT-dosq@b9DYw-6(oONS^oA__%rolgSKZx*z9*_IJW`x0n_NCA96Na(XcwKGfZVGk zQst9FCuTRHH zM(?J!-Tmc*>AshL*u?4agg@PUr*r7Y+q~SlBVVst{}e_z@OU43HxEfK+RdJs&PLX%Em3CxnyFZ3rOQh zn<(nsuU8806(Yy~plCFe;kAdR`NTSj$+1%CkxU;E-&t~{NRKFd^FBOw-wNw>NRNa35 z4PkuvsG0bc!-2P52f4S4O%HOn6ulFDes9bJZ*1K2YZ8S7YuJm%-bpu9W2SGI1Ff zx8plGqI2tRHVmJJ8J{>`bzb|vL9^$4FY&x88P*UW{DY02lbPxyq7yh0@yN%@Y@|KA9^#89-01ch|4`aN}7V+-w~& zdm#`Q)4dzdq4Vmm$csq)nDb%2xUjbiqZgyEssDLNx_0-Iv#0AU-yO*S3&CHU75R%2 zO79+3ntZzVI{CcTm&_W@ShXi!xuHeJ1>(Ky>uf8Y-A{lW6t8KB%kDY&{cL@@Ejrx& zu~Nu|KTdz5{0pC$F^;Ny;CeZAw!76@;eh7E@pq=cVa>rqq*zDFrSxl(fisT+W;erT z2|V~WmfXsxa8;2PZy)K7lYTfNN(5oSsHWj{3*@89HLcEzhKGmVl)6QW z3VZxcD7cyETvTKKtS2q9HbtZdqPF-Z=3TScF*iXEyP&9-rV6#|_L7QMA&;((UFMJ+ z{ibAt<-GRj&(X7M7jpjE-aC|~AMGnbTfdU^`pzLY;7pZ$cd`@h+s;oZ&SZIUtpNwM zey#oh-SIptd050qGv6DDf4NB$u5aHN6wVgpTP>BX_C}xYvfe$me*T+Gg0;Qa9X;L; zWeBGnxe#N4C&tkZpSS#q2ZBthlw_4O)%{f_`h7QZGai{z2Ye3;anJSFbV_JT^N%vgfg7n3%ZwI|3-IIlq-vD=`-!(`b;8{M#a;W0ekU5!b zyztsk9(Vn`%x-p2-!Ml*8i)Lor+1MKhoTc(PaHLn@44Mc_@ag~6NB`eSKxa+W@OND zut>To{@9t)f6M{vY4h(sy1&z^Apvvei@?g`$LvX_A1Ham>il%-1@U;poPsglvG_ylJzauhwRPt5-ku(en z1MWr^zscbA`Y8CzNT;J^2IBYh+Uk+b<5OCLM8|ctZ(6EU$EzJKoZ<-=ys(?ST73bIKy>HVhvb(8uXsJwU8U1P@1?)x zr2NDkT~aj}sYd?+OnAF4{(Eto^S!CxMTOe)9U^g#!dsuR1~%SDj!I7+IrBiJJgf1T z+y=h($md7ioRZ&yj2o7d51)4_d#jaZ62UXwFrK9w#ExDS=~3k(H`eA1qC>wj_)DNBX<$IBc>w&vWB`VUG?96wq4V z-K6No`>)<%`d?B8=*!(OJaety6^PUbvu za9lTYQxZR=fMVarV00=7?D7A8Ukn?xsZJ@rVNUS?&ThV2j0pKE77-e(t%}c#*v#vy z^fR<7i*~;JR#NrzowHxGX5`EG(+)bH3}}XJ^T^%!Af_79^|YAYd1!o@WXf50daFmd zNXH)OT=UE{>-D8VeWKDaA%)z3cbli?|BFThY-iP;62Q8N149E?jqcl@iPtVhM!*>;YdqjIM@N}mlXa>p zxwCd*@~FrgJ_Bga5c!_`G5k7$M;N~PR1?RX$jP?ay9P?i46{kO|dpWI|D z;BX&$Ra-(x{@?4Lv9>6?@LAjEqj*J;2kOek0#`2{_mZxYm%1#ue#qDCv2r)v)z(7I z$JYX9KGGxsI9x9*llIS=zjF4;&$IWA#y!4&%=yXt{^Izj*X}cYdDt&!dAr0COAbAV zIc)anj^FMdV6D+cQ3ueT7k~Tr7WtzWaFVmt?$cxR@~Y#wcP7Ux*FSn53@L>DPU5Du z{zoCsu<`G|5c-MqmpH*sY$)nvSNs8`J%;95_=D-B!$0b7;nT-${Dlj7ZlyQqO>uBV zet-U|il8+$IXpFvbxq&f<5<4sH~P*vtB`}^%8nc8{hk;as5_!1PrW)I>g4=X*+Et1 zri_B3!c!R~MMq^B2PGG${iCO<4leS_5C!K%{OPYJ!2^i0nxd+js**xt#F^(OhfxdtTQ72|KDiovx(=?UnK009=cukPbBfkO@*W9xR0H68;SQq-?~}bY&aGI zb?U6v6RiyT??T39^YiARMOMY;W+m2MHF`E>f{pJ5Gg6Z;-4;oBAAiqD|6a<{Tqcz{ z`*Wt#A{@0Isx2hsx58|wSjUuW%p`lDIFE2D0}jeEFk6??9Nn%bS&Ke<864fyp8#^&Xz0YPlaXp3}uUz zR5a$DBSL+IWtVQavc{Mr0*G!1ywP`ZFK*VKycer+g_DD0n|MZ&K@6E)jz_u%)B8NB<`=AarjuTskYT4jJuz2r?!9(cUyH2&l(h#8+yJ>QJRZES+ODIHR zfI%Jii1HfzwP_4Qnz^;ec#8+>Ztn#%mgS6ge$dC`W_(;He$ufcj@m%$k4<0!YgPX& z{@^$J={K{-I5_?Qj|We$A!_Yge`szvv2Az9bI4I}HUzK9_6r>M&2S&o-2Lgl5Ju7B zQw)E)NGQojNOJ1%QmqKamX=CePW+aj>uebm7-ht#$fP@uERE^QlmOs2>=x$dOzPll zf*I_xrt3;mRMuKJY-g3i_|?@h_wC?T&(AL5xi7e2GU@hR)5nkFh3p7;Ib$sqk0AG) zs;Vka4AX%@Ijn=fK%jSRLlXza?n5r`M=(~{v{BnnSbOQ3zJwaL z{!+K$9oD}gxbw2nG8H_%>IcF)MLSH`a9TIJZyUM_PMtC4l*_$QNDWW7@Th*0FVAcm zXUyhgqgMFKa}O@G}G}?%KYN2+P6SMJm+KDNn3QaJ`&{jmj5T-jk0!e&|I(mr@ zxCfgl!I*zdiUZ$n?-es913LCF3o%S;e>B3Zwn33p@J_Y>xRppAQ3AuCNp9EAA;D+ZNSUyUNQ z1a>8>l32PqeY*bhd12!tkiBgYG(Ziivz}2`@qC0`e4$R>WaG?Lr{dq9;3Z+Wysg~@ z+l@0bfvpzhh{)#TqCuBDhqfI?*W*aAEa=7Q^R*#DeKJ8hsa?XMsRhyeq_uL2ur(zZ$Z6-_r{wG^)i_hu*7Xw>4z3I#KIg98i`CaAy9VgA0;*cj3Rax%FYV}$)? z?EzcRpWKV5%3)I={$%Gi+DP9jUR%t|rp|h0{SXJon%Cbby_S)kJ@VV3GEHxyMkX&nH);vIiv}Gr958j^Kiw3@P~X<(iHb-MGl6Fwh&bYm8Yg z#^ybU9?0BdV$H)`X1?6V>=ZQm(cpMvHkUV89m^YuaND>Bggd!X+mig*Mh^eS!6$z; zfqB-#%xrFx%E|;Eiqwu{#qrBE-gI_$hU`>RtAH22R$G%^9ZFv<<$`p!?+q)oM`ffE z-nFE)@l1Fmk1U{x9~$RHH&91mdsL$o%W^qwGkJvE!T6W_)*wB77AI7H)kxY>jHB+ za!u*r%*+iHUyP3PDePw1`gi#ZG6zm5xNUG@mWVcqqN=um4lQ+L*|A`>5OThSe}J5h z6^D8^lV_TkQ`-~4q#S=b0>JU`5H)1dRqgU;k25R zoW&p+HJ`zEuf2eoytoiz3Xt}!D;l;{_itO((Kim1lS+F^BBncggQjw@nQXLXDCGi# zSv@=8P^Kbf*I_JdY^+6p$_o2+A46%-M`5Dcqc1yU$OO-A=;WXxeHyP73enqaH}O+x z3bZ!Su5)apJTKh$Zp;oV9K)Um=2v;Mvt(4pp5?FZEf;5O06kPW^8OkH!Rd9LHCA+i zkah;rXX(xG!=gGJCQWRcVVO&;$WsuGMX-6q?{f5UlI^e*3Q9-+rBkZf;O(C69C={xUcs za9AoLl2jI-JGk2CG0-r48JeK8x460Fw^j)tx87P-QBK*AKZOP1?07V@*&2U8C8eay zXGi9AUgY;lLZ}BlSx^t#S!#`4{?_X<96sfaUg6uBe?KgQ9vLG1Ba=;e$263~&A zA?*zMzx0{asP5ZiUYMLQfATV#rJj|-WPQ5YMkW5P+vr@jEC8_wngEgr+`T~=u&M3* zMb1eZ80f|hLY}YMfzXi5Gv`LEf4n$cmPM@baEUg4+X)tEKCHRH4ef$c`U;m5B)FsX zIyQ=qcx_)Rb0tM0J4_x#^kSlpVTMvMF$VA7Q`(b> zp_*7*r>l6>>Wz;ivw_lX^>89sxrK`w-=w4Ym3!!06Zwney`bqEytbkD+l|u`Kq~1h zqibe12aQ)Qp2Wq{!xBg>bxr%GpyMD~DSc@!&X33F- ziK`u~Z+`szDqnM&gC?(n?7Mk9R)T}$rO&y~2^D3P=fp_>wt@!_DKvlg+Dmmc{$g)> z!D_BC`Au$1jwmvyXM3q>&jOd#@dlcR2FKeRecpUQ*5l8o&q$zqXsMBDG>pBa>|w@4 z_SFApRsF)Zc9Qwty#kezQUI=6K^dH#xII+w5HVD2C51rU>k%!otTURId-6yb?_$Vr zc|xf-15k#7l%x>sNlNVF(Xg+W7$vhbwf>McCjvieu8pD@v^0s*5%nl|twf)oT3Z*uWY>2oPY0U1Zi3 zUsf&^dXb@O!>ByDPc+xeHfj*lBF6b33q)o;w;1;Lh`UH`(ar8&*A>c4NJs$53cDEf z&6%Ngw)9!LD5lbQS|IQ{tjM%+};?Wxud#W_G)`Uq;SlWeav6ud<##x@y=9Y>f&3z3D-AK6^f;QK+-EBQxGcmTjtz zcvd%nupX-~UuiK&*x2~6)X+A9nR^W{-Er0K0Q~gy^h{tayRAj$B`&gilU97Jt*;Zl zY)8o7JT#RI&xxN5BChzC%~tKMuM+0oTEg);;k3bk>F0aWw$;~dmVKYN4;Sy|mX|g) z5&8OuTQYD+AM+LDSvcG3;Ma$X!p2XA`2X}1LApT~ z5?0NAv8ywK5fqoLOvo@SV`pYFzhM0NUX6dNl?0i|-0B9wwnY!1)EC196*QSEQ;HdZ z(>IkpMmm=u{)u^ut@?t*nyycTNI5DR7gAwIvDkk@M|eU?h!mfg7phq)npcYa#>o~R zS8&8Fe26CKZ9;91CWp$<0JldjeLL49g{y0Y8it$TM zN}YPar~#UGcKB~dRcMM-xXnHob074^Y_w}L{=M*TJ!X_+yFUJ$p)E-P=f$5(HAp3+(zqP{6zZU8+7^djoI^rcHPkF?q$ic(y>m)25ra^rdIb z#;9HAS{;|tVfMnSdSN;}%XIC`k9`^rF|u+Mt>e#`k-LuO!^KM@1;&|{fa<=DLzP`{J?eLSF0fTT%y zHl?J)T0lZJ-@u)wb{Uwzc(QpGX}eP7)RaWX%I>6+*Tg^niosxypl+)|fkZ4k%zr-* zK>pQ{o5N$ZbBSY-QkT&c5f8Ze=N7TqIiMTso{?ZF6lOCE_rb12D@QAc;k`Iglob)9 zB?2`6Z4XrodoabXD$fgm9KQwmJ7>E_kn-0$bWG@onP*ML_x60(UjsP z++A#)t58Vrtr)e1rKpVU@Db0kYpQ#cSUw#$zkM|(5Jp5Uum?UB7ybv*@BG)hTgI!v zbfR#UpLcf10yc-DHsxBEy)Swp+oL(osEC;TI_bdztN?HAOcfF6Mr-8Y0COY+bccnc zpXl(M8e(ahX{?4O)S@A#WUC$+gL z`ZH)@RsBIDjDc&;AcKalH|qP1+~~Lz3R23GBcIQv7TGXPe~@cBcM&;|CxHEtuIiBqT{TwzUp@u@1|AwxU81>vTE2h8xG)l4HiD!#uRj$7 zFZ<5>Y=CJ>T?v^T1V279E0ve`<;#~JH$xGVy7GbIg5#y!E$|-uXSt1j zYH8g*ent|6ZjP5fFq{0~Z;tDkkM`%malWqnAg9F<)RlvrDH4{0r@>_#A6h_jANY>4 zk9OhaKEM(Bb{}-iE*;rF{nJC)y(1`2PEIF4nVXX%RPm&sx>78iQa41=Y6!xQ*!X1G z_%zByUsmp(i4;r$HB5d%BkLW%f)}ycxv$YMLxnLj6UoL?wuv4Uq@u!{J|nFV7j&(I}{{-kF~6%T$&kz(STya(w!mkm0+tfUsqV z*Y8iak&I+Z1%S01u=M+Cb1+RW;s|%kddI{YdLjA!U<0ZywGAMN zU??BXakrm6aZ$Q^MyFW?tL6~v*$m}9cz|R2&K)t1(6*ssb14u9i*_*HlMPnio;%F< zWo3N$@F59>a&3Km7`f3UVT!f@%9d)#+0cX|G>YrYkGDl%zjlJ&dtdeM&?pknVJ!C8 z4$q~y8>R(w-|q7CzCL_n<98cRVffz8Sa3;Mu_58BLz@6K?FwX#gc>ZhLc3Q)3qTa) znzo;AO}geNd5+#R)@C>fAvgO&*?%Ggqu9AN%$B4SnalZvpvKElKENN=&eCR$`*2TC zovoagwTgTy$C`|o*@5q>J@5EE<0b>gy^09N>gzv;O05)?-G@4t#?aKh_h+nJvk=8o z>{g!eIMFnD#|OdiAUm)EQ*vXqclec6KJv=-#a+GY*LgKE&lv{_Bd^*i^@H$mWYHrl z@ZsirGc5NsUHdYDroF9k$jYc=iJ|JV-=91&q?CoxO2-7Jy2(HsO?4tJP0_UgdajiO ztnXyZqMc*=j{N0sz-nuRfu_+&$HnsCF^=h{`wM;oTv#$31=6VwPa07cq^7y%%y?Ua@hD5rWp-HuRjobQo_HK~;m zY!&y50PWIi0%nM;J*MmEH-|K={q1yBpX@#QxK9yd3Q5l5)9|)ErMdP!U||B{*b!sM z<~*nXzVe|GOSuf6S}T>wfI-o&o-{@3rXt?y@6Z3B2?&CnYU5Iqzx&YF$6ncCt5`q> zbbZ}mMViyBu@c!2kw|24z-qRr+h7A?I0T$$&pBi5G>kvFe66S7q3vBhIF1`QnHqwG zQF@YK;OOT?GPsz9;8$szEG9hoYo>~qwM%b$a?Oafl(I)Sgl(nzxB13G7}K9`eJTlb z;yM|DlvH?5gYo4d_8d?;$(1dTsm;@paQ|a>6*I<;3Pi5NffjfCgy!Z@+%B_)SJA6I zvvji3xlh}-BEYr;4DB|jX(?>)B*Q1aWC|^ix=jrai@$*a)9u+gqsD!9~b9E%0>JvL^FZ{#AocXI1Uwe#b(W z=y`5`VD8np6Fz&gcpmXLUdzAD4o?Q>G3edv0$CjjtFp)doeEsT69Z!*sDpf(p|%D1 z)WpED3=*MmIZ;;7S~iFs&d!sfmY8mJwe#0j>`pb?VYFAHOKfw_#r{iM^~S&w=4J{b zo#sMJtL$g~Hfe58N=r)NIU6lw_&L^Sz?{n+u;EM_1DC74##NvsvB@lTgmwO>Ef55q zcemHwhKtS9mE01*5^!O?KI}HxfUs8b$@ZP?AY)j2iJ}$ULbgbJ`{5GB>?x zFl|-AR?fCNFV*`lfGgP$u#(ABXo#~5n$B_?EXda;@+F{P!EQygrKvKTDL(mYCwOHIO!(ZU!I}>kf0o;`^Dj65j$`hF z=mb%;D;_qp#UrR9J=usT*&0A`mSNha#BuMfKPbO}+G7CAUh4(?*&!>Ki9qHurr9`0le&b46Il&x;J;SnTG3SqMIvObKtI+_vH=!K zbF`|im$qchbnY%DHB-MQM)*(9MkI(*d8NCNK(idb&!{#5zB{|SwYi7(E>yO3!#I;j z7;+_h{=>9ze1Om`+|DBVV?`vG?PL+350D#ulJs>G(csIBOZm$HH z!eH4_HLp2r$0{z*Oq z24I0k>VAbuNl8v%Cs=rlMXoeDgIi@;J2ZFK2m~=tKQhIw=E1CJR{=kw=U-*=^f(zV zm^MPI5~78V*edMBo+66Nq%6f|)lFVeouvLaPA9-L!p;Kpy0JWc z?*{TO^C>JItFC~c40W$ZE~h3Wfcq}K<03SElHgeU^$F zp~31wG~N{c^8A6Y*7sR6<4vLjkUEkZEByJ zL3L0}cb9e?2leqljR)am$ZT}L>XepG3&TZ)_$;@30kpj8gBy;*I`+@*ql|d?)Rp)V z%MC+=10K?h9#A=%)Ok-96L8(#E!Fy!Iu>+OrWzDj44;o0mg@%hnaGPa>_p3VO{g^C zUL5GB{MTT^KIeY_HT_(q&s5%+f8ULxN;K(+*n}-E^eVe26@bg1b`#ldInOkyGs=>F z^6k?GA%_?V&jVGSLArt>1>x4*Lzgg0iwAdF@(oLj`#fQFrX>cp3P$G&dkj!p9?}S4 zw`@mcq<9C>+)y*PW{O%S6xk_)DaHfZu|(IotjDW`gm{!iGaLqcy!_t^jS{vo1`?n% zYxlm?=t?)&ye7o{g?8%JV=zC=lohlo-v~BN)fCAZuZTDH*=ool^ziG)RCLpd?3NV` zFAw8)4}aXf&A|aT{hvgYrZ@oVV9Evmr_hbV`IGH}NT7V{E^k~)P`0i$*avG5XlBXR zuTLDzioiFy?@R{1zZ!eq#=YN?p`kMyEzG6F_Go@f!*LKiPV%crL#s$BHZGIKS{%=i z4n;O~-h67$?X|c6L^Npx2L#JP^viv7AAq9Hs76s!r)3UcqESA8=TsAt58~$(-W0`k zVz|Om4vdz1Ks8%zr_Juy70&N3tewGq0};Trn@iYfzf?diH#nznJtaoi#7!_xQ0dbG z=_4{3b3O!`epxy$cKQTwvUwvwa*cg$EX*%f6lHav=!~)(Sp82TL9}tD3WutSs;b(M z2CQvscYRBqtm{kdu*z31$x=M55aTaDeDK8hl6MzSTxG;2lY|e_zzkhy-C8Jkk(LSU zgj-?tDVofIaSXkZUB1&TJ4=uM;4EO8GuiUt3y&nnAAkQ?J&x^*JKF$@+?zqiXzPHr z*^??SVwkQ31*>qN{&6lSS1q#~fKhPWz>N3050+|_AdR@_SQo9LM<};b1iR&=fZ9#y zfM?fOI+!vUXQ+4$fZA5ci>SnXS?M9#B^lMwmkB{HHiL4{T%(OTn6BiVc}h^->HAAg zE0408;uZa|Drek2e)No1nh(bCtIGDKE88pzr3>?GhrR$eEb4#>=8IalN%hqjAv-V6 zecf2=MGP%segn}Sve+r&Pb?~Q$?&RW45TQA{`@KMjVbOnSPa$EOF&Y2!9l%?7Icja zn6=5q`aXmPw<$g?%wjVb+=Bb^4n$dq|2L!M^fX1E+r!L3*S;c_a4}o>iz!OhZX@xW zQKzwy8sGpn7xp^%z8?;@(-a*xHj4@K;qHy&7(BscJ`37W>QNA`WQG8HXnn>_hdbrinRmrc>WeR{c&1v{xH}W8-H>zr zy8azmLE=SCa}a2Q_Y;PFRHRVwb;9)XyX8%b#UP916E$lmT{1v1FA@ODuj z3*T8N^q&r+llEConE=b!7jMfo1S8N@ZfuSFkZZ?%@L^%h0&pji;0#`kv+Dp&qVo`_ z!NwDCEs5QVkVfx%hivdh`&@NS!l>sZIR`JE;h7-1-#aVK^r@cI^{)J`yOF2t7O$$u zYHmCnt_s=w7k@kA$o?JEKo_v1wSI2|^lAA*L@Hvqz&vpiaK1O+3r}UqVG~&uQBNdg zxdEg{sJLNTT8J=z5*f~y7O_>@6tn=-K;ZokPIu+vPxb!nQuOQfVnY)=o4bfmNx9i& z_Qrc@St)wr z73POqmD5#wEck=^@|&5?oApI}8zaE>#0WjVm}|uoOKJcM#X)vqQf@UmCtY zZpFZ*@|fkiC#okd%9LBjp2?LUgF?xcga-nF8n-dgh&>g1H2sUz{(&zBcRzXHg@ww?*wprbjxJf;Fx_c0WOcum#-8Oyn}9-Pzf!map5G$YdS!GaO1SO< zpu(SS2}@V@X_-LS24x`zz96Zk&0EA_*eW;zvBoQ7oVnQr7K=+8w@PP${v8rHSw&I= zj{?x8bwa`@GZg|BSC+Azcebc0sK(GP=Gu?uHKrLx`<1CVRRQ;A(6Oe4fy+x%B?Q&^ zC;L>sG13Wz{Mp7)M*-j+Y11*Vx0)~6by?ZVR%hI&(wnu0kKD-3u|q}X2qjEsR|3Nk z1}aYq4g0j+DkcKxCm8+sa@?PpS-%-P&%-k7WYjI;YO)K+5K3G^0J3jq&N{Qg#WcU8zOWC+&5bfzihNLv;6N2&mX{HJMs>x}@g)rfxUfJh53nVOO5^Wb`>H>c?5ZqRDC(N-$@odKgavOz{ly15I#-*fKy z@0|PG`D}6RJ?EM+=9pu=?-(3O^7P;Na2$;^|G>@x6#>*+OS?{~k@V?C0&$%g^qb6xqo`>G z=%Hif+;l(2{JamH-&M%yoZ`H%6zJr`0KHLPGf;*Z}vg)vpK^ z#=!7KWSOgzOrOcS(=?rTf#?U`cx*&){6NR!Km`%HsJc3}0+VG&;qHX@2Vee(%hzG8 zYkLM~o>D%+jZQ{PvzxH3CSJ9JItxvf^nrAoMOBVF{!rIWKh0Q?=5?=bj^4dlt(e1i z`#GD2KX-iIW&Gf~39}jaoQ5q#=50^aBL|RP2!%2A5=xd-;ICA|8cQ$O{nR4cUOv@R3`VP&3LX9V5>&1)3!EdTnB%E$Cd@T@C+8o1ZdA?K? zqM!cy>bMPFx1)_qxu?rdTO6@JDLa~geJ;|uhwPp9yFG*8BmAxXmIC%!yOQwRR zZhrF>LOT&1Px@h}A#oNwa+``pyBnbDaKP@*ceqoT@bBNlI5aie@;iBduA8J;TY8JN zSky+sVSbl&t|qnIX8hgfGJ8B@QkYip`lB40gQQ!1@n-zDuO7AR35P6yzAIXCT)l<) z$;}JXc4B}xH*e^wskvYw>O%i(*Fmf1I_aKG^^72uA3b1Uc!oJ+ZU>c(#GI}GfGj1h zc)tc|A3@Mj7J# z`cm^CjZDlU{&QjJOvUlpe0QPKHZZ?=(DcdQ4XH5t{S0HRIjta+Aoc0LAr$!x0v8l#7Hu7MTpr~l2zXS5z^1ro* zTtohdmm}JuCizid#k@?)XADAXPS){73-h(wZydoJutms645cVWs})%LkoxHuCG)OG z^DTTDS)5nk$;Oq{#j}L;_4-p z`*6e+j~|67F5B=aZr0Oa8(s>|!P|oN8)=~U{a=G9{$uaY`&OGBXdJqIPZzt9U9Mq- zFw98Y+Hb=Nu4lIldsa64OAmkEXRF7U*el2DyY$Pe5#XuUmFtLqx3q@>51XP{H71R7 z7bcf{zEATKk17^bKMO4-i21c)Pig9YcHXbE>W?^;VV~HF828BD1@l|-h0o2x8oW%+ z6yuk^v%0T{O?~n@*Oj$~p%m@35UIC#RP*e;^>>&Cq!LN4gEslsXpKW|k$#J<$A5)Z zuzjPHhaBB-y3v;;kt(VJ<#46WW@PEA>MPhokr_+Vu36c?bR@8mJesLKD*l;5{kr~L z(Sz)~j$y;lAFpV2OQ>u(OF>2|8HbIMeYtiD{!JLYwWet&m84QURk1p>#^{SvJ$=<9g>%Z{MQTy8%C?()DZ~0s+ZPpk34oUf=F*^Lup- zm&%9b(l>dSA8L3JSPoKn$=1|Q8b6Y3hv?>M1A zUd+uh(+Fif1$J*;0B%Fx^eblxzDb}}ofp33 zT~Nfx_BS1v7a@C_;PF+Q6tv1L&z;fMCb`L;K`?tfWMa!f6$24=E|Bb5IriJeP>9acl92Lr0DM zI$o*C(lqOADanJ;u2*$1<4oP}RS6;|3Y;`JWm|47eUKrhP; z6YcaFv=pZ6{sYjk#ly4kl_`AS3;lfY>CcI+&!~3Qw{l+282b%Ulb}0T7sfM{51gGS zKM)j~v#eKHQC{Kx2~zPZL_5w9k$uBa!-jNffmVBpLbcuu4k1|to1m*T-`BhNC#0u+@Nb%(EWE(c+Lwl8CTwOM^c(z?G5*r z_!QdT_dj$2#SQZQ+eefFgKzJ5m^Xsk5Iv)o8ea7xqb#WWHgxzTL)xLM7723}%VreT ztud7kUn&5b9HG-aj#e2&VCWTAlMTB7?ITFejlkJLWGN*{%<=rvHga8g=D)V4;(7F5 zL0l#+P9Te!a)=)fK(9|3;9I3Oo3$=Lu@yT(TD>g=O049Y@wmMB!l~XwY$=4IDm;*_ zy)uDN-lJI>QPx0YHT5axx__7kQ%pu)ED9K&3%or1nxEfn@Og@A1rz>)fD{d{c`4b4 zo6rybHB;snBSNVRw-3Eav@Zmg3v(0S#^50u#?Bs)NqiD=DR!k*=1-Cv2!p6wNE$h$ zR{Elm0iOdtJ654FbHN0{G1dH1mg|byv#ySR^LaA0Cu^Oe1T#+8r}MK%uv1t7tG<`_ zn3G&6)q;B6FY#Zb1~FleCiFlT357}17&+?CKK@@PNu6o$kPMi!YnpaoYBebi>CM7c z1>y$%-*L-F+aXQl#X;Dw;l0PW8oCC3q&W`;G65dksF-T3s14uPz}CUJk1yX+eb}U8 zgv-OLlx*vSFN3RJfalvJ#Zj)MJA5h0=j;6GUIJctXCtsX%kK)b z^0NS=)4wT{#!^pr%*>X)Qa#>71ERbAKkbg`gd|@hE$0xbpHogq*}fHLLNMgM6u>ozr-30q8=Vhx^&9>m6z!?@83VUG5G~+Can}GNFWsLPBd_c# zrx?VM{j?^Q>c=Y0C|8c@hl@*-H4v91FuyVa8~bu1j_J8VN^TM0qTPmHFD1Bh@wnHy|M`^=xl4JYfeKzj81 zHeg2%-&S3i6PRt`D`b?*9R}^8LVjC`@|{_8y1(;9JpQY=QNF3BLbqk5F(*Pn$zSiW zuI7C$y6P2Og4Hm}{%kl``%E@td?YYFQkR-T`r_)5Q*I?gNkxO_!}J^DL;a5&RJpE+ z7fu6^k&F7_TWi>}l2?!8_S^KvNNID#E>^&;diL9Bmy$3kw?7hv<;EAO)D2kZj={|g z&U~rn0v#9hIm%g0^ze}G%KdeP=|ol%p%Oop&o(T2B#i#-A3wgu@%5HLa+LY#uf#u)R zychD699b~}bw+lN*(nU`GG%JKTK?_;zc9Kmt^AuepJ-ii~*Jzzw?_30O?vyTN$ zg_^57mIsiAHi2FTqp|2dv@>Ha=hItMFI&FbW+{)Muhh+Ez{)C7zhBPh>7N1xe#lV? z=zEHrO@HAk&7kHs4~Q&C40+vmJlJQb?gXzif|m$WIzo$Jzm3^$LWL3gdM07jP^Bi*9#JT+|eFZz= zT(lU~#kJu4F^Y@PjN7^mV!Te-fY^s7vMRgNcTD1Dq?V=Mt&B)VJwg-E^|RR$?|K-B z*EYK_3zh>&?~&ffSQ>q0$~w%#!OBHB=@XeGaNmuH*oQ!b*}ghLxn#X%=-SEmOn+Rh zXX7zyL`{|4@#vS#e{ZE>!dPBJj+4Zy$@vD^o&Du*_qi+vC2XcD;rx`53Wp&#NiuI&ff zz*Z6d(1yqP={jVaNZ&EfZ5qh+>M_ja@pTR`?bH(Ik0P)X%k>cV@>zAXE{JPkj%Is} z8^t8D)}tp&CK7}3A(ipS7wZz6!%f_j!OIQKk5o!JQHy#-kS%!}pApW8>rL*kQSRNZ zhgVf_qn$pmE$=uGMJ z@EQ#6qrWazGr%rG?-hK3q0+$G=Z^VNeZ5$f<5d;1j^d|IBW%n#s1LWv@mMaYYp(64 zA+)k%GvE&U8bR4t)j&*umz37+C39bsvF8i#n=3l*xDEaIyA5KP| z=cA!2vZ*OJ_@z@+u$-OucD58@?5n@>+%y46Fx@GFV5>kcRj6NcqDBBF7s3$@)ufov zPmUsl;O|z5Jd7qR(O)J$97c~z6B4@~7PV(Fl!S#)l#^zZ`!!p_0`fN~At`Hm=ZPpW z8Ig{_EnA*K)3i|mH+juP>5XSwPKG^mm*9}XpnDdoD~A6ai%f$)OLG@41Hw_U=D1?L zDD~cz;db~4!@Ba}NvKT!xyD zMU_zlYbSqEGE(^Afax{=+14C(c(%iY_j&8hdKpEdp%8Wc0Llv{m!vN~**M*}T>}A0 z`dy-<9NLxMMa7O6msCyTZ?c>e;+5~eCp#EcxfN4ajlvaqa&r*v+{{;}uI!c&MkqMR z=X4@47()f6_Y{<(mAS$wH;|O}WYPT99C#+zXB?R;j;2ab0P^m1b%IV}o33;{VJat0 z;V;vT<3DjZyB5vG=UK>+xT?@>e=LO%IpN%$vr? z^Hi$HOwA)Qflm3W;@jg%z>Oz`jxtu*@@re?H!Yn{NC&htNKAf5(IkH&zY7&;rJ!KcvQ_w8~d@M+|mS%#E4t5*;kQ>?SOl5yEp5xt!E_a8HeE6 zmY4g|c!`LYMxE4kt>9#yNVnlYvz&_idP#X{#<(kQUbciVKOB*eR*0$WR1^d)Y(`Z( z)JKpOBS(+{4&8+ABClV>~5dY4o_-E=Rgt5xE@00BygNY7Aerp{}!TXp>b@>A%H{r z7^okde49o^vBA}Tw6O`*j{D}8dFOCW!xan5=j)mP>;;On3i7m>?WJ7>|171V?%Cwn;-lyK^&{7cbln{@Ejx9lphGBJzbi;;k5#a;_)PXZ-yP=UbhY@rcJM zZlL|*5c8Z_#0OsyI>7*#cgk^cf#0dh@Tn;jYKgB-(7C*$wV0c}>itm@K%gP(M}I`@ zXkj~31Y)ffsL&kS=P&!I#_Ld6&Fde$ESJJDKb*YQGNT9b(SCWx=vbIVlV;fvG&WkB zof6qL!M*0&iy`4s@G0QWL|h%)O|2Gqq93o>zMNg|--C-PD39Uj>>^=Q$vSX~bU|G5 zxVw_7=^&0xv#;%8LEMCa`PgZuq~@q5EyZnUQ}Ytr=LH#?5epkD7ndQuJ_j=+Ju4Rz z8$Bm8D?2?SqXDx%yS~058zXBh1h)u1miIJ6&g@rX%8_y1fnMsL>k(-T;n~5=Y z0gv>5|6YUm&KWy4lU$3;h{b@>*uaR3-pJU9jh>aon3bNBgPn<<-H6qMmEDjD9D*&@ zj#eC%i~fJ>ug2z+H4^*_FOHwF8|=(T*hn16cx#b%{sbHi1RSt-TmTx9JsvYwFI87` zPH`UB@XU1WWHsHA`ohe;ifW6lw(77m`}>7zI>l1fr4$y`q*t7;2w$uF5w3@=5${U8 zkZzeq-?ZykY23O=8~c6nSeem=2=iPRW0Emo`luj|_}=JVnzgfyvD{O5|7tpI&x_z+ zR~yW`hJfDznWWjOiN&NU<@XrBsr&RTf6YVYRpevHVh4oKFfg|F6S){*L(>-@yWewvvn4KDYg8XrDNu;w z?x_z^s5p90ULmQHnrX?NN{55;9TsLCo}>sK93LhHCU!9Ihiy<7_m+Lr zp9^_x>xNq) z3kNH}K@OZ-z&fKUH6$8X7*4_Gzc4-&zXg!Kv8QewA2T#8NsFtCh0_5zp`|LcB;+tK zlz4*RUzl-W!dA{-zD>BVXe{P-*EL|lF@yda(*S7$21dZkr~sVzzY-=Y_beQ+blSql z|Mvv*TI~PuqsrIuS~~Uih>y=N05CqJlZC3PAwHOaSur+@|8?TCfp?4g-{b$6p8vnh z0ftp;Z*NZns5OnYx3`Z=N-9G6)F|NGlHUDqT%VWVqD`|xLPA(AX6e?T=jV=G=`!I2 z91*`kL2_>$Q%^2lm<Vft4C~D9sX3!{y3I--k06ty-EqVmb@CiuUdanLe!&U--ub-GKc0ub ze|Uf{%ZP(Q-miA{N^z%jkq-)R4Y5N)G_UdAG$D6^X8HKQELgJpeT9LMd4n?ri(izN zm#3j`Y;VsDDjAH^^9;q^;JL|qXg$OtzDi0e>*#!HSfU4&MITgeSOC;-RypSuZA?m; z=^T+zB_*Z2o*rRxa&md_xcC@$?l}&b*A1<$t#QB;!oU#fJ}>J6TG2tn#-iS;3ULC`JWn-uRfT?%X`xY3>`C<{LXS=q?HD} zA^0T5;^IGUua0$h+ChB*o*QS8kQVj4s-d`WN%vTQ_qsUz7$2Xg7)7eruw>CHBO{a0 z(eXrbH8wanF%(bB2I>R7R%7MF?AGEE@vI_4hoYh8(>M=#I*^m2M}Zp+?cK8fI>>znSW5AdRsY1_W4nHfA;ilTDC zm><2)oLB7EVw<-XtK4_K_s>xO#R{>9kBNzy&X>epgW9y;Y)Ad<#HH8BYgqHvM8W-} zS3(&nDS}|32#a}!Gp+TM$*y4X`Mqc&20=WBEZ`P=xr>ST+?X(=anlV8` zH4Sloa4_QoZQ)C>i+Rw^X2LDu)3_j5BB+^RLbt8zaU=9n=SB3r|@VGs}#~ObO=O5 z>8*VJtAYC7wePL=@lL#j)7;N7)7iM4nF8f7(TJzSzQ}jkZ+FtjC7Sh?%bK_LB`=Qp z9pdX88d4Bm?q_J0&#phVkx9sW`_L1#A1j-Lpd>R?N-5swfTA%(}T3QUx^|i&RazX{p3S8SD45x zX01Y>-cw7QTHpdw<%Y~tnJ-{`3P3y3zY-~_Li0DSzIk(_F#gsf&>%-+w}4g*`m22q zz}lfAq$xeWx>5y?g>~abAcZ0d=#W-dVrxACxhA764X2}|EWSZ)wu_$&5Qx1*%&e98 z+)o!-xtdOx=c-}R^pfo^L5=H81>VzN7WmW0j_Py?KXposY>J88Zk1P_DxlK^%D+gi zJgiS0+aB%>xr?P~+a4YZ-FJ&s0Y{U}jA}JH_uF`CjRq3!F+TeS4bg`2#I;Y8VUdb? z9&Y8Ztf&^VHq(dbJozYrsMEX+T8B$Is^V^Q0VR%uC;C`rd@QNP7TBcyTe!m*IFMFK zUAdDce`9N+(pJihL~2HXw=ObKg|$*{PhRp{7IVXz^3xJF;@a#g1I|~I8o$8Ta@Rdjqtmkzr_VYKn%`|k^z1oAmaiDpg;J(eK$uXg%R&Vk(NHVBRQq@(&An6V?d~yYh(FoUU=8e=jrIOiQ* ze8S;W#7Ywl{ZiqAu2*5uQL8*}v$MkRuDBCtpo7T^0k6b{LO>4l$W7~eFL}yeiIB%T zg$o1IAY|%(-65o~Kr+|)yEDFVi8apx9Q0LcP3V4Re0>sC zo$ESUT{^#FSwVYV443W%beU#KG zE$fJfLxYMUBE}aSogI79H$!pg@$GJ@tC{!HYfnJ-EZz9kF{9WIvf|cOAt3H3rhk*G z0Ob}&;0p$xo~oMZkIVSavqQL>%!#!mSV*} zGzyQrOe1;n$5E`U3+6TLFuh6ljM4h+EK#UDHf&`VP;^stMjk6Mi?d;`#jYT7Jfbjv zv1txyf3q2S@m;o6CqXWVjN0gc>aca=lUs=v^TM?QB8*R9K;|;%(fz~ypQ}WD?lMi$ z;;hP~--IRjcXu33V_eK1wI~~`%GA$rAZ~Ijy}c^v!$)f^EjsC^(FTS&o*UPtaTOP% zcbR*8LB~pC<%KjHKxANelRP_gqXVHn%sdRc^lyHi#n`_-Lxhk?hS~y6 zmsrzo=;f`RTOHSdm#ysi?*9Fxiay#Ilg#QuUrfnB-FV~omC(gXvjIe01YRg<;*;A} z>iEoA9KBp$gZAa!@@RcI*q_a3rfRAD(<-m$lKa&z1o7!E1fumReYLGwwXcF;a^~uM z%9EFF_%dDHuydizSVwNWR>J3VzzV;zM$Y1=SfXy-{sBDz~=w%E|at1`A==6<{0)2%`SIx-?zN z-=X;eW_*027qNdOpLA?u8DR~YJGMj1Vo|7*`B+tNWMXzL*hL;8rJP!44VIn$r`WX9ULmG@E` zXfLi_w_U6j^8A8HN!uMjlJ>ZHRcHO~a7k2rfe} zEA5sAkvWXCj8drWv)Fh~G80*gbQ!eS_q9SMI|0i*r+TtM3=Fy_nL})rJv)T+1C^cj z_|$sytCh$BO?i^o%*+>emkMVnWARc7>wATJk@Bj8_}J7>mxWZj2Q}t|OP)Pk_J>3A z+Y5%56}P-{*{b2iXWZFyk+FjY6Qi0(@hwGa3F{vaGWnGr50@tNKsUumQ85S2e|<3( z18hO3LHdOZD=`^@O?y7Vv39MaYd=Un1cKch5n%KzJ}N3}B3DeY)cvUB7zaAz!Z)o- z+$O^W62@QCS3A2Yw7XsId3F0Myz;)jzQ`yjih6okbU+OfF-(^JM~`CNXM*tt5&iHI zgct?}InO98Az>S8mK+@|n7t2Vr-Ry=9$T1HgtMrqR{D;(u*gG!5*h9pmv@4^)%PVx zL1yu`)02{R?_BOK4=rB55_^bEs8W7%+q2p_q*fBQjT#j{g0xt-hy2IgY(ayOmEpjh zp2A_H6K;iw7+>@>3Zh={ANTj?eqq)b!H(VOC@IANYHDh5t$(dPGalUeG&VNk_j9I? zQq*Ok{cC7S_}q{NWG-MkNKw&=)!Eh6T)e7|+x#X-8_mBb{%Zzv@m`Qz4*lU4T2UA1 zAtown-t*%v$Q^S8{#9p9fLwn+`PZ*s8YIR-LVh4x9*wg8R|SllCR4-8bzB^;>E?<> z@)?Q0!@v-V2G_o3{+^&L{GBFs&)Pf~o~SB=h*c&@Q6Rs7>3jvAf~<_-(9kLJM6KVc z7N^JCsg9h4Y&yrQZK+)UcqYh4&wJ-W$t0e`8shK4u*FPueDVHFTdovEBnT*uK>-s2 z@bQ2EFUWn>42_R-yH0FjVB`|PP{ioFWicp+^(^=XRvubaSq9gfY25MoP8rk%+w#3v;SDXpRUrj07-L`)+e_%oe;%b z86tHn@9L$)=Z{7i7=-~zA^=JT-#0Ih?3r;QfpHXZidYGpP!U*I*ckvxtqcNz#LPj- zOL>Y!!3y?NX^?Y*bs%DVCi`h0{!xAbOuG*OEU6=>S67KkhZK3GxuRefDkbqz&rCY( zzv#tBG#$e2&gD?}_&N(m+cHqX!C&NF;eflq$`k;uJd2N65u~O6ifE#56f8|5dMGRk zKud1wetLyvc6iHbY z$3=ZNAL_?yOTbdUA6kLCm)7O=93kj6AgTN>eu9c2XpC9&ztQ>$Btp~v3jz+>CQU>H zc=!R68ju(NBdB0Bf{P|Ksq|n41Rqjh2*CJwK;F!(cxZTd%eiF>3>LlqHwRO>=S}Gb zIXn2-vIk#({`tRH2AS5UL{OT4oLi_t$^;fu+kcIr7qi#@zQdS`KmQQm^BiCTrK0pt zw*SWeKgM+6T3hPOCiLyq0WZ-`zbHdY- zcTO~JwNuubE|^Qifb_HoXM_8$w7uEw9xr)>lH%&qf+l3EM3K!ASbv9_WAauX?cwec ziakvig$Qa1Sk~Vl(b!E>gc0YaRRf)LporiV5Cuz2vZle5iivnmAU{f*{ zu_iw@Y>t>X_`gzy{r7H|kX$hEYi&)o(CH}a&y>teJ%6>=(l^hT99e~SmBCd7gqQH9 zzv~R0R-+z)7_!9SvcV}6^CLfEB_*w#*|MCA$3KPU>37Mhh5I1XcRy?$yR8=gAN!zn(eYbPJRN$j@G)+<~m zw}1Rjqt4o&kff{mZu{?|qFi1vu~&IpzVX+iS@kEkbzNk0oFZ@=@IC)JY20qzA)}cW zI54DUX_hxh9Ru95n)TmknLjGItUAU&n?-c&e}XZsPRhl2O6uR7DJVQuRT-v(ob8xwN53= z9HcV2#5lCsG=_J8B3d!@IWO7PEGL3VHkUry+uO~CxHej`8U-ApYG<3#YhhVl$HIiM zC%H|AHo2$AF-iNTWgew}i_aSTSkxn*dfH`q!FOeULC7tdThSp2;Oa6e6=u%%UOk$n zf2M+nG?MN8;v0mNLKJkoeaXx~t#JI=80uudG<#aJ;5Z~<<=L-Jk0bqHTc1#>R>G0t zb^T+aiO*cGR|FcemU5<#wy2QxI5mjB9in)^X z7Ke*YKzHJ3*^}4)3f_%}NE#F=KfQK7O(Gy!@PNtF%u6Jp;4SEDkn<7BV`FkDBYkHY zvDni`#rR?U$MH8+>vk|0tq~A(TaPe*h>ZGbHp4GR;|>=K2Ribu=3H};0`vf2m?d#Z z+Y4~>KsK(^Fn|3nG9s+VDdI;Ze+BrROhP|9!oOY}41S}zjUi@EnUp*-mva9C9{)`m zCj31w&EH6n<2RZy97sA zfo+0QSDyClc_-b5ZRo%WW7CTD*3oetwZxW8A#&&y#Mtpr?%ekYB(9SRZD-wvw z9KlU$zXHSfplZ<20W^QDKwet@@ZIonO=X_xse<wGzpG zc!?Qa49$j+%M0=QgHRg_LI==-q?~Si8(K{!jqER>U#d}(SLX$c&p8!+ zcAtl^_N2Ar^plWevGougG#`VTe`)HCc2*Hp^+s{ zo~s!`PEwreu+A+Ih}PGeTf{YwDkk~;@lQGx(huVC%F2tXN7HfWCR6kOO}GD@AbG@M zDvL?+-TK5npHXdj;|*VLfA9W;hjlbrI03JgNH00J&A~{sXLnn5(g@pjcI)9SEihdJ zEpEQw_K4@P3_EhOjDcJ-)H(=&Q3PJQCt(om8d;6}DtCI=_?B4=vglDlx9}tHb9ITy zy#C{8GSv2KcT@t0T;$NN=f5$pW){x=j;5AR_B-J2=2#q!U%2o>vf;)~4!)=8GS!pF`L6D{@?65>!ntk6GTMYDvfTqFZO0Gk}@3j??Bv*jjOOM zY63n^w|L~dfP=%v!71qM6i}zb`5z3aPZ)WC@I=U)I1vu}6{rq2`yW^(Oj-?QaSSv? zBx0l}FcJRq4F7y`>@>9?n7YAGVaEWSxB0@5Qm<&xuo3gj|MHWiaam@;NG`jePp<{z z@bsF=Uj^|S!MxEk!207fXnqzuViMbHko{jiBdd#~$kG5rT_1t&_n?6me7{teFtryq zyai&Ld`{GQY2NC^d!vRWWAIa_vG*_K1QK6Dzafe~Bj!PaDyk13vTkAj-#pKPz|s_0 zVNwHThiE^15CF3V|4j}~#8g{;VO{?N^~M5P}a&+3<_x#cMm27P*`*fT^o1|FwP#}|9 z;OFPZJ@y_GGk3T@;vw_c?r^d0_UP`|X{*sLBrJ?IPX+|J8YdTXi%kxNpsLQas4_Sm zEjP`2pW)Jt2ci;~TXn48pMgPYHH*9bnUeVU^fCZNEX*S06zkWkpvlSc16ts;z$M z5K>e+-R^YPCz(NPr%iQrGfpH)EIj~4U=3=%4uo12$qRjb#Sn9r6bA77-@Svc8ywpy}lhCghN zrqkB+=49}?Q_+4-MLfZ~buz4viIvHD6JGl~H_*2p&b=;(0;dG%|C<>sxTK2q%M?Pi zpihKMLM*EuvN5%8XC}NHW-%{c<7I(e5uRSpQOK%*iH2qC26mg((&0~SO1-_k8Z{>2 zAt9llU&DHjouBxlHqO^2BNPiYFgf zWOS6N#X1XF*A^TsEHH&ATvb(7tr0m^0XU`B@9d{X;+RccYQ-mTIce;0^0NN*WJ9^H znX?{hfU-KQGJt6Ti+LZJ=EuoL=G2lx-0R;hN^MU!%-C4*dw&{nnr*t9LPAj!$yOe( zrBL^luIP9lCwWG^&rG!4cCd^O>Bbp4tfwqk+UHg{UY{MhlpZcO0g5^m z4JvA0bfCGA&a4wYYnN0uOIFM#Ve_Cqrly<8Yrr)hu}MC?YS`<}USWOw&Bx6s`NdqL zUMKl6ow??UD$mWQyrZ-u@Dl1ckN?zpw6sxJ((z?00<7ewo8d=gV}9?nd7fc8lOktOSU% zQV~&_YrBD=5Y)2baqyM9Q{R=wl}7?{=+HC`w-Wk_bNlb5T27-o9s4t=`}*wJOr4>H z#H7vM%vB9<$*nhq7L(jV3?`X`u6HJ6WXVBUes6NfNmF_2()3T|elsi#;1d`;7yyzr zgZumY>1tz1iJ33Wpn8`?MRgFHCnqEn92{7Rh>FsXkqLvr5s+XAO-xLH+o`DHT#rMq zLnoopVx6w?cp939jg9QYsidHgI8x^o`M3V$5AEglUF*-I4rBW@3~n#f&t z{uGs#O1(N&ZRGICj&qr}r96%QR%?st17N^(jC72aBau3;uNw0A8*5NK*TA^SC#}Wi1)kYRbw-9c@Rnk>Sb>GFFZkyY06J;i+tm zHvOBYH}o2{;>6zP(R?Xfiv0K2n|2lzO>3o7t;Y%%07rV6OJ+yC%I@t!DvHvUJ@kUI zf6rHQ3{V7h{QPFlf=psGgogKed1rsIs;+>~qmHP}D`2rMoI3{!f@80Gy*i4g4%+jh zJd1N^A002JSwu#oM;;#l#Yz4}F{0jhnFakdk;THjyRuU;aUFVRI=O@rAFKQO^PERb zqQ#`YA?wv)FfzJT0d*!FpOFW`%WLZ5FBZIj!&7g{-|jjP*NH0fJ>L9Sy6W6nX>&*` z;9=1*96c`X*G(y;Pi|`W+NRSg>50v~*dyS87JD#EhK(iAIP?>>Pk<>~f#=I9KBC)m z(@GC1Df=E?6C$|OM_Cy`BdHv7>w^BQn{8L1at)K}-1l0tLr<#=w`@7dBvx8n0M)Cb z6>?>U59IkUFvtqeNy#f5kH7heafykP5?>!KR3#>hqDg1!tu&ifj_}*?(q#%&D%5kM zqTXEWu4->>ZGlRlsH7Cv7e+)cacg;LX>4pfxMgoPvRKEQI@0X;3vc1jxlFA|VK{+) z>S(0}>}d)AYN5&D+e5W^JTicSf{l+40gV;J>+Z68!P34(t1i&`?)d?oI4!@R03!Jw z=~+F!OT-0c7ArueT0)Zu~L5 z*6{)-ou5iV_c02>;?Zz5BIvqwEvQlZ@yqa>_1}w-&v8-fFzRIh4#MJtXWK)>++1iy z0dx-f%NH(k*ojZKQdCuYdZ|HNsxUw$Hh$g}J@|M+I0^+I__B5So&7U5@p*1(|mNrYD^=T}DsJ?BK_iU^p zb#>+U#nHFnh(@o((nY$K4rvZ8b^(gm>1N|3m5Q-xRsPbsp1=NN5`V2UOnairWAe}n zdy14Di|UQGsmql)`N1fXsn7FWAycEr=A?*=EFa(m;63(@Qh@02dJInH5B>V3A7TAEJ@BPM6xe*}~JL;f30Q=Js?d@qM1ILPLqGO%up`ny;5rrr-mJu~>T>BF6iq!Cc*E zXWYGWe-)d0wO=7NQ$nBZL-v*5qw`=ow>&gz{e)hat6EoK{D$gSntij5K6qsB6@FZ( zY0_R2KU~%=OmFH9v3XB2vcRpJtUdJP za+F79HUH$PycVe&ZYbmjw^ds78xh2qs91s^Fb$W|4&8I*$uM+B1wnwU2{1Cb+UCLL zI{rbV)-*er<=ap_|H+wqTM();c*~22DAN1(uUPmymOfnDzTVzqn@s+lM3&@{c1C89 z737LWl-gzd`0;~#Y%L!=P_0J6i#@%AYh$uZOiW<5dtJ|Jt-h?U9mHNqv@YZ+-xgB5z*cG z4{eX6mOvn1_ujpW$r~CP!tX~XV3*3y&K?>XeTG+_ylg0-rFr+RI4KDa)KqH6CucG7 zA49{y@KyuAV_0x-^v{hVwy--N@NyK0kIgS2%G?)OBugN)s&$wv$8V#lsjl{PaDI$m zI-ETwV4qe?Dr~pqBy6@{=3HU7%W=Ot@>(uGyDLb?=PFG#`1r+$Sz>Dxg3o(ke%Rqw zsL@cG(NLpY`{mt|z2~tTkIqAtVWh^I!t#7Qn{QUgwG2!CvJt$8AsTCSJFDB*$asbbmo%Yb_6l=w}ZQENcHG zjx_J4?Keq|@z#XmlnspE6VF+ElZjrvJ)x9PsIaD#gb?+$xNcE2Efa0w#_eyqbxiN_ z&hu~z5HLG~b|;#-hT!rAbz4hjY2?lWc%Nr$QB|jStV0Ki0#DlQ=jaZeg=Z{EPpeyO zws31Z3fQmtefEl7DlTnRh+S1LI$XE`1KnR}XRSWx;1h+n^DY(V3~jYUN-x=;uO1kS zdEV{NVmen09lTNqYWa|J9Pl%xOr<0c^*tmj>x0#5t9tOOSNqe&u_2+M zAXAJ_ODhF^_VC!4EGYMo;NW65bfdc-;b%a~z#wa8W`@sf^aBGELrF!Yplqq0nu=4+ zYV$XUESjB_?d_|7nbfe`EPPZ|j^}pfxu+S|=5|r>^lSyWvDXq9E&-_)AOzl&Nn!VD z#(BE08Rfcr#=2i2M-xqjS)C1lxjBT}rMQXP!Pq$8{_OP6@*1tf&p^~?rA%PZEiWyl zlTK%sUIU)Ia@|xYB8c;9M_O1<1Ltbj3)dX)*!-2{lvXUpCV1q$JnE-nD?GDHj?!|T zJ$9~3*a^MS=ntJm? zN*9>(y>&;+;9XZLTZk%tg$~{kg4VO|a<4KUNr^NdO<=pU=2|@2G=IWN%M)nHWN7qw zrUZ23x|l?+vgpz&xv*^*P8;LaplvpB<^`eOA`sR7g=3lHi>!1;#qYMeh@wETpGP)R zXXp_sef5MZu1~LdPrJ3aXdw~TT7XrBa}NZ_ih6|D}Jx=l_cg j(0}j$|89Bp1Z#&NZK`C8zX1053PwUiMz~x^&+q>MLEv%# delta 17245 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

                                                                              5I7e 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 diff --git a/docsrc/source/_images/fittrackee_screenshot-07.png b/docsrc/source/_images/fittrackee_screenshot-07.png index e33f00b5e6b384c94e6ad1653ad7e42bec9dabc7..793f820cabf3a63dea1724a7a6460da2371c4df7 100644 GIT binary patch literal 131351 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∈ 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 diff --git a/docsrc/source/installation.rst b/docsrc/source/installation.rst index 326f95da..fae3ae7d 100644 --- a/docsrc/source/installation.rst +++ b/docsrc/source/installation.rst @@ -477,13 +477,13 @@ Production environment .. warning:: | Note that FitTrackee is under heavy development, some features may be unstable. -- Download the last release (for now, it is the release v0.7.0): +- Download the last release (for now, it is the release v0.7.1): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.0.tar.gz - $ tar -xzf v0.7.0.tar.gz - $ mv FitTrackee-0.7.0 FitTrackee + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.1.tar.gz + $ tar -xzf v0.7.1.tar.gz + $ mv FitTrackee-0.7.1 FitTrackee $ cd FitTrackee - Create **.env** from example and update it @@ -603,13 +603,13 @@ Prod environment - Change to the directory where FitTrackee directory is located -- Download the last release (for now, it is the release v0.7.0) and overwrite existing files: +- Download the last release (for now, it is the release v0.7.1) and overwrite existing files: .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.0.tar.gz - $ tar -xzf v0.7.0.tar.gz - $ cp -R FitTrackee-0.7.0/* FitTrackee/ + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.1.tar.gz + $ tar -xzf v0.7.1.tar.gz + $ cp -R FitTrackee-0.7.1/* FitTrackee/ $ cd FitTrackee - Update **.env** if needed (see `Environment variables `__). diff --git a/fittrackee/__init__.py b/fittrackee/__init__.py index 955fd550..60eb744d 100644 --- a/fittrackee/__init__.py +++ b/fittrackee/__init__.py @@ -25,7 +25,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix from fittrackee.emails.email import EmailService from fittrackee.request import CustomRequest -VERSION = __version__ = '0.7.0' +VERSION = __version__ = '0.7.1' REDIS_URL = os.getenv('REDIS_URL', 'redis://') API_RATE_LIMITS = os.environ.get('API_RATE_LIMITS', '300 per 5 minutes').split( ',' diff --git a/fittrackee/application/app_config.py b/fittrackee/application/app_config.py index 8a8e5865..49bd15f2 100644 --- a/fittrackee/application/app_config.py +++ b/fittrackee/application/app_config.py @@ -48,7 +48,7 @@ def get_application_config() -> Union[Dict, HttpResponse]: "max_users": 0, "max_zip_file_size": 10485760, "map_attribution": "© OpenStreetMap contributors" - "version": "0.7.0" + "version": "0.7.1" }, "status": "success" } @@ -100,7 +100,7 @@ def update_application_config(auth_user: User) -> Union[Dict, HttpResponse]: "max_users": 10, "max_zip_file_size": 10485760, "map_attribution": "© OpenStreetMap contributors" - "version": "0.7.0" + "version": "0.7.1" }, "status": "success" } diff --git a/fittrackee/dist/index.html b/fittrackee/dist/index.html index 44f40e3d..31c11489 100644 --- a/fittrackee/dist/index.html +++ b/fittrackee/dist/index.html @@ -1 +1 @@ -FitTrackee

                                                                              \ No newline at end of file +FitTrackee
                                                                              \ No newline at end of file diff --git a/fittrackee/dist/service-worker.js b/fittrackee/dist/service-worker.js index 4cd7fb7b..b14aec9f 100644 --- a/fittrackee/dist/service-worker.js +++ b/fittrackee/dist/service-worker.js @@ -1,2 +1,2 @@ -if(!self.define){let s,e={};const i=(i,t)=>(i=new URL(i+".js",t).href,e[i]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()})).then((()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s})));self.define=(t,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(e[a])return;let n={};const l=s=>i(s,a),c={module:{uri:a},exports:n,require:l};e[a]=Promise.all(t.map((s=>c[s]||l(s)))).then((s=>(r(...s),n)))}}define(["./workbox-79ffe3e0"],(function(s){"use strict";s.setCacheNameDetails({prefix:"fittrackee_client"}),self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"/img/bike.svg",revision:"ab4faed007625b209af72b9b8dce84db"},{url:"/img/weather/breeze.svg",revision:"428c6ccb838f8e91dc4826c5b650a98b"},{url:"/img/weather/clear-day.svg",revision:"f3e8628de2e5089f508f03944f8be951"},{url:"/img/weather/clear-night.svg",revision:"6a0d6579a93e89fdf1a2a95b398e0935"},{url:"/img/weather/cloudy.svg",revision:"c52fe62c9d9fea2cdf5ae2813b3df366"},{url:"/img/weather/fog.svg",revision:"9f4d74289594eb83f9c175d13167a0eb"},{url:"/img/weather/partly-cloudy-day.svg",revision:"f730c2e4f4c014e8b49c9d4a0a141b90"},{url:"/img/weather/partly-cloudy-night.svg",revision:"0d9270901c4dffbc05f3998d835171c8"},{url:"/img/weather/pour-rain.svg",revision:"91eb3159ba8781d258d8c384a8ef987c"},{url:"/img/weather/rain.svg",revision:"c52ca88ce0ddf4de0fc29167e578b2be"},{url:"/img/weather/sleet.svg",revision:"97d61d89332f912c1ec27bcbe077b7bd"},{url:"/img/weather/snow.svg",revision:"9e88c89c0d6d14174e9665e98932dd80"},{url:"/img/weather/temperature.svg",revision:"d42b62d0b57d5d326506277d87b70435"},{url:"/img/weather/wind.svg",revision:"d75fbe559220d7b2b9577a98a91f38d0"},{url:"/img/workouts/finish.svg",revision:"375196b7ade7c07c3b64ac4cb8b850a8"},{url:"/img/workouts/mountains.svg",revision:"0b94f1d4a050a86ca5ac89ab3ed60f9c"},{url:"/img/workouts/start.svg",revision:"97f6a197b6c2869e0cb2ff0e7697af86"},{url:"/index.html",revision:"ffb68e8025b54e7864e6af3a78a640a6"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.eee1934d.css",revision:null},{url:"/static/css/fork-awesome.min.css",revision:"82c1118c918377daaa71a320ab8eea42"},{url:"/static/css/leaflet.css",revision:"5c761a156eea82263d8bacf1718fe04d"},{url:"/static/css/profile.203e78e2.css",revision:null},{url:"/static/css/reset.e2527ec6.css",revision:null},{url:"/static/css/statistics.40e24e75.css",revision:null},{url:"/static/css/workouts.dd7c6bdb.css",revision:null},{url:"/static/fonts/forkawesome-webfont.eot",revision:"e719f9244c69e28e7d00e725ca1e280e"},{url:"/static/fonts/forkawesome-webfont.svg",revision:"d58987a18774d859d98af95281c1dee5"},{url:"/static/fonts/forkawesome-webfont.ttf",revision:"fe45770c6c277da3921355d971045ea5"},{url:"/static/fonts/forkawesome-webfont.woff",revision:"92cd4d8328b2ae614386a01ff935a9f3"},{url:"/static/fonts/forkawesome-webfont.woff2",revision:"12ee76445f0383c58529169d700b6650"},{url:"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2",revision:null},{url:"/static/img/map.5b26d82b.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-700.b8a7047e.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-italic.0b285c83.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-regular.59a385b4.svg",revision:null},{url:"/static/js/243.27c8fef5.js",revision:null},{url:"/static/js/431.5976068e.js",revision:null},{url:"/static/js/633.9a092c9a.js",revision:null},{url:"/static/js/858.0441e3cc.js",revision:null},{url:"/static/js/93.97ccdf6e.js",revision:null},{url:"/static/js/admin.ab9e5f5f.js",revision:null},{url:"/static/js/app.93333818.js",revision:null},{url:"/static/js/chunk-vendors.e9c5b3a5.js",revision:null},{url:"/static/js/profile.dd30724d.js",revision:null},{url:"/static/js/reset.987a4de8.js",revision:null},{url:"/static/js/statistics.61163b0e.js",revision:null},{url:"/static/js/workouts.39602236.js",revision:null}],{})})); +if(!self.define){let s,e={};const i=(i,t)=>(i=new URL(i+".js",t).href,e[i]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()})).then((()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s})));self.define=(t,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(e[a])return;let n={};const l=s=>i(s,a),c={module:{uri:a},exports:n,require:l};e[a]=Promise.all(t.map((s=>c[s]||l(s)))).then((s=>(r(...s),n)))}}define(["./workbox-79ffe3e0"],(function(s){"use strict";s.setCacheNameDetails({prefix:"fittrackee_client"}),self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"/img/bike.svg",revision:"ab4faed007625b209af72b9b8dce84db"},{url:"/img/weather/breeze.svg",revision:"428c6ccb838f8e91dc4826c5b650a98b"},{url:"/img/weather/clear-day.svg",revision:"f3e8628de2e5089f508f03944f8be951"},{url:"/img/weather/clear-night.svg",revision:"6a0d6579a93e89fdf1a2a95b398e0935"},{url:"/img/weather/cloudy.svg",revision:"c52fe62c9d9fea2cdf5ae2813b3df366"},{url:"/img/weather/fog.svg",revision:"9f4d74289594eb83f9c175d13167a0eb"},{url:"/img/weather/partly-cloudy-day.svg",revision:"f730c2e4f4c014e8b49c9d4a0a141b90"},{url:"/img/weather/partly-cloudy-night.svg",revision:"0d9270901c4dffbc05f3998d835171c8"},{url:"/img/weather/pour-rain.svg",revision:"91eb3159ba8781d258d8c384a8ef987c"},{url:"/img/weather/rain.svg",revision:"c52ca88ce0ddf4de0fc29167e578b2be"},{url:"/img/weather/sleet.svg",revision:"97d61d89332f912c1ec27bcbe077b7bd"},{url:"/img/weather/snow.svg",revision:"9e88c89c0d6d14174e9665e98932dd80"},{url:"/img/weather/temperature.svg",revision:"d42b62d0b57d5d326506277d87b70435"},{url:"/img/weather/wind.svg",revision:"d75fbe559220d7b2b9577a98a91f38d0"},{url:"/img/workouts/finish.svg",revision:"375196b7ade7c07c3b64ac4cb8b850a8"},{url:"/img/workouts/mountains.svg",revision:"0b94f1d4a050a86ca5ac89ab3ed60f9c"},{url:"/img/workouts/start.svg",revision:"97f6a197b6c2869e0cb2ff0e7697af86"},{url:"/index.html",revision:"0340d88565be6c50ba72e43995533d0e"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.eee1934d.css",revision:null},{url:"/static/css/fork-awesome.min.css",revision:"82c1118c918377daaa71a320ab8eea42"},{url:"/static/css/leaflet.css",revision:"5c761a156eea82263d8bacf1718fe04d"},{url:"/static/css/profile.203e78e2.css",revision:null},{url:"/static/css/reset.e2527ec6.css",revision:null},{url:"/static/css/statistics.40e24e75.css",revision:null},{url:"/static/css/workouts.dd7c6bdb.css",revision:null},{url:"/static/fonts/forkawesome-webfont.eot",revision:"e719f9244c69e28e7d00e725ca1e280e"},{url:"/static/fonts/forkawesome-webfont.svg",revision:"d58987a18774d859d98af95281c1dee5"},{url:"/static/fonts/forkawesome-webfont.ttf",revision:"fe45770c6c277da3921355d971045ea5"},{url:"/static/fonts/forkawesome-webfont.woff",revision:"92cd4d8328b2ae614386a01ff935a9f3"},{url:"/static/fonts/forkawesome-webfont.woff2",revision:"12ee76445f0383c58529169d700b6650"},{url:"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2",revision:null},{url:"/static/img/map.5b26d82b.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-700.b8a7047e.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-italic.0b285c83.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-regular.59a385b4.svg",revision:null},{url:"/static/js/243.27c8fef5.js",revision:null},{url:"/static/js/431.5976068e.js",revision:null},{url:"/static/js/633.9a092c9a.js",revision:null},{url:"/static/js/858.0441e3cc.js",revision:null},{url:"/static/js/93.97ccdf6e.js",revision:null},{url:"/static/js/admin.ab9e5f5f.js",revision:null},{url:"/static/js/app.66d3a1a4.js",revision:null},{url:"/static/js/chunk-vendors.e9c5b3a5.js",revision:null},{url:"/static/js/profile.dd30724d.js",revision:null},{url:"/static/js/reset.987a4de8.js",revision:null},{url:"/static/js/statistics.61163b0e.js",revision:null},{url:"/static/js/workouts.520d24bf.js",revision:null}],{})})); //# sourceMappingURL=service-worker.js.map diff --git a/fittrackee/dist/service-worker.js.map b/fittrackee/dist/service-worker.js.map index d56b1674..b98c9fe5 100644 --- a/fittrackee/dist/service-worker.js.map +++ b/fittrackee/dist/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../../tmp/4d7a19dd14a9d8c70471be31478cf324/service-worker.js"],"sourcesContent":["import {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-core/setCacheNameDetails.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"fittrackee_client\"});\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/img/bike.svg\",\n \"revision\": \"ab4faed007625b209af72b9b8dce84db\"\n },\n {\n \"url\": \"/img/weather/breeze.svg\",\n \"revision\": \"428c6ccb838f8e91dc4826c5b650a98b\"\n },\n {\n \"url\": \"/img/weather/clear-day.svg\",\n \"revision\": \"f3e8628de2e5089f508f03944f8be951\"\n },\n {\n \"url\": \"/img/weather/clear-night.svg\",\n \"revision\": \"6a0d6579a93e89fdf1a2a95b398e0935\"\n },\n {\n \"url\": \"/img/weather/cloudy.svg\",\n \"revision\": \"c52fe62c9d9fea2cdf5ae2813b3df366\"\n },\n {\n \"url\": \"/img/weather/fog.svg\",\n \"revision\": \"9f4d74289594eb83f9c175d13167a0eb\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-day.svg\",\n \"revision\": \"f730c2e4f4c014e8b49c9d4a0a141b90\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-night.svg\",\n \"revision\": \"0d9270901c4dffbc05f3998d835171c8\"\n },\n {\n \"url\": \"/img/weather/pour-rain.svg\",\n \"revision\": \"91eb3159ba8781d258d8c384a8ef987c\"\n },\n {\n \"url\": \"/img/weather/rain.svg\",\n \"revision\": \"c52ca88ce0ddf4de0fc29167e578b2be\"\n },\n {\n \"url\": \"/img/weather/sleet.svg\",\n \"revision\": \"97d61d89332f912c1ec27bcbe077b7bd\"\n },\n {\n \"url\": \"/img/weather/snow.svg\",\n \"revision\": \"9e88c89c0d6d14174e9665e98932dd80\"\n },\n {\n \"url\": \"/img/weather/temperature.svg\",\n \"revision\": \"d42b62d0b57d5d326506277d87b70435\"\n },\n {\n \"url\": \"/img/weather/wind.svg\",\n \"revision\": \"d75fbe559220d7b2b9577a98a91f38d0\"\n },\n {\n \"url\": \"/img/workouts/finish.svg\",\n \"revision\": \"375196b7ade7c07c3b64ac4cb8b850a8\"\n },\n {\n \"url\": \"/img/workouts/mountains.svg\",\n \"revision\": \"0b94f1d4a050a86ca5ac89ab3ed60f9c\"\n },\n {\n \"url\": \"/img/workouts/start.svg\",\n \"revision\": \"97f6a197b6c2869e0cb2ff0e7697af86\"\n },\n {\n \"url\": \"/index.html\",\n \"revision\": \"ffb68e8025b54e7864e6af3a78a640a6\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c61028ca6e9f81bf958e6b66238e2d7c\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"/static/css/admin.73df498d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/app.eee1934d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/fork-awesome.min.css\",\n \"revision\": \"82c1118c918377daaa71a320ab8eea42\"\n },\n {\n \"url\": \"/static/css/leaflet.css\",\n \"revision\": \"5c761a156eea82263d8bacf1718fe04d\"\n },\n {\n \"url\": \"/static/css/profile.203e78e2.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/reset.e2527ec6.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/statistics.40e24e75.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/workouts.dd7c6bdb.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.eot\",\n \"revision\": \"e719f9244c69e28e7d00e725ca1e280e\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.svg\",\n \"revision\": \"d58987a18774d859d98af95281c1dee5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.ttf\",\n \"revision\": \"fe45770c6c277da3921355d971045ea5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff\",\n \"revision\": \"92cd4d8328b2ae614386a01ff935a9f3\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff2\",\n \"revision\": \"12ee76445f0383c58529169d700b6650\"\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/map.5b26d82b.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-700.b8a7047e.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-italic.0b285c83.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-regular.59a385b4.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/243.27c8fef5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.5976068e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.9a092c9a.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.0441e3cc.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.97ccdf6e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.ab9e5f5f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.93333818.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.e9c5b3a5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.dd30724d.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.987a4de8.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.61163b0e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.39602236.js\",\n \"revision\": null\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAiBAA,EAAAA,oBAAiC,CAACC,OAAQ,sBAG1CC,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACN,IAWHC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,OAEb,CAAA"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../../tmp/2f1144200fa4ade12ebf138eec727e99/service-worker.js"],"sourcesContent":["import {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-core/setCacheNameDetails.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"fittrackee_client\"});\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/img/bike.svg\",\n \"revision\": \"ab4faed007625b209af72b9b8dce84db\"\n },\n {\n \"url\": \"/img/weather/breeze.svg\",\n \"revision\": \"428c6ccb838f8e91dc4826c5b650a98b\"\n },\n {\n \"url\": \"/img/weather/clear-day.svg\",\n \"revision\": \"f3e8628de2e5089f508f03944f8be951\"\n },\n {\n \"url\": \"/img/weather/clear-night.svg\",\n \"revision\": \"6a0d6579a93e89fdf1a2a95b398e0935\"\n },\n {\n \"url\": \"/img/weather/cloudy.svg\",\n \"revision\": \"c52fe62c9d9fea2cdf5ae2813b3df366\"\n },\n {\n \"url\": \"/img/weather/fog.svg\",\n \"revision\": \"9f4d74289594eb83f9c175d13167a0eb\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-day.svg\",\n \"revision\": \"f730c2e4f4c014e8b49c9d4a0a141b90\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-night.svg\",\n \"revision\": \"0d9270901c4dffbc05f3998d835171c8\"\n },\n {\n \"url\": \"/img/weather/pour-rain.svg\",\n \"revision\": \"91eb3159ba8781d258d8c384a8ef987c\"\n },\n {\n \"url\": \"/img/weather/rain.svg\",\n \"revision\": \"c52ca88ce0ddf4de0fc29167e578b2be\"\n },\n {\n \"url\": \"/img/weather/sleet.svg\",\n \"revision\": \"97d61d89332f912c1ec27bcbe077b7bd\"\n },\n {\n \"url\": \"/img/weather/snow.svg\",\n \"revision\": \"9e88c89c0d6d14174e9665e98932dd80\"\n },\n {\n \"url\": \"/img/weather/temperature.svg\",\n \"revision\": \"d42b62d0b57d5d326506277d87b70435\"\n },\n {\n \"url\": \"/img/weather/wind.svg\",\n \"revision\": \"d75fbe559220d7b2b9577a98a91f38d0\"\n },\n {\n \"url\": \"/img/workouts/finish.svg\",\n \"revision\": \"375196b7ade7c07c3b64ac4cb8b850a8\"\n },\n {\n \"url\": \"/img/workouts/mountains.svg\",\n \"revision\": \"0b94f1d4a050a86ca5ac89ab3ed60f9c\"\n },\n {\n \"url\": \"/img/workouts/start.svg\",\n \"revision\": \"97f6a197b6c2869e0cb2ff0e7697af86\"\n },\n {\n \"url\": \"/index.html\",\n \"revision\": \"0340d88565be6c50ba72e43995533d0e\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c61028ca6e9f81bf958e6b66238e2d7c\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"/static/css/admin.73df498d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/app.eee1934d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/fork-awesome.min.css\",\n \"revision\": \"82c1118c918377daaa71a320ab8eea42\"\n },\n {\n \"url\": \"/static/css/leaflet.css\",\n \"revision\": \"5c761a156eea82263d8bacf1718fe04d\"\n },\n {\n \"url\": \"/static/css/profile.203e78e2.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/reset.e2527ec6.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/statistics.40e24e75.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/workouts.dd7c6bdb.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.eot\",\n \"revision\": \"e719f9244c69e28e7d00e725ca1e280e\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.svg\",\n \"revision\": \"d58987a18774d859d98af95281c1dee5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.ttf\",\n \"revision\": \"fe45770c6c277da3921355d971045ea5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff\",\n \"revision\": \"92cd4d8328b2ae614386a01ff935a9f3\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff2\",\n \"revision\": \"12ee76445f0383c58529169d700b6650\"\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/map.5b26d82b.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-700.b8a7047e.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-italic.0b285c83.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-regular.59a385b4.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/243.27c8fef5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.5976068e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.9a092c9a.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.0441e3cc.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.97ccdf6e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.ab9e5f5f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.66d3a1a4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.e9c5b3a5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.dd30724d.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.987a4de8.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.61163b0e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.520d24bf.js\",\n \"revision\": null\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAiBAA,EAAAA,oBAAiC,CAACC,OAAQ,sBAG1CC,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACN,IAWHC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,OAEb,CAAA"} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.93333818.js b/fittrackee/dist/static/js/app.66d3a1a4.js similarity index 99% rename from fittrackee/dist/static/js/app.93333818.js rename to fittrackee/dist/static/js/app.66d3a1a4.js index 4d37fbb9..994b9eea 100644 --- a/fittrackee/dist/static/js/app.93333818.js +++ b/fittrackee/dist/static/js/app.66d3a1a4.js @@ -1,2 +1,2 @@ -(function(){var e={5167:function(e,t,n){"use strict";var r=n(9669),a=n.n(r),o=n(8566),s=n(2894),i=n(5801),l=n(2024);const c=a().create({baseURL:(0,l.k)()});c.interceptors.request.use((e=>{const t=new AbortController;e.signal=t.signal;const n=(0,o.a)(e);o.j.set(n,t);const r=s.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const t=`Bearer ${r}`;e.headers&&e.headers.Authorization!==t&&(e.headers.Authorization=`Bearer ${r}`)}return e}),(e=>Promise.reject(e))),c.interceptors.response.use((e=>((0,o.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,o.a)(e.response.config),Promise.reject(e)))),t["Z"]=c},8566:function(e,t,n){"use strict";n.d(t,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:t,url:n,params:r={},data:a={}}=e;return[t,n,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const t=a(e);if(r.has(t)){const e=r.get(t)||{};e?.abort(),r.delete(t)}return t}},2540:function(e,t,n){"use strict";var r=n(9150);function a(){const e=n(4612),t={};return e.keys().forEach((n=>{const r=n.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1){const a=r[1];t[a]=e(n).default}})),t}t["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:a()})},9923:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["unter ",n(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Quellkode"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt-E-Mail des Administrators"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. Anzahl aktiver Nutzer"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. Dateianzahl im zip Archiv"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Neue E-Mail"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Das wasswort wurde zurückgesetzt."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["Trainings existieren"])},IMAGE:e=>{const{normalize:t}=e;return t(["Bild"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:t}=e;return t(["Nutzer"])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Die E-Mail Adresse wurde aktualisiert."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte entfernen"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["Adminstatus"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["Accountstatus"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["Trainingsanzahl"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Fehler bei der GPX-Verarbeitung."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Fehler beim Einlesen der GPX-Datei"])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"Network Error":e=>{const{normalize:t}=e;return t(["Netzwerkfehler."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:t}=e;return t(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:t}=e;return t(["Keine Datei ausgewählt."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Gebe ein gültiges Authentifizierungstoken an."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sportart existiert nicht."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Registrierung erfolgreich."])},"user does not exist":e=>{const{normalize:t}=e;return t(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Du hast keine Berechtigung."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["Vorhergehende"])},NEXT:e=>{const{normalize:t}=e;return t(["Nächste"])}}},s={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autorisieren"])},BACK:e=>{const{normalize:t}=e;return t(["Zurück"])},CANCEL:e=>{const{normalize:t}=e;return t(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:t}=e;return t(["Deaktivieren"])},EDIT:e=>{const{normalize:t}=e;return t(["Bearbeiten"])},ENABLE:e=>{const{normalize:t}=e;return t(["Aktivieren"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmelden"])},NO:e=>{const{normalize:t}=e;return t(["Nein"])},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESET:e=>{const{normalize:t}=e;return t(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Speichern"])},YES:e=>{const{normalize:t}=e;return t(["Ja"])}},i={ABOUT:e=>{const{normalize:t}=e;return t(["Über"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bestätigung"])},CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["Tag"]),t(["Tage"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["Dokumentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["hier"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Versteckt"])},HOME:e=>{const{normalize:t}=e;return t(["Startseite"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["sortiert nach"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sortieren"])},ASC:e=>{const{normalize:t}=e;return t(["aufsteigend"])},DESC:e=>{const{normalize:t}=e;return t(["absteigend"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["pro Seite"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Dieser Monat"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
                                                                              Bitte versuche es später noch einmal oder kontaktiere den Administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Etwas lief schief"])}},u={},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Pendeln)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken (elektrisch)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rudern"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Gehen"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistik"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["Woche"])},month:e=>{const{normalize:t}=e;return t(["Monat"])},year:e=>{const{normalize:t}=e;return t(["Jahr"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:t}=e;return t(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Gebe ein Passwort ein"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte fordere ein neues Passworts an."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LOG_IN:e=>{const{normalize:t}=e;return t(["Anmelden"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmeldung"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Abmelden"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Passwort vergessen?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["schwach"])},AVERAGE:e=>{const{normalize:t}=e;return t(["mittel"])},GOOD:e=>{const{normalize:t}=e;return t(["gut"])},STRONG:e=>{const{normalize:t}=e;return t(["start"])},LABEL:e=>{const{normalize:t}=e;return t(["Passwortstärke"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},allUppercase:e=>{const{normalize:t}=e;return t(["Schreibe einige, aber nicht alle Buchstaben groß."])},capitalization:e=>{const{normalize:t}=e;return t(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:t}=e;return t(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},recentYears:e=>{const{normalize:t}=e;return t(["Vermeide Angabe von letzten Jahreszahlen."])},associatedYears:e=>{const{normalize:t}=e;return t(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},sequences:e=>{const{normalize:t}=e;return t(["Vermeide gebräuchliche Zeichenfolgen."])},repeated:e=>{const{normalize:t}=e;return t(["Vermeide wiederholungen von Wörtern und Zeichen."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},anotherWord:e=>{const{normalize:t}=e;return t(["Füge weitere weniger gebräuchliche Wörter hinzu."])},useWords:e=>{const{normalize:t}=e;return t(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])},noNeed:e=>{const{normalize:t}=e;return t(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:t}=e;return t(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Dein Passwort wurde aktualisiert. Klicke ",n(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Zurück zum Profil"])},BIO:e=>{const{normalize:t}=e;return t(["Biographie"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Geburtsdatum"])},EDIT:e=>{const{normalize:t}=e;return t(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Bitte ",n(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Vorname"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Erster Tag der Woche"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nachname"])},LOCATION:e=>{const{normalize:t}=e;return t(["Ort"])},MONDAY:e=>{const{normalize:t}=e;return t(["Montag"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Bildausgabe"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Bild aktualisieren"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Bild entfernen"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Einstellungsausgabe"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Regirierungsdatum"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sportarten-Einstellungsausgabe"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["Konto"])},APPS:e=>{const{normalize:t}=e;return t(["Anwendungen"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen"])},PROFILE:e=>{const{normalize:t}=e;return t(["Profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["Sportarten"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},COLOR:e=>{const{normalize:t}=e;return t(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["aktiv"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["Geschwindigkeitsschwellenwert für Stopp"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Einheiten für die Distanz"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperiales System (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metrisches System (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Zeitzone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["E-Mail zur Kontobestätigung erneut senden"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Entschuldigung, die Registrierung ist deaktiviert."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Dieser Account ist inaktiv."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["Benutzerbild"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])}},S={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["Analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["Aufstieg"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschnittsgeschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["zurück zum Training"])},DATE:e=>{const{normalize:t}=e;return t(["Datum"])},DESCENT:e=>{const{normalize:t}=e;return t(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["zeige Filter"])},DISTANCE:e=>{const{normalize:t}=e;return t(["Entfernung"])},DURATION:e=>{const{normalize:t}=e;return t(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:t}=e;return t(["Höhe"])},END:e=>{const{normalize:t}=e;return t(["Ende"])},FROM:e=>{const{normalize:t}=e;return t(["Von"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["verberge Filter"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Nächstes Training"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Keine Trainings."])},NOTES:e=>{const{normalize:t}=e;return t(["Anmerkungen"])},PAUSES:e=>{const{normalize:t}=e;return t(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Vorheriges Training"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["Aufzeichnung"]),t(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["Segment"]),t(["Segmente"])])},SPEED:e=>{const{normalize:t}=e;return t(["Geschwindigkeit"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["Sportart"]),t(["Sportarten"])])},START:e=>{const{normalize:t}=e;return t(["Start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:t}=e;return t(["Titel"])},TO:e=>{const{normalize:t}=e;return t(["bis"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Füge erstes Training hinzu!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["Temperatur"])},WIND:e=>{const{normalize:t}=e;return t(["Wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNO"])},NE:e=>{const{normalize:t}=e;return t(["NO"])},ENE:e=>{const{normalize:t}=e;return t(["ONO"])},E:e=>{const{normalize:t}=e;return t(["O"])},ESE:e=>{const{normalize:t}=e;return t(["OSO"])},SE:e=>{const{normalize:t}=e;return t(["SO"])},SSE:e=>{const{normalize:t}=e;return t(["SSO"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["klarer Tag"])},"clear-night":e=>{const{normalize:t}=e;return t(["klare Nacht"])},cloudy:e=>{const{normalize:t}=e;return t(["wolkig"])},fog:e=>{const{normalize:t}=e;return t(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:t}=e;return t(["Regen"])},sleet:e=>{const{normalize:t}=e;return t(["Schneeregen"])},snow:e=>{const{normalize:t}=e;return t(["Schnee"])},wind:e=>{const{normalize:t}=e;return t(["Wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["mit .gpx Datei"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["ohne .gpx Datei"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["Training"]),t(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["oder .zip Datei mit .gpx Dateien"])}},E={about:r,admin:a,api:o,buttons:s,common:i,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:_,workouts:S}},8757:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["under ",n(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Source code"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activate account"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Add/remove admin rights, delete user account."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Administrator email for contact"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. number of active users"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["If 0, no limitation on registration."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. files of zip archive"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to delete ",n(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to reset ",n(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Current email"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["New email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The password has been reset."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["workouts exist"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Update application configuration (maximum number of registered users, maximum files size)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Update email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["user"]),t(["users"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The email address has been updated."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Remove admin rights"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["registration date"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["account status"])},USERNAME:e=>{const{normalize:t}=e;return t(["username"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["workout count"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: valid email must be provided."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Error during gpx processing."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Error during gpx file parsing."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Invalid credentials."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"Network Error":e=>{const{normalize:t}=e;return t(["Network Error."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:t}=e;return t(["No file provided."])},"no selected file":e=>{const{normalize:t}=e;return t(["No selected file."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Provide a valid auth token."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sport does not exist."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expired. Please log in again."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Successfully registered."])},"user does not exist":e=>{const{normalize:t}=e;return t(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["You do not have permissions."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["previous"])},NEXT:e=>{const{normalize:t}=e;return t(["next"])}}},s={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Authorize"])},BACK:e=>{const{normalize:t}=e;return t(["Back"])},CANCEL:e=>{const{normalize:t}=e;return t(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Delete my account"])},DISABLE:e=>{const{normalize:t}=e;return t(["Disable"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit"])},ENABLE:e=>{const{normalize:t}=e;return t(["Enable"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Log in"])},NO:e=>{const{normalize:t}=e;return t(["No"])},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESET:e=>{const{normalize:t}=e;return t(["Reset"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Submit"])},YES:e=>{const{normalize:t}=e;return t(["Yes"])}},i={ABOUT:e=>{const{normalize:t}=e;return t(["about"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["day"]),t(["days"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Displayed"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation"])},HERE:e=>{const{normalize:t}=e;return t(["here"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Hidden"])},HOME:e=>{const{normalize:t}=e;return t(["Home"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["order by"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sort"])},ASC:e=>{const{normalize:t}=e;return t(["ascending"])},DESC:e=>{const{normalize:t}=e;return t(["descending"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["This month"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["The application seems to have encountered some issues.
                                                                              Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page not found"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Something went wrong"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Id"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Application description"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Issue at"])},NAME:e=>{const{normalize:t}=e;return t(["Application name"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:t}=e;return t(["Application URL"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["The application ",n(r(0))," is requesting:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2 applications"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Authorize ",n(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Delete application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Add an application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application not found!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["All existing associated tokens have been revoked."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking (Electric)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rowing"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Walking"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistics"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["month"])},year:e=>{const{normalize:t}=e;return t(["year"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Current password"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Enter a password"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["hide password"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Invalid token, please request a new password reset."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LOG_IN:e=>{const{normalize:t}=e;return t(["log in"])},LOGIN:e=>{const{normalize:t}=e;return t(["Login"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Logout"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["New password"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["No users found."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Password"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["At least 8 characters required."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Forgot password?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["weak"])},AVERAGE:e=>{const{normalize:t}=e;return t(["average"])},GOOD:e=>{const{normalize:t}=e;return t(["good"])},STRONG:e=>{const{normalize:t}=e;return t(["strong"])},LABEL:e=>{const{normalize:t}=e;return t(["password strength"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Avoid predictable letter substitutions like ","@"," for a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Avoid reversed spellings of common words."])},allUppercase:e=>{const{normalize:t}=e;return t(["Capitalize some, but not all letters."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalize more than the first letter."])},dates:e=>{const{normalize:t}=e;return t(["Avoid dates and years that are associated with you."])},recentYears:e=>{const{normalize:t}=e;return t(["Avoid recent years."])},associatedYears:e=>{const{normalize:t}=e;return t(["Avoid years that are associated with you."])},sequences:e=>{const{normalize:t}=e;return t(["Avoid common character sequences."])},repeated:e=>{const{normalize:t}=e;return t(["Avoid repeated words and characters."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Use longer keyboard patterns and change typing direction multiple times."])},anotherWord:e=>{const{normalize:t}=e;return t(["Add more words that are less common."])},useWords:e=>{const{normalize:t}=e;return t(["Use multiple words, but avoid common phrases."])},noNeed:e=>{const{normalize:t}=e;return t(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:t}=e;return t(["If you use this password elsewhere, you should change it."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your password have been updated. Click ",n(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Account edition"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Back to profile"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Birth date"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Please ",n(r(0))," to change your email address again or contact the administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["First name"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["First day of week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Last name"])},LOCATION:e=>{const{normalize:t}=e;return t(["Location"])},MONDAY:e=>{const{normalize:t}=e;return t(["Monday"])},PICTURE:e=>{const{normalize:t}=e;return t(["Picture"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Picture edition"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Update picture"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Remove picture"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Preferences edition"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registration date"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sports preferences edition"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["account"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["picture"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["preferences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profile"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["active"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["stopped speed threshold"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Units for distance"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperial system (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metric system (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Timezone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Resend account confirmation email"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registration is disabled."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset your password"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["This user account is inactive."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["user picture"])},USERNAME:e=>{const{normalize:t}=e;return t(["Username"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])}},S={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Add a workout"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analysis"])},ASCENT:e=>{const{normalize:t}=e;return t(["ascent"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["ave. speed"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["average speed"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["back to workout"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["display filters"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["duration"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Edit the workout"])},ELEVATION:e=>{const{normalize:t}=e;return t(["elevation"])},END:e=>{const{normalize:t}=e;return t(["end"])},FROM:e=>{const{normalize:t}=e;return t(["from"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["hide filters"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. altitude"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max files"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max size"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Next workout"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["No file provided"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["no folder inside"])},NO_MAP:e=>{const{normalize:t}=e;return t(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["No next workout"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["No previous workout"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["No records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["No workouts."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Previous workout"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Ave. speed"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Farthest distance"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Highest ascent"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Longest duration"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["remaining characters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["speed"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["start elevation axis at zero"])},TITLE:e=>{const{normalize:t}=e;return t(["title"])},TO:e=>{const{normalize:t}=e;return t(["to"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Upload one!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidity"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperature"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["clear day"])},"clear-night":e=>{const{normalize:t}=e;return t(["clear night"])},cloudy:e=>{const{normalize:t}=e;return t(["cloudy"])},fog:e=>{const{normalize:t}=e;return t(["fog"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["partly cloudy night"])},rain:e=>{const{normalize:t}=e;return t(["rain"])},sleet:e=>{const{normalize:t}=e;return t(["sleet"])},snow:e=>{const{normalize:t}=e;return t(["snow"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["with .gpx file"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["without .gpx file"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["workout"]),t(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["or .zip file containing .gpx files"])}},E={about:r,admin:a,api:o,buttons:s,common:i,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:_,workouts:S}},6625:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["sous licence ",n(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Code source (en)"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activer le compte"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Email de l'administrateur pour contact "])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Nombre maximum d'utilisateurs actifs "])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Si égal à 0, pas limite d'inscription"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des archives zip (en Mo) "])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:t}=e;return t(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Nombre max. de fichiers dans une archive zip "])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",n(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",n(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Nouvelle adresse email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Le mot de passe a été réinitialisé."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["des séances existent"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Changer l'email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["utilisateur"]),t(["utilisateurs"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["L'adresse email a été mise à jour."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Retirer les droits d'admin"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["status administrateur"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["statut du compte"])},USERNAME:e=>{const{normalize:t}=e;return t(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["nombre de séances"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Erreur lors du traitement du fichier gpx."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Erreur lors de l'analyse du fichier."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Jeton de connexion, merci de vous reconnecter."])},"no file part":e=>{const{normalize:t}=e;return t(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:t}=e;return t(["Pas de fichier sélectionné."])},"Network Error":e=>{const{normalize:t}=e;return t(["Erreur réseau."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Merci de fournir un jeton de connexion valide."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Ce sport n'existe pas."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Inscription validée."])},"user does not exist":e=>{const{normalize:t}=e;return t(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Une adresse électronique doit être fournie pour le contact de l'administrateur"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["précédent"])},NEXT:e=>{const{normalize:t}=e;return t(["suivant"])}}},s={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autoriser"])},BACK:e=>{const{normalize:t}=e;return t(["Retour"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:t}=e;return t(["Désactiver"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier"])},ENABLE:e=>{const{normalize:t}=e;return t(["Activer"])},FILTER:e=>{const{normalize:t}=e;return t(["Filtrer"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},NO:e=>{const{normalize:t}=e;return t(["Non"])},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},RESET:e=>{const{normalize:t}=e;return t(["Réinit."])},SUBMIT:e=>{const{normalize:t}=e;return t(["Valider"])},YES:e=>{const{normalize:t}=e;return t(["Oui"])}},i={ABOUT:e=>{const{normalize:t}=e;return t(["à propos"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["jour"]),t(["jours"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Affiché"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["ici"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Masqué"])},HOME:e=>{const{normalize:t}=e;return t(["Accueil"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["trier par "])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["tri"])},ASC:e=>{const{normalize:t}=e;return t(["ascendant"])},DESC:e=>{const{normalize:t}=e;return t(["descendant"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Ce mois-ci"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["L'application semble rencontrer quelques problèmes.
                                                                              Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page introuvable"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Une erreur s'est produite"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Créée le"])},NAME:e=>{const{normalize:t}=e;return t(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:t}=e;return t(["URL de l'application"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["L'application ",n(r(0))," demande les accès suivants :"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["Applications OAuth2"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Autoriser ",n(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application introuvable !"])},NO_APPS:e=>{const{normalize:t}=e;return t(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Tous les jetons associés existants ont été révoqués."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["VTT (Électrique)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Aviron"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Marche"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistiques"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["semaine"])},month:e=>{const{normalize:t}=e;return t(["mois"])},year:e=>{const{normalize:t}=e;return t(["année"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:t}=e;return t(["Courriel"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Saisissez un mot de passe"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LOG_IN:e=>{const{normalize:t}=e;return t(["connecter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Se déconnecter"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["8 caractères minimum."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Mot de passe oublié ?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["faible"])},AVERAGE:e=>{const{normalize:t}=e;return t(["moyenne"])},GOOD:e=>{const{normalize:t}=e;return t(["bonne"])},STRONG:e=>{const{normalize:t}=e;return t(["forte"])},LABEL:e=>{const{normalize:t}=e;return t(["robustesse du mot de passe"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Évitez les orthographes inversées des mots courants."])},allUppercase:e=>{const{normalize:t}=e;return t(["Mettez quelques lettres en majuscules, mais pas toutes."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:t}=e;return t(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},recentYears:e=>{const{normalize:t}=e;return t(["Évitez les dernières années."])},associatedYears:e=>{const{normalize:t}=e;return t(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},sequences:e=>{const{normalize:t}=e;return t(["Évitez les séquences de caractères courantes."])},repeated:e=>{const{normalize:t}=e;return t(["Évitez les mots et les caractères répétés."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},anotherWord:e=>{const{normalize:t}=e;return t(["Ajoutez des mots moins courants."])},useWords:e=>{const{normalize:t}=e;return t(["Utilisez plusieurs mots, mais évitez les phrases courantes."])},noNeed:e=>{const{normalize:t}=e;return t(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:t}=e;return t(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Votre mot de passe a été mis à jour. Cliquez ",n(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Revenir au profil"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Date de naissance"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Veuillez vous ",n(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Prénom"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nom"])},LOCATION:e=>{const{normalize:t}=e;return t(["Lieu"])},MONDAY:e=>{const{normalize:t}=e;return t(["Lundi"])},PICTURE:e=>{const{normalize:t}=e;return t(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour de l'image de profil"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Mettre à jour l'image"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Supprimer"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Date d'inscription"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences des sports"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["compte"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["image"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["préférences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Unités pour les distances"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Système impérial (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Système métrique (m, km)"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["actif"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["seuil de vitesse arrêtée"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès."])},TIMEZONE:e=>{const{normalize:t}=e;return t(["Fuseau horaire"])}},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinitialiser votre mot de passe"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Le compte de cet utilisateur est inactif."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["photo de l'utilisateur"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])}},S={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["revenir à la séance"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["afficher les filtres"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["durée"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Modifier la séance"])},ELEVATION:e=>{const{normalize:t}=e;return t(["altitude"])},END:e=>{const{normalize:t}=e;return t(["fin"])},FROM:e=>{const{normalize:t}=e;return t(["à partir de"])},GPX_FILE:e=>{const{normalize:t}=e;return t(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["masquer les filtres"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude max"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["taille max. "])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance suivante"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["pas de répertoire"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Pas de séances."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance précédente"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["vitesse"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["début"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:t}=e;return t(["titre"])},TO:e=>{const{normalize:t}=e;return t(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajoutez votre première séance !"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidité"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["température"])},WIND:e=>{const{normalize:t}=e;return t(["vent"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSO"])},SW:e=>{const{normalize:t}=e;return t(["SO"])},WSW:e=>{const{normalize:t}=e;return t(["OSO"])},W:e=>{const{normalize:t}=e;return t(["O"])},WNW:e=>{const{normalize:t}=e;return t(["ONO"])},NW:e=>{const{normalize:t}=e;return t(["NO"])},NNW:e=>{const{normalize:t}=e;return t(["NNO"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["ensoleillé"])},"clear-night":e=>{const{normalize:t}=e;return t(["nuit claire"])},cloudy:e=>{const{normalize:t}=e;return t(["nuageux"])},fog:e=>{const{normalize:t}=e;return t(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:t}=e;return t(["pluie"])},sleet:e=>{const{normalize:t}=e;return t(["neige fondue"])},snow:e=>{const{normalize:t}=e;return t(["neige"])},wind:e=>{const{normalize:t}=e;return t(["venteux"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["avec un fichier .gpx"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["sans fichier .gpx"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["séance"]),t(["séances"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["ou une archive .zip contenant des fichiers .gpx"])}},E={about:r,admin:a,api:o,buttons:s,common:i,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:_,workouts:S}},6331:function(e,t,n){"use strict";var r=n(6775),a=n(6429),o=n(9963),s=n(2343),i=n(5205);(0,i.z)("/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});var l=n(6252),c=n(2262),u=n(3577);const d=e=>((0,l.dD)("data-v-2c73279e"),e=e(),(0,l.Cn)(),e),m={id:"footer"},_={class:"footer-items"},S={class:"footer-item"},E=d((()=>(0,l._)("strong",null,"FitTrackee",-1))),T=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),p={class:"footer-item"},A={key:0,class:"footer-item bullet"},O={key:1,class:"footer-item"},U=["href"],R=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),I={class:"footer-item"},g={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"};var N=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const t=e,{adminContact:n,version:r}=(0,c.BK)(t);return(e,t)=>{const a=(0,l.up)("router-link");return(0,l.wg)(),(0,l.iD)("div",m,[(0,l._)("div",_,[(0,l._)("div",S,[E,(0,l.Uk)(" v"+(0,u.zw)((0,c.SU)(r)),1)]),T,(0,l._)("div",p,[(0,l.Wm)(a,{to:"/about"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("common.ABOUT")),1)])),_:1})]),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(n)}`},(0,u.zw)(e.$t("common.CONTACT")),9,U)])):(0,l.kq)("",!0),R,(0,l._)("div",I,[(0,l._)("a",g,(0,u.zw)(e.$t("common.DOCUMENTATION")),1)])])])}}}),z=n(3744);const h=(0,z.Z)(N,[["__scopeId","data-v-2c73279e"]]);var w=h,f=(n(7658),n(6595)),v=n(5801),C=n(9917),D=n(6287);const k=e=>((0,l.dD)("data-v-95c1cc02"),e=e(),(0,l.Cn)(),e),P={id:"nav"},L={class:"nav-container"},M={class:"nav-app-name"},b={class:"nav-items-close"},y=k((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),G={key:0,class:"nav-items-group"},F=k((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),W={class:"nav-items-user-menu"},K={key:0,class:"nav-items-group"},Y={class:"nav-item nav-profile-img"},x={key:1,class:"nav-items-group"},B=k((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var $=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:t}){const n=(0,C.o)(),r=(0,l.Fl)((()=>n.getters[v.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>n.getters[v.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>n.getters[v.SY.GETTERS.LANGUAGE])),s=(0,c.iH)(!1);function i(){s.value=!0,t("menuInteraction",!0)}function d(){s.value=!1,t("menuInteraction",!1)}function m(e){n.dispatch(v.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function _(){n.dispatch(v.YN.ACTIONS.LOGOUT)}return(e,t)=>{const n=(0,l.up)("router-link"),S=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",L,[(0,l._)("div",M,[(0,l._)("div",{class:"nav-item app-name",onClick:t[0]||(t[0]=t=>e.$router.push("/"))}," FitTrackee ")]),(0,l._)("div",{class:(0,u.C_)(["nav-icon-open",{"menu-open":s.value}])},[(0,l._)("i",{class:"fa fa-bars hamburger-icon",onClick:t[1]||(t[1]=e=>i())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":s.value}])},[(0,l._)("div",b,[y,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!s.value}]),onClick:t[2]||(t[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:t[3]||(t[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",G,[(0,l.Wm)(n,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,u.kC)(e.$t("workouts.WORKOUT",2))),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts/add"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("workouts.ADD_WORKOUT")),1)])),_:1}),(0,c.SU)(a)&&(0,c.SU)(r).admin?((0,l.wg)(),(0,l.j4)(n,{key:0,class:"nav-item",to:"/admin"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("admin.ADMIN")),1)])),_:1})):(0,l.kq)("",!0),F])):(0,l.kq)("",!0)]),(0,l._)("div",W,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",K,[(0,l._)("div",Y,[(0,l.Wm)(f.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(n,{class:"nav-item",to:"/profile",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(r).username),1)])),_:1}),(0,l._)("div",{class:"nav-item nav-link",onClick:_},(0,u.zw)(e.$t("user.LOGOUT")),1)])):((0,l.wg)(),(0,l.iD)("div",x,[(0,l.Wm)(n,{class:"nav-item",to:"/login",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.LOGIN")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/register",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.REGISTER")),1)])),_:1})])),(0,c.SU)(D.mT)&&(0,c.SU)(o)?((0,l.wg)(),(0,l.j4)(S,{key:2,class:"nav-item",options:(0,c.SU)(D.mT),selected:(0,c.SU)(o),onSelected:m},{default:(0,l.w5)((()=>[B])),_:1},8,["options","selected"])):(0,l.kq)("",!0)])],2)])])}}});const Z=(0,z.Z)($,[["__scopeId","data-v-95c1cc02"]]);var H=Z,q=n(7167);const V={id:"no-config"},j={class:"error-page"},X={class:"error-img"},J=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",V,[(0,l._)("div",j,[(0,l._)("div",X,[(0,l.Wm)(q.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,J)])]))}});const ee=(0,z.Z)(Q,[["__scopeId","data-v-47759238"]]);var te=ee;const ne=(0,l._)("div",{id:"top"},null,-1),re={key:0,class:"app-container"},ae={class:"app-loading"},oe={class:"container scroll"},se=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),ie=[se];var le=(0,l.aZ)({__name:"App",setup(e){const t=(0,C.o)(),n=(0,l.Fl)((()=>t.getters[v.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>t.getters[v.SY.GETTERS.APP_LOADING])),a=(0,c.iH)(!1),o=(0,c.iH)(!1);function s(e){a.value=e}function i(e){return e.getBoundingClientRect().top=0}function d(){window.onscroll=()=>{const e=document.querySelector("#bottom");o.value=null!==e&&i(e)}}function m(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((()=>{o.value=!1}),300)}function _(){let e="en";try{const t=navigator.language.split("-")[0];t in D.v1&&(e=t)}catch(n){e="en"}t.dispatch(v.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{_(),t.dispatch(v.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,t)=>{const i=(0,l.up)("Loader"),d=(0,l.up)("router-view");return(0,l.wg)(),(0,l.iD)(l.HY,null,[ne,(0,l.Wm)(H,{onMenuInteraction:s}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",re,[(0,l._)("div",ae,[(0,l.Wm)(i)])])):((0,l.wg)(),(0,l.iD)("div",{key:1,class:(0,u.C_)(["app-container",{"hide-scroll":a.value}])},[(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(te,{key:1}))],2)),(0,l._)("div",oe,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},ie,2)]),(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(w,{key:2,version:(0,c.SU)(n)?(0,c.SU)(n).version:"",adminContact:(0,c.SU)(n).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const ce=le;var ue=ce,de=n(2540),me=n(9160),_e=n(2894);const Se={class:"alert-message"},Ee=["innerHTML"];var Te=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",Se,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(n))},null,8,Ee)]))}});const pe=(0,z.Z)(Te,[["__scopeId","data-v-69d7e4ff"]]);var Ae=pe,Oe=n(2531);const Ue={class:"custom-textarea"},Re=["id","name","maxLenght","disabled"],Ie={class:"remaining-chars"};var ge=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:t}){const n=e,r=(0,c.iH)("");function a(e){t("updateValue",e.target.value)}return(0,l.YP)((()=>n.input),(e=>{r.value=null===e?"":e})),(t,n)=>((0,l.wg)(),(0,l.iD)("div",Ue,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLenght:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":n[0]||(n[0]=e=>r.value=e),onInput:a},null,40,Re),[[o.nr,r.value]]),(0,l._)("div",Ie,(0,u.zw)(t.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const Ne=(0,z.Z)(ge,[["__scopeId","data-v-8cf5cc64"]]);var ze=Ne,he=n(3649);const we=(0,l.Uk)(" "+(0,u.zw)(" ")+" ");var fe=(0,l.aZ)({__name:"Distance",props:{distance:null,unitFrom:null,useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const t=e,{digits:n,displayUnit:r,distance:a,speed:o,strong:s,unitFrom:i,useImperialUnits:d}=(0,c.BK)(t),m=(0,l.Fl)((()=>d.value?he.Dl[i.value].defaultTarget:i.value)),_=(0,l.Fl)((()=>d.value?(0,he.sC)(a.value,i.value,m.value,n.value):parseFloat(a.value.toFixed(n.value))));return(e,t)=>((0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("span",{class:(0,u.C_)(["distance",{strong:(0,c.SU)(s)}])},(0,u.zw)((0,c.SU)(_)),3),we,(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("span",{key:0,class:(0,u.C_)(["unit",{strong:(0,c.SU)(s)}])},(0,u.zw)((0,c.SU)(m))+(0,u.zw)((0,c.SU)(o)?"/h":""),3)):(0,l.kq)("",!0)],64))}});const ve=(0,z.Z)(fe,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,De=n(2201);const ke={class:"dropdown-wrapper"},Pe={key:0,class:"dropdown-list"},Le=["onClick"];var Me=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:t}){const n=e,r=(0,De.yj)(),a=(0,c.iH)(!1),o=n.options.map((e=>e));function s(){a.value=!a.value}function i(e){t("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(t,n)=>((0,l.wg)(),(0,l.iD)("div",ke,[(0,l._)("div",{class:"dropdown-selected",onClick:s},[(0,l.WI)(t.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",Pe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:t.value===e.selected}]),key:n,onClick:e=>i(t)},(0,u.zw)(t.label),11,Le)))),128))])):(0,l.kq)("",!0)]))}});const be=(0,z.Z)(Me,[["__scopeId","data-v-2d3b4eac"]]);var ye=be;const Ge={class:"error-message"},Fe={key:0},We={key:1};var Ke=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",Ge,[Array.isArray((0,c.SU)(n))?((0,l.wg)(),(0,l.iD)("ul",Fe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(n),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{key:n},(0,u.zw)(e.$t(t)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",We,(0,u.zw)(e.$t((0,c.SU)(n))),1))]))}});const Ye=(0,z.Z)(Ke,[["__scopeId","data-v-2659a79a"]]);var xe=Ye;const Be={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},$e=(0,l._)("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),Ze=(0,l._)("g",null,[(0,l._)("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),(0,l._)("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),He=[$e,Ze];function qe(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Be,He)}var Ve={name:"CyclingSport"};const je=(0,z.Z)(Ve,[["render",qe]]);var Xe=je;const Je={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Qe=(0,l._)("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),et=(0,l._)("g",{id:"g147"},[(0,l._)("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),(0,l._)("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),tt=[Qe,et];function nt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Je,tt)}var rt={name:"CyclingTransport"};const at=(0,z.Z)(rt,[["render",nt]]);var ot=at;const st={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},it=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),lt=(0,l._)("g",null,[(0,l._)("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),(0,l._)("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),ct=[it,lt];function ut(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",st,ct)}var dt={name:"Hiking"};const mt=(0,z.Z)(dt,[["render",ut]]);var _t=mt;const St={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),Tt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),(0,l._)("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),(0,l._)("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),pt=[Et,Tt];function At(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",St,pt)}var Ot={name:"MountainBiking"};const Ut=(0,z.Z)(Ot,[["render",At]]);var Rt=Ut;const It={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},gt=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),Nt=[gt];function zt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",It,Nt)}var ht={name:"MountainBikingElectric"};const wt=(0,z.Z)(ht,[["render",zt]]);var ft=wt;const vt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},Ct=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),Dt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),(0,l._)("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),kt=[Ct,Dt];function Pt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,kt)}var Lt={name:"Rowing"};const Mt=(0,z.Z)(Lt,[["render",Pt]]);var bt=Mt;const yt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},Gt=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),Ft=(0,l._)("g",null,[(0,l._)("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),(0,l._)("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),Wt=[Gt,Ft];function Kt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",yt,Wt)}var Yt={name:"Running"};const xt=(0,z.Z)(Yt,[["render",Kt]]);var Bt=xt;const $t={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},Zt=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),Ht=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),(0,l._)("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),qt=[Zt,Ht];function Vt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",$t,qt)}var jt={name:"SkiingAlpine"};const Xt=(0,z.Z)(jt,[["render",Vt]]);var Jt=Xt;const Qt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},en=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),tn=(0,l._)("g",null,[(0,l._)("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),nn=[en,tn];function rn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Qt,nn)}var an={name:"SkiingCrossCountry"};const on=(0,z.Z)(an,[["render",rn]]);var sn=on;const ln={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},cn=(0,l.uE)('silhouette of a person with snowshoes',6),un=[cn];function dn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",ln,un)}var mn={name:"Snowshoes"};const _n=(0,z.Z)(mn,[["render",dn]]);var Sn=_n;const En={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},Tn=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),pn=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),(0,l._)("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),An=[Tn,pn];function On(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",En,An)}var Un={name:"Trail"};const Rn=(0,z.Z)(Un,[["render",On]]);var In=Rn;const gn={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Nn=(0,l.uE)('silhouette of a walking person',3),zn=[Nn];function hn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",gn,zn)}var wn={name:"Walking"};const fn=(0,z.Z)(wn,[["render",hn]]);var vn=fn;const Cn=["title"];var Dn=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const t=e,{color:n,sportLabel:r,title:a}=(0,c.BK)(t),o=(0,l.f3)("sportColors");return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(n)?(0,c.SU)(n):(0,c.SU)(o)[(0,c.SU)(r)]}),title:(0,c.SU)(a)?(0,c.SU)(a):e.$t(`sports.${(0,c.SU)(r)}.LABEL`)},["Cycling (Sport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Xe,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ot,{key:1})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(_t,{key:2})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Rt,{key:3})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ft,{key:4})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(bt,{key:5})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Bt,{key:6})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Jt,{key:7})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(sn,{key:8})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Sn,{key:9})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(In,{key:10})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:11})):(0,l.kq)("",!0)],12,Cn))}});const kn=Dn;var Pn=kn;const Ln={class:"loader"};function Mn(e,t){return(0,l.wg)(),(0,l.iD)("div",Ln)}const bn={},yn=(0,z.Z)(bn,[["render",Mn],["__scopeId","data-v-4c9921ee"]]);var Gn=yn;const Fn={id:"modal"},Wn={class:"custom-modal"},Kn={key:0,class:"modal-message"},Yn={key:1,class:"modal-message"},xn={class:"modal-buttons"};var Bn=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:t}){const n=e,r=(0,C.o)(),{title:a,message:o,strongMessage:s}=(0,c.BK)(n),i=(0,l.Fl)((()=>r.getters[v.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(v.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,n)=>{const r=(0,l.up)("i18n-t"),d=(0,l.up)("ErrorMessage"),m=(0,l.up)("Card");return(0,l.wg)(),(0,l.iD)("div",Fn,[(0,l._)("div",Wn,[(0,l.Wm)(m,null,{title:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(a)),1)])),content:(0,l.w5)((()=>[(0,c.SU)(s)?((0,l.wg)(),(0,l.iD)("div",Kn,[(0,l.Wm)(r,{keypath:(0,c.SU)(o)},{default:(0,l.w5)((()=>[(0,l._)("span",null,(0,u.zw)((0,c.SU)(s)),1)])),_:1},8,["keypath"])])):((0,l.wg)(),(0,l.iD)("div",Yn,(0,u.zw)((0,c.SU)(o)),1)),(0,c.SU)(i)?((0,l.wg)(),(0,l.j4)(d,{key:2,message:(0,c.SU)(i)},null,8,["message"])):(0,l.kq)("",!0),(0,l._)("div",xn,[(0,c.SU)(i)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:n[0]||(n[0]=e=>t("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:n[1]||(n[1]=e=>t("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(i)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const $n=(0,z.Z)(Bn,[["__scopeId","data-v-e8fcfaba"]]);var Zn=$n;const Hn=[{target:Ae,name:"AlertMessage"},{target:Oe.Z,name:"Card"},{target:ze,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:ye,name:"Dropdown"},{target:xe,name:"ErrorMessage"},{target:Gn,name:"Loader"},{target:Zn,name:"Modal"},{target:Pn,name:"SportImage"}],qn={mounted:(e,t)=>{e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};var Vn=n(631);r.kL.register(r.ZL,r.jn,r.od,r.De,r.Dx,r.u,r.Gu,r.vn,r.uw,r.ST,r.f$,a.Z);const jn=(0,o.ri)(ue).provide("sportColors",Vn.Zo).use(de.Z).use(_e.Z).use(me.Z).use(s.ZP,{name:"VFullscreen"}).directive("click-outside",qn);Hn.forEach((e=>{jn.component(e.name,e.target)})),jn.mount("#app")},9160:function(e,t,n){"use strict";n.d(t,{Z:function(){return zl}});var r=n(2201),a=(n(7658),n(6252)),o=n(3577),s=n(9963),i=n(2262),l=n(5801),c=n(9917),u=n(8966);const d=e=>((0,a.dD)("data-v-24ec93e2"),e=e(),(0,a.Cn)(),e),m={id:"admin-app",class:"admin-card"},_=["onSubmit"],S={for:"admin_contact"},E=["value"],T=["disabled"],p={for:"max_users"},A=["disabled"],O={class:"user-limit-help"},U={class:"info-box"},R=d((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),I={for:"max_single_file_size"},g=["disabled"],N={for:"max_zip_file_size"},z=["disabled"],h={for:"gpx_limit_import"},w=["disabled"],f={key:1,class:"form-buttons"},v={class:"confirm",type:"submit"},C=["onClick"],D={key:2,class:"form-buttons"};var k=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const t=e,{edition:n}=(0,i.BK)(t),d=(0,c.o)(),k=(0,r.tv)(),P=(0,i.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0}),L=(0,a.Fl)((()=>d.getters[l.SY.GETTERS.ERROR_MESSAGES]));function M(e){Object.keys(P).map((t=>{["max_single_file_size","max_zip_file_size"].includes(t)?P[t]=(0,u.j)(e[t]):P[t]=e[t]}))}function b(){M(t.appConfig),d.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),k.push("/admin/application")}function y(){const e=Object.assign({},P);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,d.dispatch(l.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{t.appConfig&&M(t.appConfig)})),(e,t)=>{const r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",m,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("form",{class:"admin-form",onSubmit:(0,s.iM)(y,["prevent"])},[(0,a._)("label",S,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,i.SU)(n)||P.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":t[0]||(t[0]=e=>P.admin_contact=e),disabled:!(0,i.SU)(n)},null,8,T)),[[s.nr,P.admin_contact]]):((0,a.wg)(),(0,a.iD)("input",{key:0,class:"no-contact",value:e.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,E))]),(0,a._)("label",p,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":t[1]||(t[1]=e=>P.max_users=e),disabled:!(0,i.SU)(n)},null,8,A),[[s.nr,P.max_users]])]),(0,a._)("div",O,[(0,a._)("span",U,[R,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",I,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[2]||(t[2]=e=>P.max_single_file_size=e),disabled:!(0,i.SU)(n)},null,8,g),[[s.nr,P.max_single_file_size]])]),(0,a._)("label",N,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[3]||(t[3]=e=>P.max_zip_file_size=e),disabled:!(0,i.SU)(n)},null,8,z),[[s.nr,P.max_zip_file_size]])]),(0,a._)("label",h,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":t[4]||(t[4]=e=>P.gpx_limit_import=e),disabled:!(0,i.SU)(n)},null,8,w),[[s.nr,P.gpx_limit_import]])]),(0,i.SU)(L)?((0,a.wg)(),(0,a.j4)(r,{key:0,message:(0,i.SU)(L)},null,8,["message"])):(0,a.kq)("",!0),(0,i.SU)(n)?((0,a.wg)(),(0,a.iD)("div",f,[(0,a._)("button",v,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,s.iM)(b,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,C)])):((0,a.wg)(),(0,a.iD)("div",D,[(0,a._)("button",{class:"confirm",onClick:t[5]||(t[5]=(0,s.iM)((t=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:t[6]||(t[6]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,_)])),_:1})])}}}),P=n(3744);const L=(0,P.Z)(k,[["__scopeId","data-v-24ec93e2"]]);var M=L;const b={class:"stat-card"},y={class:"stat-content box"},G={class:"stat-icon"},F={class:"stat-details"},W={class:"stat-huge"},K={class:"stat"};var Y=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const t=e,{icon:n,text:r,value:s}=(0,i.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",b,[(0,a._)("div",y,[(0,a._)("div",G,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,i.SU)(n)}`])},null,2)]),(0,a._)("div",F,[(0,a._)("div",W,(0,o.zw)((0,i.SU)(s)),1),(0,a._)("div",K,(0,o.zw)((0,i.SU)(r)),1)])])]))}});const x=Y;var B=x;const $={id:"user-stats"};var Z=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const t=e,{appStatistics:n}=(0,i.BK)(t),r=(0,a.Fl)((()=>(0,u.Z)(n.value.uploads_dir_size,!1)));return(e,t)=>((0,a.wg)(),(0,a.iD)("div",$,[(0,a.Wm)(B,{icon:"users",value:(0,i.SU)(n).users,text:e.$t("admin.USER",(0,i.SU)(n).users)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"tags",value:(0,i.SU)(n).sports,text:e.$t("workouts.SPORT",(0,i.SU)(n).sports)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"calendar",value:(0,i.SU)(n).workouts,text:e.$t("workouts.WORKOUT",(0,i.SU)(n).workouts)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"folder-open",value:(0,i.SU)(r).size,text:(0,i.SU)(r).suffix},null,8,["value","text"])]))}});const H=Z;var q=H,V=n(2531);const j=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),X={id:"admin-menu",class:"center-card"},J={class:"admin-menu description-list"},Q={class:"application-config-details"},ee=j((()=>(0,a._)("br",null,null,-1))),te={class:"registration-status"},ne={key:0,class:"email-sending-status"},re=j((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var ae=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const t=e,{appConfig:n,appStatistics:r}=(0,i.BK)(t);return(e,t)=>{const s=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",X,[(0,a.Wm)(V.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(q,{appStatistics:(0,i.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",J,[(0,a._)("dl",null,[(0,a._)("dt",null,[(0,a.Wm)(s,{to:"/admin/application"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APPLICATION")),1)])),_:1})]),(0,a._)("dd",Q,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),ee,(0,a._)("span",te,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,i.SU)(n).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,i.SU)(n).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ne,[re,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),(0,a._)("dt",null,[(0,a.Wm)(s,{to:"/admin/sports"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("workouts.SPORT",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),(0,a._)("dt",null,[(0,a.Wm)(s,{to:"/admin/users"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])])),_:1})])}}});const oe=(0,P.Z)(ae,[["__scopeId","data-v-0dd66f89"]]);var se=oe,ie=n(9150),le=n(631);const ce=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),ue={id:"admin-sports",class:"admin-card"},de={class:"responsive-table"},me=ce((()=>(0,a._)("th",null,"#",-1))),_e={class:"text-left"},Se={class:"text-left sport-action"},Ee=ce((()=>(0,a._)("th",null,null,-1))),Te={class:"text-center"},pe=ce((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),Ae={class:"cell-heading"},Oe={class:"sport-label"},Ue={class:"cell-heading"},Re={class:"text-center"},Ie={class:"cell-heading"},ge={class:"sport-action"},Ne={class:"cell-heading"},ze={class:"action-button"},he=["onClick"],we={key:0,class:"has-workouts"},fe=ce((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var ve=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:t}=(0,ie.QT)(),n=(0,c.o)(),r=(0,a.Fl)((()=>(0,le.xH)(n.getters[l.O8.GETTERS.SPORTS],t))),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(e,t){n.dispatch(l.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:t})}return(e,t)=>{const n=(0,a.up)("SportImage"),l=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ue,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.SPORTS.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",de,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[me,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",_e,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("th",Se,(0,o.zw)(e.$t("admin.ACTION")),1),Ee])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(r),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.id},[(0,a._)("td",Te,[pe,(0,a.Uk)(" "+(0,o.zw)(t.id),1)]),(0,a._)("td",null,[(0,a._)("span",Ae,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(n,{title:t.translatedLabel,"sport-label":t.label,color:t.color},null,8,["title","sport-label","color"])]),(0,a._)("td",Oe,[(0,a._)("span",Ue,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(t.translatedLabel),1)]),(0,a._)("td",Re,[(0,a._)("span",Ie,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(t.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",ge,[(0,a._)("span",Ne,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",ze,[(0,a._)("button",{class:(0,o.C_)({danger:t.is_active}),onClick:e=>d(t.id,!t.is_active)},(0,o.zw)(e.$t(`buttons.${t.is_active?"DIS":"EN"}ABLE`)),11,he),t.has_workouts?((0,a.wg)(),(0,a.iD)("span",we,[fe,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,i.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,i.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const Ce=(0,P.Z)(ve,[["__scopeId","data-v-6d62af67"]]);var De=Ce,ke=n(4850),Pe=n(8626),Le=n(5020),Me=n(6595);const be={class:"users-filters"},ye={class:"search-username"},Ge=["onKeyup","placeholder"];var Fe=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:t}){const n=(0,r.yj)(),l=(0,i.iH)(n.query.q?n.query.q:"");function c(){""!==l.value&&t("filterOnUsername",l)}function u(){l.value="",t("filterOnUsername",l.value)}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",be,[(0,a._)("div",ye,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":t[0]||(t[0]=e=>l.value=e),onKeyup:(0,s.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,Ge),[[s.nr,l.value,void 0,{trim:!0}]]),""!==l.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:u})):(0,a.kq)("",!0)]),(0,a._)("i",{class:(0,o.C_)(["fa fa-search",{"fa-disabled":""===l.value}]),"aria-hidden":"true",onClick:c},null,2)]))}});const We=(0,P.Z)(Fe,[["__scopeId","data-v-627a8e91"]]);var Ke=We,Ye=n(2766),xe=n(6558);const Be=e=>((0,a.dD)("data-v-4735c10f"),e=e(),(0,a.Cn)(),e),$e={id:"admin-users",class:"admin-card"},Ze={key:0,class:"no-users"},He={key:1,class:"responsive-table"},qe=Be((()=>(0,a._)("th",null,"#",-1))),Ve={class:"left-text"},je={class:"left-text"},Xe={class:"left-text"},Je={class:"cell-heading"},Qe={class:"cell-heading"},et={class:"cell-heading"},tt={class:"cell-heading"},nt={class:"text-center"},rt={class:"cell-heading"},at={class:"text-center"},ot={class:"cell-heading"},st={class:"text-center"},it={class:"cell-heading"},lt={class:"text-center"},ct={class:"cell-heading"},ut=["disabled","onClick"];var dt=(0,a.aZ)({__name:"AdminUsers",setup(e){const t=(0,c.o)(),n=(0,r.yj)(),u=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let _=(0,i.qj)((0,Ye.pm)(n.query,d,m));const S=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),E=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES]));function A(e){t.dispatch(l.RT.ACTIONS.GET_USERS,e)}function O(e){R("q",e.value)}function U(e,n){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,admin:n})}function R(e,t){_[e]=t,"per_page"===e&&(_.page=1),u.push({path:"/admin/users",query:_})}return(0,a.wF)((()=>A(_))),(0,a.Ah)((()=>{t.dispatch(l.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>n.query),(e=>{_=(0,Ye.pm)(e,d,m,{query:_}),A(_)})),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",$e,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(Ke,{onFilterOnUsername:O}),(0,a.Wm)(Pe.Z,{sort:(0,i.SU)(Ye.fS),order_by:d,query:(0,i.SU)(_),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:R},null,8,["sort","query"]),0===(0,i.SU)(E).length?((0,a.wg)(),(0,a.iD)("div",Ze,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",He,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[qe,(0,a._)("th",Ve,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",je,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",Xe,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a._)("th",null,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTION")),1)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(E),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.username},[(0,a._)("td",null,[(0,a._)("span",Je,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Me.Z,{user:t},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",Qe,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(n,{to:`/admin/users/${t.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",et,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(t.email),1)]),(0,a._)("td",null,[(0,a._)("span",tt,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(xe.eB)(t.created_at,(0,i.SU)(S).timezone),"dd/MM/yyyy HH:mm")),1)]),(0,a._)("td",nt,[(0,a._)("span",rt,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(t.nb_workouts),1)]),(0,a._)("td",at,[(0,a._)("span",ot,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",st,[(0,a._)("span",it,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",lt,[(0,a._)("span",ct,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:t.admin}),disabled:t.username===(0,i.SU)(S).username,onClick:e=>U(t.username,!t.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${t.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,ut)])])))),128))])]),(0,i.SU)(T).page?((0,a.wg)(),(0,a.j4)(Le.Z,{key:0,path:"/admin/users",pagination:(0,i.SU)(T),query:(0,i.SU)(_)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,i.SU)(p)?((0,a.wg)(),(0,a.j4)(r,{key:1,message:(0,i.SU)(p)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const mt=(0,P.Z)(dt,[["__scopeId","data-v-4735c10f"]]);var _t=mt,St=n(2179);const Et={class:"profile-tabs custom-checkboxes-group"},Tt={class:"profile-tabs-checkboxes custom-checkboxes"},pt=["id","name","checked","disabled","onInput"];var At=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const t=e,{tabs:n,selectedTab:r,disabled:s}=(0,i.BK)(t);function l(e){switch(e){case"ACCOUNT":case"PICTURE":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${t.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(t.edition?"/edit":"")}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Et,[(0,a._)("div",Tt,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(n),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:t},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:t,name:t,checked:(0,i.SU)(r).split("/")[0]===t,disabled:(0,i.SU)(s),onInput:n=>e.$router.push(l(t))},null,40,pt),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${t}`)),1)])])))),128))])]))}});const Ot=At;var Ut=Ot;const Rt={id:"user-profile"},It={class:"box"};var gt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,{user:n,tab:r}=(0,i.BK)(t),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,t)=>{const s=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",Rt,[(0,a.Wm)(St.Z,{user:(0,i.SU)(n)},null,8,["user"]),(0,a._)("div",It,[(0,a.Wm)(Ut,{tabs:o,selectedTab:(0,i.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(s,{user:(0,i.SU)(n)},null,8,["user"])])])}}});const Nt=(0,P.Z)(gt,[["__scopeId","data-v-9729cba4"]]);var zt=Nt,ht=n(7408),wt=n(6287);const ft={id:"user-preferences",class:"description-list"},vt={class:"profile-buttons"};var Ct=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const t=e,n=(0,a.Fl)((()=>t.user.language?wt.zK[t.user.language]:wt.zK.en)),r=(0,a.Fl)((()=>t.user.weekm?"MONDAY":"SUNDAY")),s=(0,a.Fl)((()=>t.user.timezone?t.user.timezone:"Europe/Paris")),l=(0,a.Fl)((()=>t.user.display_ascent?"DISPLAYED":"HIDDEN"));return(t,c)=>((0,a.wg)(),(0,a.iD)("div",ft,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(n)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(s)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`user.PROFILE.${(0,i.SU)(r)}`)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`common.${(0,i.SU)(l)}`)),1)]),(0,a._)("div",vt,[(0,a._)("button",{onClick:c[0]||(c[0]=e=>t.$router.push("/profile/edit/preferences"))},(0,o.zw)(t.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:c[1]||(c[1]=e=>t.$router.push("/"))},(0,o.zw)(t.$t("common.HOME")),1)])]))}});const Dt=Ct;var kt=Dt;const Pt={id:"user-profile-edition",class:"center-card"};var Lt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,n=(0,c.o)(),{user:r,tab:s}=(0,i.BK)(t),u=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS"],d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING]));return(e,t)=>{const n=(0,a.up)("router-view"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Pt,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t(`user.PROFILE.${(0,i.SU)(s)}_EDITION`)),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Ut,{tabs:u,selectedTab:(0,i.SU)(s),edition:!0,disabled:(0,i.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(n,{user:(0,i.SU)(r)},null,8,["user"])])),_:1})])}}});const Mt=Lt;var bt=Mt,yt=n(8403);const Gt={id:"user-infos-edition"},Ft={class:"profile-form form-box"},Wt={key:1,class:"info-box success-message"},Kt=["onSubmit"],Yt={class:"form-items",for:"email"},xt=["disabled"],Bt={class:"form-items",for:"password-field"},$t={class:"form-items",for:"new-password-field"},Zt={class:"form-buttons"},Ht={class:"confirm",type:"submit"};var qt=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const t=e,{user:n}=(0,i.BK)(t),r=(0,c.o)(),u=(0,i.qj)({email:"",password:"",new_password:""}),d=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.APP_CONFIG])),_=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.IS_SUCCESS])),S=(0,i.iH)(!1),E=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.ERROR_MESSAGES])),T=(0,i.iH)(!1),p=(0,i.iH)(!1);function A(){T.value=!0}function O(e){u.email=e.email}function U(e){u.password=e}function R(e){u.new_password=e}function I(){const e={email:u.email,password:u.password};u.new_password&&(e.new_password=u.new_password),S.value=u.email!==n.value.email,r.dispatch(l.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function g(e){p.value=e}function N(e){r.dispatch(l.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}return(0,a.bv)((()=>{t.user&&O(t.user)})),(0,a.Ah)((()=>{r.commit(l.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>_.value),(async e=>{e&&(U(""),R(""),O(n.value),T.value=!1)})),(0,a.YP)((()=>n.value.email),(async()=>{O(n.value)})),(e,t)=>{const r=(0,a.up)("Modal"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Gt,[p.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:t[0]||(t[0]=e=>N((0,i.SU)(n).username)),onCancelAction:t[1]||(t[1]=e=>g(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Ft,[(0,i.SU)(E)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,i.SU)(E)},null,8,["message"])):(0,a.kq)("",!0),(0,i.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Wt,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${S.value&&(0,i.SU)(m).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:T.value}),onSubmit:(0,s.iM)(I,["prevent"])},[(0,a._)("label",Yt,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=e=>u.email=e),disabled:(0,i.SU)(d),required:!0,onInvalid:A},null,40,xt),[[s.nr,u.email]])]),(0,a._)("label",Bt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(yt.Z,{id:"password-field",disabled:(0,i.SU)(d),password:u.password,required:!0,onUpdatePassword:U,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("label",$t,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(yt.Z,{id:"new-password-field",disabled:(0,i.SU)(d),checkStrength:!0,password:u.new_password,isSuccess:!1,onUpdatePassword:R,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("div",Zt,[(0,a._)("button",Ht,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,s.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:t[4]||(t[4]=(0,s.iM)((e=>g(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1)])],42,Kt)])])}}});const Vt=(0,P.Z)(qt,[["__scopeId","data-v-37b8c4c8"]]);var jt=Vt;const Xt={id:"user-infos-edition"},Jt={class:"profile-form form-box"},Qt=["onSubmit"],en={class:"form-items",for:"registrationDate"},tn=["value"],nn={class:"form-items",for:"first_name"},rn=["disabled"],an={class:"form-items",for:"last_name"},on={class:"form-items",for:"birth_date"},sn=["disabled"],ln={class:"form-items",for:"location"},cn=["disabled"],un={class:"form-items"},dn={class:"form-buttons"},mn={class:"confirm",type:"submit"};var _n=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,i.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),u=(0,a.Fl)((()=>t.user.created_at?(0,ke.Z)(new Date(t.user.created_at),"dd/MM/yyyy HH:mm"):"")),d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function _(e){r.first_name=e.first_name?e.first_name:"",r.last_name=e.last_name?e.last_name:"",r.birth_date=e.birth_date?(0,ke.Z)(new Date(e.birth_date),"yyyy-MM-dd"):"",r.location=e.location?e.location:"",r.bio=e.bio?e.bio:""}function S(e){r.bio=e}function E(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{t.user&&_(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage"),l=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Xt,[(0,a._)("div",Jt,[(0,i.SU)(m)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,i.SU)(m)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,s.iM)(E,["prevent"])},[(0,a._)("label",en,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,i.SU)(u),disabled:""},null,8,tn)]),(0,a._)("label",nn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":t[0]||(t[0]=e=>r.first_name=e),disabled:(0,i.SU)(d)},null,8,rn),[[s.nr,r.first_name]])]),(0,a._)("label",an,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":t[1]||(t[1]=e=>r.last_name=e)},null,512),[[s.nr,r.last_name]])]),(0,a._)("label",on,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),(0,a.wy)((0,a._)("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":t[2]||(t[2]=e=>r.birth_date=e),disabled:(0,i.SU)(d)},null,8,sn),[[s.nr,r.birth_date]])]),(0,a._)("label",ln,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":t[3]||(t[3]=e=>r.location=e),disabled:(0,i.SU)(d)},null,8,cn),[[s.nr,r.location]])]),(0,a._)("label",un,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(l,{name:"bio",charLimit:200,input:r.bio,disabled:(0,i.SU)(d),onUpdateValue:S},null,8,["input","disabled"])]),(0,a._)("div",dn,[(0,a._)("button",mn,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,s.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Qt)])])}}});const Sn=(0,P.Z)(_n,[["__scopeId","data-v-b6bacea0"]]);var En=Sn;const Tn=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),pn={id:"user-picture-edition"},An={class:"user-picture-form"},On=["onSubmit"],Un={class:"picture-help"},Rn={class:"info-box"},In=Tn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),gn={class:"picture-buttons"},Nn=["disabled"];var zn=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,i.BK)(t),d=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),_=m.value.max_single_file_size?(0,u.Z)(m.value.max_single_file_size):"",S=(0,i.iH)(null);function E(){n.dispatch(l.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(S.value=e.target.files[0])}function p(){S.value&&n.dispatch(l.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:S.value})}return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",pn,[(0,a._)("div",An,[(0,i.SU)(d)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,i.SU)(d)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Me.Z,{user:(0,i.SU)(r)},null,8,["user"]),(0,a._)("form",{onSubmit:(0,s.iM)(p,["prevent"])},[(0,a._)("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:T},null,32),(0,a._)("div",Un,[(0,a._)("span",Rn,[In,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,i.SU)(_)),1)])]),(0,a._)("div",gn,[(0,a._)("button",{type:"submit",disabled:!S.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,Nn),(0,i.SU)(r).picture?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"danger",onClick:E},(0,o.zw)(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):(0,a.kq)("",!0),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,On)])])}}});const hn=(0,P.Z)(zn,[["__scopeId","data-v-687e9604"]]);var wn=hn;const fn=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],vn={id:"tz-dropdown"},Cn=["value","disabled","onKeydown"],Dn=["onClick","onMouseover","autofocus"];var kn=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:t}){const n=e,{input:r,disabled:l}=(0,i.BK)(n),c=(0,i.iH)(n.input),u=(0,i.iH)(!1),d=(0,i.iH)(null),m=(0,i.iH)(0);function _(e){return e.toLowerCase().match(c.value.toLowerCase())}function S(e){m.value=e}function E(e){c.value=e,u.value=!1,t("updateTimezone",e)}function T(e){e.preventDefault(),d.value?.firstElementChild?.innerHTML&&E(d.value?.firstElementChild?.innerHTML)}function p(e){e.preventDefault(),u.value=!0,c.value=e.target.value.trim()}return(0,a.YP)((()=>n.input),(e=>{c.value=e})),(e,t)=>((0,a.wg)(),(0,a.iD)("div",vn,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,i.SU)(l),required:"",onKeydown:[t[0]||(t[0]=(0,s.D2)((e=>E((0,i.SU)(r))),["esc"])),(0,s.D2)(T,["enter"])],onInput:p},null,40,Cn),u.value?((0,a.wg)(),(0,a.iD)("ul",{key:0,class:"tz-dropdown-list",ref_key:"tzList",ref:d},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(fn).filter((e=>_(e))),((e,t)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:t===m.value}]),onClick:t=>E(e),onMouseover:e=>S(t),autofocus:t===m.value},(0,o.zw)(e),43,Dn)))),128))],512)):(0,a.kq)("",!0)]))}});const Pn=(0,P.Z)(kn,[["__scopeId","data-v-47ea2903"]]);var Ln=Pn;const Mn={id:"user-preferences-edition"},bn={class:"profile-form form-box"},yn=["onSubmit"],Gn={class:"form-items"},Fn=["disabled"],Wn=["value"],Kn={class:"form-items"},Yn={class:"form-items form-checkboxes"},xn={class:"checkboxes-label"},Bn={class:"checkboxes"},$n=["id","name","checked","disabled","onInput"],Zn={class:"checkbox-label"},Hn={class:"form-items form-checkboxes"},qn={class:"checkboxes-label"},Vn={class:"checkboxes"},jn=["id","name","checked","disabled","onInput"],Xn={class:"checkbox-label"},Jn={class:"form-items form-checkboxes"},Qn={class:"checkboxes-label"},er={class:"checkboxes"},tr=["id","name","checked","disabled","onInput"],nr={class:"checkbox-label"},rr={class:"form-buttons"},ar={class:"confirm",type:"submit"};var or=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,i.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",weekm:!1}),u=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],d=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],m=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],_=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),S=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function E(e){r.display_ascent=e.display_ascent,r.imperial_units=!!e.imperial_units&&e.imperial_units,r.language=e.language?e.language:"en",r.timezone=e.timezone?e.timezone:"Europe/Paris",r.weekm=!!e.weekm&&e.weekm}function T(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function p(e){r.timezone=e}function A(e){r.display_ascent=e}function O(e){r.imperial_units=e}function U(e){r.weekm=e}return(0,a.bv)((()=>{t.user&&E(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("div",bn,[(0,i.SU)(S)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,i.SU)(S)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,s.iM)(T,["prevent"])},[(0,a._)("label",Gn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":t[0]||(t[0]=e=>r.language=e),disabled:(0,i.SU)(_)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(wt.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,Wn)))),128))],8,Fn),[[s.bM,r.language]])]),(0,a._)("label",Kn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(Ln,{input:r.timezone,disabled:(0,i.SU)(_),onUpdateTimezone:p},null,8,["input","disabled"])]),(0,a._)("div",Yn,[(0,a._)("span",xn,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",Bn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(u,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.weekm,disabled:(0,i.SU)(_),onInput:e=>U(t.value)},null,40,$n),(0,a._)("span",Zn,(0,o.zw)(e.$t(`user.PROFILE.${t.label}`)),1)]))),64))])]),(0,a._)("div",Hn,[(0,a._)("span",qn,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Vn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.imperial_units,disabled:(0,i.SU)(_),onInput:e=>O(t.value)},null,40,jn),(0,a._)("span",Xn,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${t.label}`)),1)]))),64))])]),(0,a._)("div",Jn,[(0,a._)("span",Qn,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",er,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.display_ascent,disabled:(0,i.SU)(_),onInput:e=>A(t.value)},null,40,tr),(0,a._)("span",nr,(0,o.zw)(e.$t(`common.${t.label}`)),1)]))),64))])]),(0,a._)("div",rr,[(0,a._)("button",ar,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[1]||(t[1]=(0,s.iM)((t=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,yn)])])}}});const sr=(0,P.Z)(or,[["__scopeId","data-v-f7548012"]]);var ir=sr;const lr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],cr=["application:write"],ur={id:"new-oauth2-app"},dr={id:"new-oauth2-title"},mr={id:"apps-form"},_r=["onSubmit"],Sr={class:"form-items"},Er={class:"form-item"},Tr={for:"app-name"},pr={class:"form-item"},Ar={for:"app-description"},Or={class:"form-item"},Ur={for:"app-url"},Rr={class:"form-item"},Ir={for:"app-redirect-uri"},gr={class:"form-item-scope"},Nr={class:"form-item-scope-label"},zr={class:"scope-label"},hr=["name","checked","onChange"],wr=["innerHTML"],fr={class:"form-buttons"},vr=["disabled"];var Cr=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),r=(0,i.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),u=(0,i.qj)([]),d=(0,a.Fl)((()=>E(t.authUser,cr,lr)));function m(){const e={client_name:r.client_name,client_description:r.client_description,client_uri:r.client_uri,redirect_uris:[r.redirect_uri],scope:u.sort().join(" ")};n.dispatch(l.Km.ACTIONS.CREATE_CLIENT,e)}function _(e){r.client_description=e}function S(e){const t=u.indexOf(e);t>-1?u.splice(t,1):u.push(e)}function E(e,t,n){const r=[...n];return e.admin&&r.push(...t),r.sort()}return(e,t)=>{const n=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",ur,[(0,a._)("h1",dr,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",mr,[(0,a._)("form",{onSubmit:(0,s.iM)(m,["prevent"])},[(0,a._)("div",Sr,[(0,a._)("div",Er,[(0,a._)("label",Tr,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":t[0]||(t[0]=e=>r.client_name=e)},null,512),[[s.nr,r.client_name]])]),(0,a._)("div",pr,[(0,a._)("label",Ar,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(n,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:_},null,8,["input"])]),(0,a._)("div",Or,[(0,a._)("label",Ur,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":t[1]||(t[1]=e=>r.client_uri=e)},null,512),[[s.nr,r.client_uri]])]),(0,a._)("div",Rr,[(0,a._)("label",Ir,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":t[2]||(t[2]=e=>r.redirect_uri=e)},null,512),[[s.nr,r.redirect_uri]])]),(0,a._)("div",gr,[(0,a._)("div",Nr,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:t},[(0,a._)("label",zr,[(0,a._)("input",{type:"checkbox",name:t,checked:u.includes(t),onChange:e=>S(t)},null,40,hr),(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,wr)])))),128))])]),(0,a._)("div",fr,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===u.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,vr),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,s.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,_r)])])}}});const Dr=(0,P.Z)(Cr,[["__scopeId","data-v-0657ee77"]]);var kr=Dr;const Pr={id:"authorize-oauth2-app"},Lr={key:0},Mr={id:"authorize-oauth2-title"},br={class:"oauth2-access description-list"},yr={class:"client-scope"},Gr=["innerHTML"],Fr={class:"authorize-oauth2-buttons"},Wr={key:1},Kr={class:"no-app"};var Yr=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const t=(0,r.yj)(),n=(0,c.o)(),s=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENT])),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(){t.query.client_id&&"string"===typeof t.query.client_id&&n.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,t.query.client_id)}function m(){n.dispatch(l.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${t.query.client_id}`,redirect_uri:`${t.query.redirect_uri}`,response_type:`${t.query.response_type}`,scope:`${t.query.scope}`,state:`${t.query.state?t.query.state:""}`,code_challenge:`${t.query.code_challenge?t.query.code_challenge:""}`,code_challenge_method:`${t.query.code_challenge_method?t.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Pr,[(0,i.SU)(s).client_id?((0,a.wg)(),(0,a.iD)("div",Lr,[(0,a._)("h1",Mr,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:(0,i.SU)(s).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,i.SU)(s).name),1)])),_:1},8,["to"])])),_:1})]),(0,i.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,i.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",br,[(0,a._)("p",null,(0,o.zw)(e.$t("oauth2.APP_REQUESTING_ACCESS")),1),(0,a._)("dl",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(s).scope.split(" "),(t=>((0,a.wg)(),(0,a.iD)(a.HY,{key:t},[(0,a._)("dt",yr,[(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,Gr)],64)))),128))]),(0,a._)("div",Fr,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",Wr,[(0,a._)("p",Kr,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const xr=(0,P.Z)(Yr,[["__scopeId","data-v-3b2fe9ed"]]);var Br=xr;const $r={id:"oauth2-apps"};var Zr=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,i.BK)(t);return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.Km.MUTATIONS.SET_CLIENTS,[])})),(e,t)=>{const n=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",$r,[(0,a.Wm)(n,{authUser:(0,i.SU)(r)},null,8,["authUser"])])}}});const Hr=Zr;var qr=Hr;const Vr={id:"oauth2-app",class:"description-list"},jr={key:1},Xr={key:0,class:"info-box success-message"},Jr=["title"],Qr={key:0},ea={key:1,class:"app-secret"},ta=["title"],na={class:"client-scopes"},ra={class:"app-buttons"},aa={key:2},oa={class:"no-app"};var sa=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,r.yj)(),s=(0,c.o)(),{afterCreation:u,authUser:d}=(0,i.BK)(t),m=(0,a.Fl)((()=>s.getters[l.Km.GETTERS.CLIENT])),_=(0,a.Fl)((()=>s.getters[l.Km.GETTERS.REVOCATION_SUCCESSFUL])),S=(0,i.iH)(!1),E=(0,i.iH)(null),T=(0,i.iH)(!1),p=(0,i.iH)(!1),A=(0,i.iH)(!1);function O(){!u.value&&n.params.id&&"string"===typeof n.params.id&&s.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_ID,+n.params.id)}function U(e){E.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",R(!0)}function R(e){S.value=e,e||(E.value=null)}function I(e){"oauth2.APP_DELETION_CONFIRMATION"===E.value?s.dispatch(l.Km.ACTIONS.DELETE_CLIENT,e):s.dispatch(l.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function g(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function N(){m.value.client_secret&&(navigator.clipboard.writeText(m.value.client_secret),p.value=!0,T.value=!1,setTimeout((()=>{p.value=!1}),3e3))}return(0,a.wF)((()=>{O(),navigator.clipboard&&(A.value=!0)})),(0,a.Ah)((()=>{s.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),s.commit(l.Km.MUTATIONS.EMPTY_CLIENT),s.commit(l.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>_.value),(e=>{e&&R(!1)})),(e,t)=>{const n=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",Vr,[S.value?((0,a.wg)(),(0,a.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(E.value),onConfirmAction:t[0]||(t[0]=e=>I((0,i.SU)(m).id)),onCancelAction:t[1]||(t[1]=e=>R(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,i.SU)(m)&&(0,i.SU)(m).client_id?((0,a.wg)(),(0,a.iD)("div",jr,[(0,i.SU)(u)||(0,i.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Xr,(0,o.zw)(e.$t((0,i.SU)(u)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.CLIENT_ID"))+":",1),(0,a._)("dd",null,[(0,a.Uk)((0,o.zw)((0,i.SU)(m).client_id)+" ",1),(0,i.SU)(u)&&A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(T.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:g},null,10,Jr)):(0,a.kq)("",!0)]),(0,i.SU)(u)&&(0,i.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",Qr,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,i.SU)(u)&&(0,i.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",ea,[(0,a.Uk)((0,o.zw)((0,i.SU)(m).client_secret)+" ",1),A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(p.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:N},null,10,ta)):(0,a.kq)("",!0)])):(0,a.kq)("",!0),(0,a._)("dt",null,(0,o.zw)((0,o.kC)(e.$t("oauth2.APP.ISSUE_AT")))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(xe.eB)((0,i.SU)(m).issued_at,(0,i.SU)(d).timezone),"dd/MM/yyyy HH:mm")),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.NAME"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(m).name),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION"))+":",1),(0,a._)("dd",{class:(0,o.C_)({"no-description":!(0,i.SU)(m).client_description})},(0,o.zw)((0,i.SU)(m).client_description?(0,i.SU)(m).client_description:e.$t("oauth2.NO_DESCRIPTION")),3),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(m).website),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(m).redirect_uris.length>0?(0,i.SU)(m).redirect_uris[0]:""),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+":",1),(0,a._)("dd",na,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(m).scope.split(" "),(e=>((0,a.wg)(),(0,a.iD)("span",{class:"client-scope",key:e},[(0,a._)("code",null,(0,o.zw)(e),1)])))),128))])]),(0,a._)("div",ra,[(0,a._)("button",{class:"danger",onClick:t[2]||(t[2]=e=>U(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:t[3]||(t[3]=e=>U(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:t[4]||(t[4]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",aa,[(0,a._)("p",oa,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const ia=(0,P.Z)(sa,[["__scopeId","data-v-00697fc9"]]);var la=ia;const ca={id:"oauth2-apps-list"},ua={class:"apps-list"},da={key:0},ma={class:"app-issued-at"},_a={key:1,class:"no-apps"},Sa={class:"app-list-buttons"};var Ea=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),s=(0,r.yj)(),{authUser:u}=(0,i.BK)(t),d=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS_PAGINATION]));let _=S(s.query);function S(e){const t={};return e.page&&(t.page=(0,Ye.z_)(e.page,Ye.Hf)),t}function E(e){n.dispatch(l.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{E(_)})),(0,a.YP)((()=>s.query),(async e=>{_=S(e),E(_)})),(e,t)=>{const n=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",ca,[(0,a._)("p",ua,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,i.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",da,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("li",{key:t.client_id},[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:t.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.name),1)])),_:2},1032,["to"]),(0,a._)("span",ma,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(xe.eB)(t.issued_at,(0,i.SU)(u).timezone),"dd/MM/yyyy HH:mm")),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",_a,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,i.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Le.Z,{key:2,pagination:(0,i.SU)(m),path:"/profile/apps",query:(0,i.SU)(_)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,a._)("div",Sa,[(0,a._)("button",{onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const Ta=(0,P.Z)(Ea,[["__scopeId","data-v-a5c2cdde"]]);var pa=Ta;const Aa={id:"user-sport-preferences"},Oa={key:0,class:"responsive-table"},Ua={class:"mobile-display"},Ra={key:0,class:"profile-buttons mobile-display"},Ia={key:1,class:"profile-buttons"},ga={class:"text-left"},Na={key:0},za={class:"cell-heading"},ha=["value"],wa={class:"cell-heading"},fa={key:0,class:"disabled-message"},va={key:1,class:"fa fa-refresh fa-spin fa-fw"},Ca={class:"cell-heading"},Da={class:"cell-heading"},ka=["checked"],Pa={class:"cell-heading"},La=["value"],Ma={key:1},ba={key:0,class:"action-buttons"},ya={class:"cell-heading"},Ga=["onClick"],Fa={key:1,class:"edition-buttons"},Wa=["disabled"],Ka=["disabled","onClick"],Ya=["disabled"],xa={key:0,class:"profile-buttons"},Ba={key:1,class:"profile-buttons"};var $a=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const t=e,n=(0,c.o)(),{t:r}=(0,ie.QT)(),{isEdition:u,user:d}=(0,i.BK)(t),m="#838383",_=(0,a.f3)("sportColors"),S=(0,a.Fl)((()=>n.getters[l.O8.GETTERS.SPORTS])),E=(0,a.Fl)((()=>(0,le.xH)(S.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),A=(0,i.qj)({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1});function O(e){null!==e?(A.sport_id=e.id,A.color=e.color?e.color:_?_[e.label]:m,A.is_active=e.is_active_for_user,A.stopped_speed_threshold=e.stopped_speed_threshold):N()}function U(e){return A.sport_id===e}function R(e){A.color=e.target.value}function I(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function g(e){A.is_active=e.target.checked}function N(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function z(e){e.preventDefault(),n.dispatch(l.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,t){e.preventDefault(),n.dispatch(l.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,t)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||N()})),(e,t)=>{const n=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Aa,[(0,i.SU)(S).length>0?((0,a.wg)(),(0,a.iD)("div",Oa,[(0,a._)("div",Ua,[(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("div",Ra,[(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=(0,s.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Ia,[(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[2]||(t[2]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]),(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),(0,a._)("th",ga,(0,o.zw)(e.$t("workouts.SPORT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("th",Na,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1)):(0,a.kq)("",!0)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(E),(s=>((0,a.wg)(),(0,a.iD)("tr",{key:s.id},[(0,a._)("td",null,[(0,a._)("span",za,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),U(s.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:R},null,40,ha)):((0,a.wg)(),(0,a.j4)(n,{key:1,title:s.translatedLabel,"sport-label":s.label,color:s.color?s.color:(0,i.SU)(_)[s.label]},null,8,["title","sport-label","color"]))]),(0,a._)("td",{class:(0,o.C_)(["sport-label",{"disabled-sport":!s.is_active}])},[(0,a._)("span",wa,(0,o.zw)(e.$t("user.PROFILE.SPORT.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(s.translatedLabel)+" ",1),s.is_active?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",fa," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,i.SU)(T)&&U(s.id)?((0,a.wg)(),(0,a.iD)("i",va)):(0,a.kq)("",!0),(0,i.SU)(p)&&A.sport_id===s.id?((0,a.wg)(),(0,a.j4)(r,{key:2,message:(0,i.SU)(p)},null,8,["message"])):(0,a.kq)("",!0)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!s.is_active}])},[(0,a._)("span",Ca,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+((0,i.SU)(d).sports_list.includes(s.id)?"-check":"")),"aria-hidden":"true"},null,2)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!s.is_active}])},[(0,a._)("span",Da,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),U(s.id)&&s.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:s.is_active_for_user,onChange:g},null,40,ka)):((0,a.wg)(),(0,a.iD)("i",{key:1,class:(0,o.C_)("fa fa"+(s.is_active_for_user?"-check":"")),"aria-hidden":"true"},null,2))],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!s.is_active}])},[(0,a._)("span",Pa,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),U(s.id)&&s.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1",value:A.stopped_speed_threshold,onInput:I},null,40,La)):((0,a.wg)(),(0,a.iD)("span",Ma,(0,o.zw)(s.stopped_speed_threshold),1))],2),(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("td",ba,[(0,a._)("span",ya,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1),0===A.sport_id?((0,a.wg)(),(0,a.iD)("button",{key:0,onClick:e=>O(s)},(0,o.zw)(e.$t("buttons.EDIT")),9,Ga)):(0,a.kq)("",!0),U(s.id)?((0,a.wg)(),(0,a.iD)("div",Fa,[(0,a._)("button",{disabled:(0,i.SU)(T),onClick:z},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Wa),(0,a._)("button",{disabled:(0,i.SU)(T),onClick:e=>h(e,s.id)},(0,o.zw)(e.$t("buttons.RESET")),9,Ka),(0,a._)("button",{disabled:(0,i.SU)(T),onClick:t[3]||(t[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,Ya)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("div",xa,[(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,s.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Ba,[(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[6]||(t[6]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const Za=(0,P.Z)($a,[["__scopeId","data-v-74e52489"]]);var Ha=Za,qa=n(2894);const Va=e=>((0,a.dD)("data-v-74257266"),e=e(),(0,a.Cn)(),e),ja={class:"about-text"},Xa=["innerHTML"],Ja=Va((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),Qa={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},eo=Va((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),to={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},no=Va((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),ro=Va((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),ao={key:0},oo=Va((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),so=["href"];var io=(0,a.aZ)({__name:"About",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG]));return(e,t)=>{const r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",ja,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Xa),(0,a._)("p",null,[Ja,(0,a._)("a",Qa,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[eo,(0,a._)("a",to,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[no,(0,a.Wm)(r,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[ro])),_:1})]),(0,i.SU)(n).admin_contact?((0,a.wg)(),(0,a.iD)("div",ao,[oo,(0,a._)("a",{href:`mailto:${(0,i.SU)(n).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,so)])):(0,a.kq)("",!0)])])}}});const lo=(0,P.Z)(io,[["__scopeId","data-v-74257266"]]);var co=lo;const uo={id:"bike"},mo=["src"];function _o(e,t){return(0,a.wg)(),(0,a.iD)("div",uo,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,mo)])}const So={},Eo=(0,P.Z)(So,[["render",_o],["__scopeId","data-v-795f7f5f"]]);var To=Eo;const po={id:"about",class:"view"},Ao={class:"container"},Oo={class:"container-sub"},Uo={class:"container-sub about-details"};var Ro=(0,a.aZ)({__name:"AboutView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",po,[(0,a._)("div",Ao,[(0,a._)("div",Oo,[(0,a.Wm)(To)]),(0,a._)("div",Uo,[(0,a.Wm)(co)])])]))}});const Io=(0,P.Z)(Ro,[["__scopeId","data-v-bffb50d0"]]);var go=Io,No=n(1818),zo=n(2056);const ho=e=>((0,a.dD)("data-v-c9d1f10c"),e=e(),(0,a.Cn)(),e),wo={class:"timeline-workout"},fo={class:"box"},vo={class:"workout-user-date"},Co={class:"workout-user"},Do=["title"],ko={key:0},Po={key:1,class:"no-map"},Lo={class:"img"},Mo={class:"data"},bo=ho((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),yo={key:0},Go={class:"data"},Fo=ho((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Wo={key:0,class:"data elevation"},Ko=["alt"],Yo={class:"data-values"},xo=(0,a.Uk)("/ "),Bo={key:1,class:"data altitude"},$o=ho((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Zo={class:"data-values"},Ho=(0,a.Uk)(" +"),qo=(0,a.Uk)("/- ");var Vo=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const t=e,n=(0,c.o)(),{user:r,workout:s,sport:u,useImperialUnits:d}=(0,i.BK)(t),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));return(e,t)=>{const n=(0,a.up)("router-link"),l=(0,a.up)("SportImage"),c=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",wo,[(0,a._)("div",fo,[(0,a._)("div",vo,[(0,a._)("div",Co,[(0,a.Wm)(Me.Z,{user:(0,i.SU)(r)},null,8,["user"]),(0,i.SU)(r).username?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-user-name",to:{name:"User",params:{username:(0,i.SU)(r).username}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,i.SU)(r).username),1)])),_:1},8,["to"])):(0,a.kq)("",!0)]),(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:(0,i.SU)(s).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,i.SU)(s).title),1)])),_:1},8,["to"])):(0,a.kq)("",!0),(0,i.SU)(s).workout_date&&(0,i.SU)(r)?((0,a.wg)(),(0,a.iD)("div",{key:1,class:"workout-date",title:(0,i.SU)(ke.Z)((0,i.SU)(xe.eB)((0,i.SU)(s).workout_date,(0,i.SU)(r).timezone),"dd/MM/yyyy HH:mm")},(0,o.zw)((0,i.SU)(No.Z)(new Date((0,i.SU)(s).workout_date),new Date,{addSuffix:!0,locale:(0,i.SU)(m)})),9,Do)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,i.SU)(s)}]),onClick:t[0]||(t[0]=t=>(0,i.SU)(s).id?e.$router.push({name:"Workout",params:{workoutId:(0,i.SU)(s).id}}):null)},[(0,i.SU)(s)?((0,a.wg)(),(0,a.iD)("div",ko,[(0,i.SU)(s).with_gpx?((0,a.wg)(),(0,a.j4)(zo.Z,{key:0,workout:(0,i.SU)(s)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",Po,(0,o.zw)(e.$t("workouts.NO_MAP")),1))])):(0,a.kq)("",!0)],2),(0,a._)("div",{class:(0,o.C_)(["workout-data",{"without-gpx":(0,i.SU)(s)&&!(0,i.SU)(s).with_gpx}]),onClick:t[1]||(t[1]=t=>(0,i.SU)(s).id?e.$router.push({name:"Workout",params:{workoutId:(0,i.SU)(s).id}}):null)},[(0,a._)("div",Lo,[(0,i.SU)(u).label?((0,a.wg)(),(0,a.j4)(l,{key:0,"sport-label":(0,i.SU)(u).label,color:(0,i.SU)(u).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Mo,[bo,(0,i.SU)(s)?((0,a.wg)(),(0,a.iD)("span",yo,(0,o.zw)((0,i.SU)(s).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Go,[Fo,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,i.SU)(s).distance,digits:3,unitFrom:"km",useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,i.SU)(s)&&(0,i.SU)(s).with_gpx?((0,a.wg)(),(0,a.iD)("div",Wo,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,Ko),(0,a._)("div",Yo,[(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,i.SU)(s).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),xo,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,i.SU)(s).max_alt,unitFrom:"m",useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0),(0,i.SU)(s)&&(0,i.SU)(s).with_gpx?((0,a.wg)(),(0,a.iD)("div",Bo,[$o,(0,a._)("div",Zo,[Ho,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,i.SU)(s).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),qo,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,i.SU)(s).descent,unitFrom:"m",useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0)],2)])])}}});const jo=(0,P.Z)(Vo,[["__scopeId","data-v-c9d1f10c"]]);var Xo=jo,Jo=n(5630),Qo=n(3768);const es={id:"timeline"},ts={class:"section-title"},ns={key:0},rs={key:1},as={key:1,class:"more-workouts"};var os=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:s}=(0,i.BK)(t),u=(0,i.iH)(1),d=5,m=t.user.nb_workouts>=d?d:t.user.nb_workouts;(0,a.wF)((()=>E()));const _=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.TIMELINE_WORKOUTS])),S=(0,a.Fl)((()=>_.value.length>0&&null!==_.value[_.value.length-1].previous_workout));function E(){n.dispatch(l.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}function T(){u.value+=1,n.dispatch(l.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",es,[(0,a._)("div",ts,(0,o.zw)(e.$t("workouts.LATEST_WORKOUTS")),1),(0,i.SU)(s).nb_workouts>0&&0===(0,i.SU)(_).length?((0,a.wg)(),(0,a.iD)("div",ns,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)([...Array((0,i.SU)(m)).keys()],(e=>((0,a.wg)(),(0,a.j4)(Xo,{user:(0,i.SU)(s),useImperialUnits:(0,i.SU)(s).imperial_units,key:e},null,8,["user","useImperialUnits"])))),128))])):((0,a.wg)(),(0,a.iD)("div",rs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(_),(e=>((0,a.wg)(),(0,a.j4)(Xo,{workout:e,sport:(0,i.SU)(_).length>0?(0,i.SU)(r).filter((t=>t.id===e.sport_id))[0]:null,user:(0,i.SU)(s),useImperialUnits:(0,i.SU)(s).imperial_units,key:e.id},null,8,["workout","sport","user","useImperialUnits"])))),128)),0===(0,i.SU)(_).length?((0,a.wg)(),(0,a.j4)(Jo.Z,{key:0})):(0,a.kq)("",!0),(0,i.SU)(S)?((0,a.wg)(),(0,a.iD)("div",as,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const ss=(0,P.Z)(os,[["__scopeId","data-v-35567bf2"]]);var is=ss,ls=n(1640),cs=n(4559),us=n(7349),ds=n(1743),ms=n(4703),_s=n(1085);const Ss=["title"];var Es=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const t=e,{displayHARecord:n,workout:r,sportLabel:o,sportColor:s}=(0,i.BK)(t);return(e,t)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:t[0]||(t[0]=t=>e.$router.push({name:"Workout",params:{workoutId:(0,i.SU)(r).id}}))},[(0,a.Wm)(l,{"sport-label":(0,i.SU)(o),title:(0,i.SU)(r).title,color:(0,i.SU)(s)},null,8,["sport-label","title","color"]),(0,a._)("sup",null,[(0,i.SU)(r).records.length>0?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:(0,i.SU)(r).records.filter((e=>!!(0,i.SU)(n)||"HA"!==e.record_type)).map((t=>` ${e.$t(`workouts.RECORD_${t.record_type}`)}`))},null,8,Ss)):(0,a.kq)("",!0)])])}}});const Ts=Es;var ps=Ts;const As={class:"donut-chart"},Os={height:"34",width:"34",viewBox:"0 0 34 34"},Us=["stroke","stroke-dashoffset","transform"];var Rs=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const t=e,{colors:n,datasets:r}=(0,i.BK)(t);let o=-90;const s=16,l=16,c=14,u=2*Math.PI*c;function d(e,t){return t-e*t}function m(e,t){const n=`rotate(${o}, ${s}, ${l})`;return o=360*t+o,n}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",As,[((0,a.wg)(),(0,a.iD)("svg",Os,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,i.SU)(r)),((e,t)=>((0,a.wg)(),(0,a.iD)("g",{key:t},[(0,a._)("circle",{cx:s,cy:l,r:c,fill:"transparent",stroke:(0,i.SU)(n)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(t,e[1].percentage)},null,8,Us)])))),128))]))]))}});const Is=Rs;var gs=Is;const Ns={class:"calendar-workouts-chart"},zs={class:"workouts-count"},hs={key:0,class:"workouts-pane"},ws={class:"more-workouts"};var fs=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const t=e,{colors:n,datasets:r,sports:s,workouts:l}=(0,i.BK)(t),c=(0,i.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,t)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",Ns,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",zs,(0,o.zw)((0,i.SU)(l).length),1),(0,a.Wm)(gs,{datasets:(0,i.SU)(r),colors:(0,i.SU)(n)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",hs,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",ws,[(0,a._)("i",{class:"fa fa-times calendar-more","aria-hidden":"true",onClick:u}),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(l),((e,t)=>((0,a.wg)(),(0,a.j4)(ps,{key:t,workout:e,sportLabel:(0,i.SU)(le.PA)(e,(0,i.SU)(s)),sportColor:(0,i.SU)(le.CM)(e,(0,i.SU)(s))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const vs=(0,P.Z)(fs,[["__scopeId","data-v-52d4310a"]]);var Cs=vs;const Ds={class:"calendar-workouts"},ks={class:"desktop-display"},Ps={key:0,class:"workouts-display"},Ls={key:1,class:"donut-display"},Ms={class:"mobile-display"},bs={key:0,class:"donut-display"};var ys=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const t=e,{displayHARecord:n,workouts:r,sports:o}=(0,i.BK)(t),s=(0,a.Fl)((()=>(0,Qo.BN)(t.workouts))),l=(0,a.Fl)((()=>(0,le.Yx)(t.sports))),c=6;return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ds,[(0,a._)("div",ks,[(0,i.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",Ps,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(r).slice(0,c),((e,t)=>((0,a.wg)(),(0,a.j4)(ps,{key:t,displayHARecord:(0,i.SU)(n),workout:e,sportLabel:(0,i.SU)(le.PA)(e,(0,i.SU)(o)),sportColor:(0,i.SU)(le.CM)(e,(0,i.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ls,[(0,a.Wm)(Cs,{workouts:(0,i.SU)(r),sports:(0,i.SU)(o),datasets:(0,i.SU)(s),colors:(0,i.SU)(l)},null,8,["workouts","sports","datasets","colors"])]))]),(0,a._)("div",Ms,[(0,i.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bs,[(0,a.Wm)(Cs,{workouts:(0,i.SU)(r),sports:(0,i.SU)(o),datasets:(0,i.SU)(s),colors:(0,i.SU)(l)},null,8,["workouts","sports","datasets","colors"])])):(0,a.kq)("",!0)])]))}});const Gs=ys;var Fs=Gs;const Ws={class:"calendar-cells"},Ks={class:"calendar-cell-day"};var Ys=(0,a.aZ)({__name:"CalendarCells",props:{currentDay:null,displayHARecord:{type:Boolean},endDate:null,sports:null,startDate:null,timezone:null,weekStartingMonday:{type:Boolean},workouts:null},setup(e){const t=e,{currentDay:n,displayHARecord:r,endDate:s,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,i.BK)(t),_=(0,i.iH)([]);function S(){_.value=[];let e=c.value;while(e<=s.value){const t=[];for(let n=0;n<7;n++)t.push(e),e=(0,us.Z)(e,1);_.value.push(t)}}function E(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,t){return t?t.filter((t=>(0,ds.Z)((0,xe.eB)(t.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>S())),(0,a.YP)((()=>t.currentDay),(()=>S())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ws,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(_.value,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:t},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,i.SU)(ms.Z)(e,(0,i.SU)(n)),"week-end":E(t),today:(0,i.SU)(_s.Z)(e)}]),key:t},[(0,a.Wm)(Fs,{workouts:T(e,(0,i.SU)(m)),sports:(0,i.SU)(l),displayHARecord:(0,i.SU)(r)},null,8,["workouts","sports","displayHARecord"]),(0,a._)("div",Ks,(0,o.zw)((0,i.SU)(ke.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const xs=Ys;var Bs=xs;const $s={class:"calendar-days"};var Zs=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const t=e,n=[];for(let r=0;r<7;r++)n.push((0,us.Z)(t.startDate,r));return(t,r)=>((0,a.wg)(),(0,a.iD)("div",$s,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(n,((t,n)=>(0,a._)("div",{class:"calendar-day",key:n},(0,o.zw)((0,i.SU)(ke.Z)(t,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Hs=Zs;var qs=Hs;const Vs={class:"calendar-header"},js=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Xs=[js],Js={class:"calendar-month"},Qs=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),ei=[Qs];var ti=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:t}){const n=e,{day:r,localeOptions:s}=(0,i.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Vs,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:n[0]||(n[0]=e=>t("displayPreviousMonth"))},Xs),(0,a._)("div",Js,[(0,a._)("span",null,(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(r),"MMM yyyy",{locale:(0,i.SU)(s)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:n[1]||(n[1]=e=>t("displayNextMonth"))},ei)]))}});const ni=ti;var ri=ni;const ai={id:"user-calendar"},oi={class:"calendar-card box"};var si=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:o}=(0,i.BK)(t),s="yyyy-MM-dd",u=(0,i.iH)(new Date),d=(0,i.iH)((0,xe.yx)(u.value,t.user.weekm)),m=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.CALENDAR_WORKOUTS])),_=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));function S(){d.value=(0,xe.yx)(u.value,t.user.weekm);const e={from:(0,ke.Z)(d.value.start,s),to:(0,ke.Z)(d.value.end,s),page:1,per_page:100,...Qo.eR};n.dispatch(l.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function E(){u.value=(0,ls.Z)(u.value,1),S()}function T(){u.value=(0,cs.Z)(u.value,1),S()}return(0,a.wF)((()=>S())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",ai,[(0,a._)("div",oi,[(0,a.Wm)(ri,{day:u.value,"locale-options":(0,i.SU)(_),onDisplayNextMonth:E,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(qs,{"start-date":d.value.start,"locale-options":(0,i.SU)(_)},null,8,["start-date","locale-options"]),(0,a.Wm)(Bs,{currentDay:u.value,displayHARecord:(0,i.SU)(o).display_ascent,"end-date":d.value.end,sports:(0,i.SU)(r),"start-date":d.value.start,timezone:(0,i.SU)(o).timezone,workouts:(0,i.SU)(m),weekStartingMonday:(0,i.SU)(o).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}});const ii=si;var li=ii,ci=n(3703),ui=n(4135),di=n(4998);const mi={class:"user-month-stats"};var _i=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const t=e,{sports:n,user:r}=(0,i.BK)(t),s=new Date,l={duration:"week",start:(0,ci.Z)(s),end:(0,ui.Z)(s)},c=t.sports.map((e=>e.id));return(e,t)=>{const s=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",mi,[(0,a.Wm)(s,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("dashboard.THIS_MONTH")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(di.Z,{sports:(0,i.SU)(n),user:(0,i.SU)(r),"chart-params":l,"displayed-sport-ids":(0,i.SU)(c),"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])),_:1})])}}});const Si=(0,P.Z)(_i,[["__scopeId","data-v-1bcddc12"]]);var Ei=Si,Ti=(n(1703),n(3649));const pi=(e,t,n)=>{const r="km",a=n?Ti.Dl[r].defaultTarget:r,o="m",s=n?Ti.Dl[o].defaultTarget:o;let i;switch(e.record_type){case"AS":case"MS":i=`${(0,Ti.sC)(+e.value,r,a,2)} ${a}/h`;break;case"FD":i=`${(0,Ti.sC)(+e.value,r,a,3)} ${a}`;break;case"HA":i=`${(0,Ti.sC)(+e.value,o,s,2)} ${s}`;break;case"LD":i=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{workout_date:(0,xe.Jo)((0,xe.eB)(e.workout_date,t)).workout_date,workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:i}},Ai=(e,t)=>{const n=e.label.toLowerCase(),r=t.label.toLowerCase();return n>r?1:ne.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const o=t.find((e=>e.id===a.sport_id));return o&&o.label&&(void 0===e[o.translatedLabel]&&(e[o.translatedLabel]={label:o.label,color:o.color,records:[]}),e[o.translatedLabel].records.push(pi(a,n,r))),e}),{}),Ui={class:"records-card"},Ri={class:"record-type"},Ii={class:"record-value"},gi={class:"record-date"};var Ni=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const t=e,{records:n,sportTranslatedLabel:r}=(0,i.BK)(t),{t:s}=(0,ie.QT)();function l(e){const t=[];return e.map((e=>{t.push({...e,label:s(`workouts.RECORD_${e.record_type}`)})})),t.sort(Ai)}return(e,t)=>{const s=(0,a.up)("SportImage"),c=(0,a.up)("router-link"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Ui,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(s,{"sport-label":(0,i.SU)(n).label,color:(0,i.SU)(n).color},null,8,["sport-label","color"]),(0,a.Uk)(" "+(0,o.zw)((0,i.SU)(r)),1)])),content:(0,a.w5)((()=>[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(l((0,i.SU)(n).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",Ri,(0,o.zw)(e.label),1),(0,a._)("span",Ii,(0,o.zw)(e.value),1),(0,a._)("span",gi,[(0,a.Wm)(c,{to:{name:"Workout",params:{workoutId:e.workout_id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.workout_date),1)])),_:2},1032,["to"])])])))),128))])),_:1})])}}});const zi=(0,P.Z)(Ni,[["__scopeId","data-v-b5480ab0"]]);var hi=zi;const wi=e=>((0,a.dD)("data-v-27dfbb65"),e=e(),(0,a.Cn)(),e),fi={class:"user-records-section"},vi={class:"section-title"},Ci=wi((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),Di={class:"user-records"},ki={key:0,class:"no-records"};var Pi=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,{t:n}=(0,ie.QT)(),r=(0,a.Fl)((()=>Oi(t.user.records,(0,le.xH)(t.sports,n),t.user.timezone,t.user.imperial_units,t.user.display_ascent)));return(t,n)=>((0,a.wg)(),(0,a.iD)("div",fi,[(0,a._)("div",vi,[Ci,(0,a.Uk)(" "+(0,o.zw)(t.$t("workouts.RECORD",2)),1)]),(0,a._)("div",Di,[0===Object.keys((0,i.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",ki,(0,o.zw)(t.$t("workouts.NO_RECORDS")),1)):(0,a.kq)("",!0),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.keys((0,i.SU)(r)).sort(),(t=>((0,a.wg)(),(0,a.j4)(hi,{sportTranslatedLabel:t,records:(0,i.SU)(r)[t],key:t,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const Li=(0,P.Z)(Pi,[["__scopeId","data-v-27dfbb65"]]);var Mi=Li;const bi={id:"user-stats"};var yi=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,{t:n}=(0,ie.QT)(),{user:r}=(0,i.BK)(t),o=(0,a.Fl)((()=>t.user.total_duration)),s=(0,a.Fl)((()=>S(o))),l="km",c=r.value.imperial_units?Ti.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,Ti.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?Ti.Dl[d].defaultTarget:d,_=(0,a.Fl)((()=>r.value.imperial_units?(0,Ti.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function S(e){const t=e.value.match(/day/g)?e.value.split(", ")[1]:e.value;return{days:e.value.match(/day/g)?`${e.value.split(" ")[0]} ${e.value.match(/days/g)?n("common.DAY",2):n("common.DAY",1)}`:`0 ${n("common.DAY",2)},`,duration:`${t.split(":")[0]}h ${t.split(":")[1]}min`}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",bi,[(0,a.Wm)(B,{icon:"calendar",value:(0,i.SU)(r).nb_workouts,text:e.$t("workouts.WORKOUT",(0,i.SU)(r).nb_workouts)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"road",value:(0,i.SU)(u),text:"mi"===(0,i.SU)(c)?"miles":(0,i.SU)(c)},null,8,["value","text"]),(0,i.SU)(r).display_ascent?((0,a.wg)(),(0,a.j4)(B,{key:0,icon:"location-arrow",value:(0,i.SU)(_),text:"ft"===(0,i.SU)(m)?"feet":(0,i.SU)(m)},null,8,["value","text"])):(0,a.kq)("",!0),(0,a.Wm)(B,{icon:"clock-o",value:(0,i.SU)(s).days,text:(0,i.SU)(s).duration},null,8,["value","text"]),(0,i.SU)(r).display_ascent?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(B,{key:1,icon:"tags",value:(0,i.SU)(r).nb_sports,text:e.$t("workouts.SPORT",(0,i.SU)(r).nb_sports)},null,8,["value","text"]))]))}});const Gi=yi;var Fi=Gi;const Wi=e=>((0,a.dD)("data-v-4c0893c1"),e=e(),(0,a.Cn)(),e),Ki={key:0,id:"dashboard",class:"view"},Yi={class:"container mobile-menu"},xi={class:"box"},Bi=Wi((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),$i=[Bi],Zi=Wi((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),Hi=[Zi],qi=Wi((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),Vi=[qi],ji=Wi((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Xi=[ji],Ji={class:"container"},Qi={class:"container dashboard-container"},el={class:"left-container dashboard-sub-container"},tl={class:"right-container dashboard-sub-container"},nl=Wi((()=>(0,a._)("div",{id:"bottom"},null,-1))),rl={key:1,class:"app-loading"};var al=(0,a.aZ)({__name:"Dashboard",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>t.getters[l.O8.GETTERS.SPORTS])),s=(0,i.iH)("calendar");function u(e){s.value=e}return(0,a.wF)((()=>t.dispatch(l.YN.ACTIONS.GET_USER_PROFILE))),(e,t)=>{const l=(0,a.up)("Loader");return(0,i.SU)(n).username&&(0,i.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",Ki,[(0,a._)("div",Yi,[(0,a._)("div",xi,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===s.value}]),onClick:t[0]||(t[0]=e=>u("calendar"))},$i,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===s.value}]),onClick:t[1]||(t[1]=e=>u("chart"))},Hi,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===s.value}]),onClick:t[2]||(t[2]=e=>u("timeline"))},Vi,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===s.value}]),onClick:t[3]||(t[3]=e=>u("records"))},Xi,2)])]),(0,a._)("div",Ji,[(0,a.Wm)(Fi,{user:(0,i.SU)(n)},null,8,["user"])]),(0,a._)("div",Qi,[(0,a._)("div",el,[(0,a.Wm)(Ei,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("chart"===s.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Mi,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("records"===s.value)})},null,8,["sports","user","class"])]),(0,a._)("div",tl,[(0,a.Wm)(li,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("calendar"===s.value)})},null,8,["sports","user","class"]),(0,a.Wm)(is,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("timeline"===s.value)})},null,8,["sports","user","class"])])]),nl])):((0,a.wg)(),(0,a.iD)("div",rl,[(0,a.Wm)(l)]))}}});const ol=(0,P.Z)(al,[["__scopeId","data-v-4c0893c1"]]);var sl=ol,il=n(8273);const ll={class:"not-found view"};var cl=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",ll,[(0,a.Wm)(il.Z)]))}});const ul=cl;var dl=ul,ml=n(2411);const _l={id:"loginOrRegister",class:"view"},Sl={class:"container"},El={class:"container-sub"},Tl={class:"container-sub"};var pl=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const t=e,{action:n}=(0,i.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",_l,[(0,a._)("div",Sl,[(0,a._)("div",El,[(0,a.Wm)(To)]),(0,a._)("div",Tl,[(0,a.Wm)(ml.Z,{action:(0,i.SU)(n)},null,8,["action"])])])]))}});const Al=(0,P.Z)(pl,[["__scopeId","data-v-6a38125b"]]);var Ol=Al;const Ul=e=>{const t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return""===n?"PROFILE":n.toUpperCase()},Rl=[{path:"/",name:"Dashboard",component:sl},{path:"/login",name:"Login",component:Ol,props:{action:"login"}},{path:"/register",name:"Register",component:Ol,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>n.e(845).then(n.bind(n,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>n.e(845).then(n.bind(n,8160))},{path:"/profile",name:"Profile",component:()=>n.e(845).then(n.bind(n,6266)),children:[{path:"",name:"UserProfile",component:zt,props:e=>({tab:Ul(e.path)}),children:[{path:"",name:"UserInfos",component:ht.Z},{path:"preferences",name:"UserPreferences",component:kt},{path:"sports",name:"UserSportPreferences",component:Ha,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:qr,children:[{path:"",name:"UserAppsList",component:pa},{path:":id",name:"UserApp",component:la},{path:":id/created",name:"CreatedUserApp",component:la,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:kr},{path:"authorize",name:"AuthorizeUserApp",component:Br}]}]},{path:"edit",name:"UserProfileEdition",component:bt,props:e=>({tab:Ul(e.path)}),children:[{path:"",name:"UserInfosEdition",component:En},{path:"account",name:"UserAccountEdition",component:jt},{path:"picture",name:"UserPictureEdition",component:wn},{path:"preferences",name:"UserPreferencesEdition",component:ir},{path:"sports",name:"UserSportPreferencesEdition",component:Ha,props:{isEdition:!0}}]}]},{path:"/statistics",name:"Statistics",component:()=>n.e(193).then(n.bind(n,7885))},{path:"/users/:username",name:"User",component:()=>n.e(845).then(n.bind(n,9453))},{path:"/workouts",name:"Workouts",component:()=>n.e(401).then(n.bind(n,7017))},{path:"/workouts/:workoutId",name:"Workout",component:()=>n.e(401).then(n.bind(n,6466)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>n.e(401).then(n.bind(n,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>n.e(401).then(n.bind(n,6466)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>n.e(401).then(n.bind(n,4189))},{path:"/admin",name:"Administration",component:()=>n.e(328).then(n.bind(n,6e3)),children:[{path:"",name:"AdministrationMenu",component:se},{path:"application",name:"ApplicationAdministration",component:M},{path:"application/edit",name:"ApplicationAdministrationEdition",component:M,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:De},{path:"users/:username",name:"UserFromAdmin",component:()=>n.e(845).then(n.bind(n,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:_t}]},{path:"/about",name:"About",component:go},{path:"/:pathMatch(.*)*",name:"not-found",component:dl}],Il=(0,r.p7)({history:(0,r.PO)("/"),routes:Rl}),gl=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],Nl=["/email-update","/about"];Il.beforeEach(((e,t,n)=>{qa.Z.dispatch(l.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(Nl.includes(e.path))return n();if(qa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]&&gl.includes(e.path))return n("/");if(qa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]||gl.includes(e.path))n();else{const t="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(t)}})).catch((e=>{console.error(e),n()}))}));var zl=Il},5801:function(e,t,n){"use strict";var r,a,o,s,i,l,c,u,d,m,_,S,E,T,p,A,O,U;n.d(t,{YN:function(){return z},Km:function(){return h},SY:function(){return I},O8:function(){return g},gu:function(){return N},RT:function(){return w},aX:function(){return f}}),function(e){e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["CONFIRM_ACCOUNT"]="CONFIRM_ACCOUNT",e["CONFIRM_EMAIL"]="CONFIRM_EMAIL",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["RESEND_ACCOUNT_CONFIRMATION_EMAIL"]="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["RESET_USER_SPORT_PREFERENCES"]="RESET_USER_SPORT_PREFERENCES",e["UPDATE_USER_ACCOUNT"]="UPDATE_USER_ACCOUNT",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES",e["UPDATE_USER_SPORT_PREFERENCES"]="UPDATE_USER_SPORT_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["IS_SUCCESS"]="IS_SUCCESS",e["IS_REGISTRATION_SUCCESS"]="IS_REGISTRATION_SUCCESS",e["USER_LOADING"]="USER_LOADING"}(a||(a={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_IS_SUCCESS"]="UPDATE_USER_IS_SUCCESS",e["UPDATE_IS_REGISTRATION_SUCCESS"]="UPDATE_IS_REGISTRATION_SUCCESS",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING"}(o||(o={})),function(e){e["AUTHORIZE_CLIENT"]="AUTHORIZE_CLIENT",e["CREATE_CLIENT"]="CREATE_CLIENT",e["DELETE_CLIENT"]="DELETE_CLIENT",e["GET_CLIENTS"]="GET_CLIENTS",e["GET_CLIENT_BY_CLIENT_ID"]="GET_CLIENT_BY_CLIENT_ID",e["GET_CLIENT_BY_ID"]="GET_CLIENT_BY_ID",e["REVOKE_ALL_TOKENS"]="REVOKE_ALL_TOKENS"}(s||(s={})),function(e){e["CLIENT"]="CLIENT",e["CLIENTS"]="CLIENTS",e["CLIENTS_PAGINATION"]="CLIENTS_PAGINATION",e["REVOCATION_SUCCESSFUL"]="REVOCATION_SUCCESSFUL"}(i||(i={})),function(e){e["EMPTY_CLIENT"]="EMPTY_CLIENT",e["SET_CLIENT"]="SET_CLIENT",e["SET_CLIENTS"]="SET_CLIENTS",e["SET_CLIENTS_PAGINATION"]="SET_CLIENTS_PAGINATION",e["SET_REVOCATION_SUCCESSFUL"]="SET_REVOCATION_SUCCESSFUL"}(l||(l={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LANGUAGE"]="UPDATE_APPLICATION_LANGUAGE"}(c||(c={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(u||(u={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(d||(d={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(m||(m={})),function(e){e["SPORTS"]="SPORTS"}(_||(_={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(S||(S={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(E||(E={})),function(e){e["USER_STATS"]="USER_STATS"}(T||(T={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(p||(p={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER",e["DELETE_USER_ACCOUNT"]="DELETE_USER_ACCOUNT"}(A||(A={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_IS_SUCCESS"]="USERS_IS_SUCCESS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(O||(O={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION",e["UPDATE_IS_SUCCESS"]="UPDATE_IS_SUCCESS"}(U||(U={}));var R=n(52);const I={ACTIONS:c,GETTERS:u,MUTATIONS:d},g={ACTIONS:m,GETTERS:_,MUTATIONS:S},N={ACTIONS:E,GETTERS:T,MUTATIONS:p},z={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:s,GETTERS:i,MUTATIONS:l},w={ACTIONS:A,GETTERS:O,MUTATIONS:U},f={ACTIONS:R.tW,GETTERS:R.JP,MUTATIONS:R.CW}},2894:function(e,t,n){"use strict";n.d(t,{Z:function(){return me}});var r=n(3907),a=(n(7658),n(1703),n(5167)),o=n(9669),s=n.n(o),i=n(8566),l=n(2024);const c=s().create({baseURL:(0,l.k)()});c.interceptors.request.use((e=>{const t=new AbortController;e.signal=t.signal;const n=(0,i.a)(e);return i.j.set(n,t),e}),(e=>Promise.reject(e))),c.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,i.a)(e.response.config),Promise.reject(e))));var u=c,d=n(9160),m=n(5801);const _=(e,t)=>{e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${t.username}`).then((n=>{204===n.status?t.fromAdmin?d.Z.push("/admin/users"):e.dispatch(m.YN.ACTIONS.LOGOUT).then((()=>d.Z.push("/"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},S={[m.RT.ACTIONS.EMPTY_USER](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USER,{})},[m.RT.ACTIONS.EMPTY_USERS](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(m.RT.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[m.RT.ACTIONS.GET_USER](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${t}`).then((t=>{"success"===t.data.status?e.commit(m.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0]):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[m.RT.ACTIONS.GET_USERS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:t}).then((t=>{"success"===t.data.status?(e.commit(m.RT.MUTATIONS.UPDATE_USERS,t.data.data.users),e.commit(m.RT.MUTATIONS.UPDATE_USERS_PAGINATION,t.data.pagination)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[m.RT.ACTIONS.UPDATE_USER](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n={};void 0!==t.admin&&(n.admin=t.admin),t.resetPassword&&(n.reset_password=t.resetPassword),t.activate&&(n.activate=t.activate),void 0!==t.new_email&&(n.new_email=t.new_email),a.Z.patch(`users/${t.username}`,n).then((n=>{"success"===n.data.status?(e.commit(m.RT.MUTATIONS.UPDATE_USER_IN_USERS,n.data.data.users[0]),(t.resetPassword||t.new_email)&&e.commit(m.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(t.activate||t.new_email)&&e.commit(m.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0])):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[m.RT.ACTIONS.DELETE_USER_ACCOUNT](e,t){_(e,{username:t.username,fromAdmin:!0})}},E=e=>{localStorage.removeItem("authToken"),e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.gu.MUTATIONS.EMPTY_USER_STATS),e.commit(m.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(m.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(m.aX.MUTATIONS.EMPTY_WORKOUTS),e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),d.Z.push("/login")},T={[m.YN.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[m.YN.GETTERS.IS_AUTHENTICATED]&&(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE)),!window.localStorage.authToken&&e.getters[m.YN.GETTERS.IS_AUTHENTICATED]&&E(e)},[m.YN.ACTIONS.CONFIRM_ACCOUNT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/account/confirm",{token:t.token}).then((t=>{if("success"===t.data.status){const n=t.data.auth_token;window.localStorage.setItem("authToken",n),e.commit(m.YN.MUTATIONS.UPDATE_AUTH_TOKEN,n),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/")))}else(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t)}))},[m.YN.ACTIONS.CONFIRM_EMAIL](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),u.post("/auth/email/update",{token:t.token}).then((n=>{"success"===n.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),t.refreshUser&&e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/profile/edit/account"))),d.Z.push("/profile/edit/account")):(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t)}))},[m.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),t.data.data.language&&e.dispatch(m.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language),e.dispatch(m.O8.ACTIONS.GET_SPORTS)):((0,l.S)(e,null),E(e))})).catch((t=>{"canceled"!==t.message&&((0,l.S)(e,t),E(e))}))},[m.YN.ACTIONS.LOGIN_OR_REGISTER](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),u.post(`/auth/${t.actionType}`,t.formData).then((n=>{if("success"===n.data.status)if("login"===t.actionType){const r=n.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(m.YN.MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("string"===typeof t.redirectUrl?t.redirectUrl:"/")))}else d.Z.push("/login").then((()=>e.commit(m.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.LOGOUT](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((t=>{"success"===t.data.status?E(e):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.UPDATE_USER_PROFILE](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",t).then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),d.Z.push("/profile")):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.Z.patch("auth/profile/edit/account",t).then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",t).then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.dispatch(m.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language).then((()=>d.Z.push("/profile/preferences")))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${t}`).then((t=>{204===t.status?e.dispatch(m.O8.ACTIONS.GET_SPORTS):(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[m.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",t).then((t=>{"success"===t.data.status?e.dispatch(m.O8.ACTIONS.GET_SPORTS):(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[m.YN.ACTIONS.UPDATE_USER_PICTURE](e,t){if(e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");const n=new FormData;n.append("file",t.picture),a.Z.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then((t=>{"success"===t.data.status?e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/profile"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.DELETE_ACCOUNT](e,t){_(e,t)},[m.YN.ACTIONS.DELETE_PICTURE](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"]("auth/picture").then((t=>{204===t.status?e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/profile"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/password/reset-request",t).then((t=>{"success"===t.data.status?d.Z.push("/password-reset/sent"):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/account/resend-confirmation",t).then((t=>{"success"===t.data.status?d.Z.push("/account-confirmation/email-sent"):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.RESET_USER_PASSWORD](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/password/update",t).then((t=>{"success"===t.data.status?d.Z.push("/password-reset/password-updated"):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},p={[m.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[m.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[m.YN.GETTERS.IS_AUTHENTICATED]:e=>null!==e.authToken,[m.YN.GETTERS.IS_ADMIN]:e=>e.authUserProfile&&e.authUserProfile.admin,[m.YN.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[m.YN.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[m.YN.GETTERS.USER_LOADING]:e=>e.loading},A={[m.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[m.YN.MUTATIONS.UPDATE_AUTH_TOKEN](e,t){e.authToken=t},[m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,t){e.authUserProfile=t},[m.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,t){e.isRegistrationSuccess=t},[m.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[m.YN.MUTATIONS.UPDATE_USER_LOADING](e,t){e.loading=t}},O={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1},U={state:O,actions:T,getters:p,mutations:A};var R=U;const I=(e,t)=>{e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(t).then((t=>{"success"===t.data.status?e.commit(m.Km.MUTATIONS.SET_CLIENT,t.data.data.client):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},g={[m.Km.ACTIONS.AUTHORIZE_CLIENT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const n=new FormData;n.set("client_id",t.client_id),n.set("response_type",t.response_type),n.set("scope",t.scope),n.set("confirm","true"),t.state&&n.set("state",t.state),t.code_challenge&&n.set("code_challenge",t.code_challenge),t.code_challenge_method&&n.set("code_challenge_method",t.code_challenge_method),a.Z.post("oauth/authorize",n,{headers:{"Content-Type":"multipart/form-data"}}).then((t=>{200==t.status&&t.data.redirect_url?window.location.href=t.data.redirect_url:(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.CREATE_CLIENT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",t).then((t=>{"created"===t.data.status?(e.commit(m.Km.MUTATIONS.SET_CLIENT,t.data.data.client),d.Z.push(`/profile/apps/${t.data.data.client.id}/created`)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.DELETE_CLIENT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${t}`).then((t=>{204===t.status?e.dispatch(m.Km.ACTIONS.GET_CLIENTS).then((()=>d.Z.push("/profile/apps"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,t){I(e,`oauth/apps/${t}`)},[m.Km.ACTIONS.GET_CLIENT_BY_ID](e,t){I(e,`oauth/apps/${t}/by_id`)},[m.Km.ACTIONS.GET_CLIENTS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:t}).then((t=>{"success"===t.data.status?(e.commit(m.Km.MUTATIONS.SET_CLIENTS,t.data.data.clients),e.commit(m.Km.MUTATIONS.SET_CLIENTS_PAGINATION,t.data.pagination)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.REVOKE_ALL_TOKENS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${t}/revoke`).then((t=>{"success"===t.data.status?e.commit(m.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},N={[m.Km.GETTERS.CLIENT]:e=>e.client,[m.Km.GETTERS.CLIENTS]:e=>e.clients,[m.Km.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[m.Km.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},z={[m.Km.MUTATIONS.SET_CLIENT](e,t){e.client=t},[m.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[m.Km.MUTATIONS.SET_CLIENTS](e,t){e.clients=t},[m.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,t){e.pagination=t},[m.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,t){e.revocationSuccessful=t}},h={client:{},clients:[],pagination:{},revocationSuccessful:!1},w={state:h,actions:g,getters:N,mutations:z};var f=w,v=n(2540);const{locale:C}=v.Z.global,D={[m.SY.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),a.Z.get("config").then((t=>{"success"===t.data.status?e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!1)))},[m.SY.ACTIONS.GET_APPLICATION_STATS](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("stats/all").then((t=>{"success"===t.data.status?e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",t).then((t=>{"success"===t.data.status?(e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data),d.Z.push("/admin/application")):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,t){document.querySelector("html")?.setAttribute("lang",t),e.commit(m.SY.MUTATIONS.UPDATE_LANG,t),C.value=t}},k={[m.SY.GETTERS.APP_CONFIG]:e=>e.application.config,[m.SY.GETTERS.APP_LOADING]:e=>e.appLoading,[m.SY.GETTERS.APP_STATS]:e=>e.application.statistics,[m.SY.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[m.SY.GETTERS.LANGUAGE]:e=>e.language,[m.SY.GETTERS.LOCALE]:e=>e.locale};var P=n(6287);const L={[m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[m.SY.MUTATIONS.SET_ERROR_MESSAGES](e,t){e.errorMessages=t},[m.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,t){e.application.config=t},[m.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,t){e.appLoading=t},[m.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,t){e.application.statistics=t},[m.SY.MUTATIONS.UPDATE_LANG](e,t){e.language=t,e.locale=P.v1[t]}};var M=n(5826);const b={root:!0,language:"en",locale:M.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},y={[m.O8.ACTIONS.GET_SPORTS](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((t=>{"success"===t.data.status?(e.commit(m.O8.MUTATIONS.SET_SPORTS,t.data.data.sports),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.O8.ACTIONS.UPDATE_SPORTS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${t.id}`,{is_active:t.isActive}).then((t=>{"success"===t.data.status?e.dispatch(m.O8.ACTIONS.GET_SPORTS):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},G={[m.O8.GETTERS.SPORTS]:e=>e.sports},F={[m.O8.MUTATIONS.SET_SPORTS](e,t){e.sports=t}},W={sports:[]},K={state:W,actions:y,getters:G,mutations:F};var Y=K;const x={[m.gu.ACTIONS.GET_USER_STATS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${t.username}/${t.filterType}`,{params:t.params}).then((t=>{"success"===t.data.status?e.commit(m.gu.MUTATIONS.UPDATE_USER_STATS,t.data.data.statistics):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},B={[m.gu.GETTERS.USER_STATS]:e=>e.statistics},$={[m.gu.MUTATIONS.UPDATE_USER_STATS](e,t){e.statistics=t},[m.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},Z={statistics:{}},H={state:Z,actions:x,getters:B,mutations:$};var q=H;const V={[m.RT.GETTERS.USER]:e=>e.user,[m.RT.GETTERS.USERS]:e=>e.users,[m.RT.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[m.RT.GETTERS.USERS_LOADING]:e=>e.loading,[m.RT.GETTERS.USERS_PAGINATION]:e=>e.pagination},j={[m.RT.MUTATIONS.UPDATE_USER](e,t){e.user=t},[m.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,t){e.users=e.users.map((e=>e.username===t.username?t:e))},[m.RT.MUTATIONS.UPDATE_USERS](e,t){e.users=t},[m.RT.MUTATIONS.UPDATE_USERS_LOADING](e,t){e.loading=t},[m.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,t){e.pagination=t},[m.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t}},X={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},J={state:X,actions:S,getters:V,mutations:j};var Q=J,ee=n(52);const te=(e,t,n)=>{e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:t}).then((t=>{"success"===t.data.status?(e.commit(m.aX.MUTATIONS[n],t.data.data.workouts),n===ee.CW.SET_USER_WORKOUTS&&e.commit(m.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,t.data.pagination)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},ne={[m.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,t){e.commit(m.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),te(e,t,ee.CW.SET_CALENDAR_WORKOUTS)},[m.aX.ACTIONS.GET_USER_WORKOUTS](e,t){te(e,t,ee.CW.SET_USER_WORKOUTS)},[m.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,t){te(e,t,ee.CW.SET_TIMELINE_WORKOUTS)},[m.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,t){te(e,t,ee.CW.ADD_TIMELINE_WORKOUTS)},[m.aX.ACTIONS.GET_WORKOUT_DATA](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const n=t.segmentId?`/segment/${t.segmentId}`:"";a.Z.get(`workouts/${t.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(t.segmentId&&(0===o.segments.length||!o.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(m.aX.MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(a.Z.get(`workouts/${t.workoutId}/chart_data${n}`).then((t=>{"success"===t.data.status&&e.commit(m.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,t.data.data.chart_data)})),a.Z.get(`workouts/${t.workoutId}/gpx${n}`).then((t=>{"success"===t.data.status&&e.commit(m.aX.MUTATIONS.SET_WORKOUT_GPX,t.data.data.gpx)})))}else e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),(0,l.S)(e,null)})).catch((t=>{e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.DELETE_WORKOUT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${t.workoutId}`).then((()=>{e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE),d.Z.push("/")})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.EDIT_WORKOUT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${t.workoutId}`,t.data).then((()=>{e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(m.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then((()=>{d.Z.push({name:"Workout",params:{workoutId:t.workoutId}})}))})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.ADD_WORKOUT](e,t){if(e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");const n=new FormData;n.append("file",t.file),n.append("data",`{"sport_id": ${t.sport_id}, "notes": "${t.notes}"}`),a.Z.post("workouts",n,{headers:{"content-type":"multipart/form-data"}}).then((t=>{if("created"===t.data.status){e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];d.Z.push(1===t.data.data.workouts.length?`/workouts/${n.id}`:"/")}})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",t).then((t=>{if("created"===t.data.status){e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];d.Z.push(`/workouts/${n.id}`)}})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},re={[m.aX.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[m.aX.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[m.aX.GETTERS.USER_WORKOUTS]:e=>e.user_workouts,[m.aX.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[m.aX.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},ae={[m.aX.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=e.timeline_workouts.concat(t)},[m.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,t){e.calendar_workouts=t},[m.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=t},[m.aX.MUTATIONS.SET_USER_WORKOUTS](e,t){e.user_workouts=t},[m.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,t){e.pagination=t},[m.aX.MUTATIONS.SET_WORKOUT](e,t){e.workoutData.workout=t},[m.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,t){e.workoutData.chartData=t},[m.aX.MUTATIONS.SET_WORKOUT_GPX](e,t){e.workoutData.gpx=t},[m.aX.MUTATIONS.SET_WORKOUT_LOADING](e,t){e.workoutData.loading=t},[m.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[m.aX.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[m.aX.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}}},oe={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},se={state:oe,actions:ne,getters:re,mutations:ae};var ie=se;const le={authUserModule:R,oAuthModule:f,sportsModule:Y,statsModule:q,usersModule:Q,workoutsModule:ie},ce={state:b,actions:D,getters:k,mutations:L,modules:le};var ue=ce;const de=(0,r.MT)(ue);var me=de},52:function(e,t,n){"use strict";var r,a,o;n.d(t,{CW:function(){return o},JP:function(){return a},tW:function(){return r}}),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(a||(a={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(o||(o={}))},9917:function(e,t,n){"use strict";n.d(t,{o:function(){return a}});var r=n(3907);function a(){return(0,r.oR)()}},2766:function(e,t,n){"use strict";n.d(t,{Hf:function(){return a},Ne:function(){return c},fS:function(){return r},lM:function(){return d},pm:function(){return l},z_:function(){return s}});const r=["asc","desc"],a=1,o=10,s=(e,t)=>e&&"string"===typeof e&&+e>0?+e:t,i=(e,t,n)=>e&&"string"===typeof e&&t.includes(e)?e:n,l=(e,t,n,l)=>{const c=l||{},u=c.defaultSort||"asc",d={};return d.page=s(e.page,a),d.per_page=s(e.per_page,o),d.order=i(e.order,r,u),d.order_by=i(e.order_by,t,n),"string"===typeof e.q?d.q=e.q:delete d.q,d},c=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=(e,t=1)=>Array.from({length:e-t+1},((e,n)=>t+n)),d=(e,t)=>{if(e<0)return[];if(e<9)return u(e);let n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(u(t+2,3)):(n=n.concat(["..."]),t=e-2&&n[n.length-1]{switch(e){case"week":return(0,r.Z)(t,{weekStartsOn:n?1:0});case"year":return(0,a.Z)(t);case"month":return(0,o.Z)(t);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},S=(e,t)=>{switch(e){case"week":return(0,s.Z)(t,7);case"year":return(0,i.Z)(t,1);case"month":return(0,l.Z)(t,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},E=(e,t)=>(0,m.utcToZonedTime)(new Date(e),t),T=(e,t)=>{const n=(0,o.Z)(e),a=(0,c.Z)(e),s=t?1:0;return{start:(0,r.Z)(n,{weekStartsOn:s}),end:(0,u.Z)(a,{weekStartsOn:s})}},p=(e,t=null,n=null)=>(t||(t="yyyy/MM/dd"),n||(n="HH:mm"),{workout_date:(0,d.Z)(e,t),workout_time:(0,d.Z)(e,n)})},8966:function(e,t,n){"use strict";n.d(t,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,t=!0)=>{const n=Math.floor(Math.log(e)/Math.log(1024));if(!e)return t?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,n)).toFixed(1),o=r[n];return t?`${a}${o}`:{size:a,suffix:o}},o=e=>{const t=e/1048576;return+t.toFixed(2)}},2024:function(e,t,n){"use strict";n.d(t,{S:function(){return o},k:function(){return a}});var r=n(5801);const a=()=>"/api/",o=(e,t,n="UNKNOWN")=>{if(t&&"canceled"===t.message)return;if(401===t?.response?.status&&"invalid_token"===t.response.data.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const a=t?t.response?413===t.response.status?"file size is greater than the allowed size":t.response.data.message?t.response.data.message:n:t.message?t.message:n:n;e.commit(r.SY.MUTATIONS.SET_ERROR_MESSAGES,a.includes("\n")?a.split("\n").filter((e=>""!==e)).map((e=>`api.ERROR.${e}`)):`api.ERROR.${a}`)}},6287:function(e,t,n){"use strict";n.d(t,{mT:function(){return u},v1:function(){return i},zK:function(){return l}});var r=n(879),a=n(5826),o=n(5830),s=n(2540);const i={de:r.Z,en:a.Z,fr:o.Z},l={de:"Deutsch",en:"English",fr:"Français"},{availableLocales:c}=s.Z.global,u=c.map((e=>({label:l[e],value:e})))},631:function(e,t,n){"use strict";n.d(t,{CM:function(){return l},PA:function(){return i},Yx:function(){return a},Zo:function(){return r},xH:function(){return s}});const r={"Cycling (Sport)":"#4c9792","Cycling (Transport)":"#88af98",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const t={};return e.map((e=>t[e.id]=e.color?e.color:r[e.label])),t},o=(e,t)=>{const n=e.translatedLabel.toLowerCase(),r=t.translatedLabel.toLowerCase();return n>r?1:ne.filter((e=>"all"===n||(r.includes(e.id)||e[n]))).map((e=>({...e,translatedLabel:t(`sports.${e.label}.LABEL`)}))).sort(o),i=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.label))[0],l=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,t,n){"use strict";n.d(t,{FN:function(){return w},aZ:function(){return h},v1:function(){return z}});n(7658);var r=n(4850),a=n(8148),o=n(9319),s=n(584),i=n(4559),l=n(3703),c=n(876),u=n(7090),d=n(4135),m=n(1593),_=n(7982),S=n(3500),E=n(1640),T=n(6558),p=n(631),A=n(3649);const O={week:{api:"yyyy-MM-dd",chart:"dd/MM/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},U=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],R=(e,t)=>{const n=[];for(let r=(0,T.Nh)(e.duration,e.start,t);r<=e.end;r=(0,T.xA)(e.duration,r))n.push(r);return n},I=(e,t,n=!1)=>{const r={label:e,backgroundColor:[t],data:[]};return n&&(r.type="line",r.borderColor=[t],r.spanGaps=!0),r},g=e=>{const t={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const n=e.color?e.color:p.Zo[e.label];t.average_speed.push(I(e.label,n,!0)),t.nb_workouts.push(I(e.label,n)),t.total_distance.push(I(e.label,n)),t.total_duration.push(I(e.label,n)),t.total_ascent.push(I(e.label,n)),t.total_descent.push(I(e.label,n))})),t},N=(e,t,n)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,A.f3)(["average_speed","total_distance"].includes(e)?"km":"m",t,n);default:case"nb_workouts":case"total_duration":return t}},z=(e,t,n,a,o,s)=>{const i=R(e,t),l=O[e.duration],c=n.filter((e=>a.includes(e.id))),u=[],d=g(c),m={};return c.map((e=>m[e.label]=e.id)),i.map((e=>{const t=(0,r.Z)(e,l.api),n=(0,r.Z)(e,l.chart);u.push(n),U.map((e=>{d[e].map((n=>{n.data.push(t in o&&m[n.label]in o[t]?N(e,o[t][m[n.label]][e],s):"average_speed"===e?null:0)}))}))})),{labels:u,datasets:d}},h=(e,t,n)=>{const r=n?1:0,m="year"===t?(0,a.Z)((0,o.Z)(e,9)):"week"===t?(0,s.Z)((0,i.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,i.Z)(e,11)),_="year"===t?(0,c.Z)(e):"week"===t?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:t,end:_,start:m}},w=(e,t,n)=>{const{duration:r,start:T,end:p}=e,A=n?1:0;return{duration:r,end:"year"===r?(0,c.Z)(t?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(t?(0,_.Z)(p,1):(0,S.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(t?(0,i.Z)(p,1):(0,E.Z)(p,1)),start:"year"===r?(0,a.Z)(t?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,s.Z)(t?(0,_.Z)(T,1):(0,S.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(t?(0,i.Z)(T,1):(0,E.Z)(T,1))}}},3649:function(e,t,n){"use strict";n.d(t,{Dl:function(){return r},f3:function(){return s},sC:function(){return o}});const r={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},a={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},o=(e,t,n,o=3)=>{const s=r[t],i=r[n],l=e*s.multiplier*a[s.system][i.system]/i.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},s=(e,t,n)=>{const a=n?r[e].defaultTarget:e;return n?o(t,e,a,2):t}},3768:function(e,t,n){"use strict";n.d(t,{BN:function(){return o},EX:function(){return a},eR:function(){return s}});n(7658);var r=n(3649);const a=(e,t,n)=>{const a={speed:{label:t("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:t("workouts.ELEVATION"),backgroundColor:["#e5e5e5"],borderColor:["#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],s=[],i=[];return e.map((e=>{o.push(e.distance),s.push(e.duration),a.speed.data.push((0,r.f3)("km",e.speed,n)),a.elevation.data.push((0,r.f3)("m",e.elevation,n)),i.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:s,datasets:a,coordinates:i}},o=e=>{const t=e.length;if(0===t)return{};const n={};return e.map((e=>{n[e.sport_id]||(n[e.sport_id]={count:0,percentage:0}),n[e.sport_id].count+=1,n[e.sport_id].percentage=n[e.sport_id].count/t})),n},s={order:"desc",order_by:"workout_date"}},2531:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={class:"card"},o={class:"card-title"},s={class:"card-content"};function i(e,t){return(0,r.wg)(),(0,r.iD)("div",a,[(0,r._)("div",o,[(0,r.WI)(e.$slots,"title")]),(0,r._)("div",s,[(0,r.WI)(e.$slots,"content")])])}var l=n(3744);const c={},u=(0,l.Z)(c,[["render",i]]);var d=u},8626:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262);const s={class:"table-selects"},i=["value"],l=["value"],c=["value"],u=["value"],d=["value"],m=["value"];var _=(0,r.aZ)({__name:"FilterSelects",props:{order_by:null,query:null,sort:null,message:null},emits:["updateSelect"],setup(e,{emit:t}){const n=e,{order_by:_,query:S,sort:E,message:T}=(0,o.BK)(n),p=[10,25,50,100];function A(e){t("updateSelect",e.target.id,e.target.value)}return(e,t)=>((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),(0,r._)("select",{name:"order_by",id:"order_by",value:(0,o.SU)(S).order_by,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(_),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${t.toUpperCase()}`)),9,l)))),128))],40,i)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),(0,r._)("select",{name:"order",id:"order",value:(0,o.SU)(S).order,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(E),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${t.toUpperCase()}`)),9,u)))),128))],40,c)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),(0,r._)("select",{name:"per_page",id:"per_page",value:(0,o.SU)(S).per_page,onChange:A},[((0,r.wg)(),(0,r.iD)(r.HY,null,(0,r.Ko)(p,(e=>(0,r._)("option",{value:e,key:e},(0,a.zw)(e),9,m))),64))],40,d)])]))}}),S=n(3744);const E=(0,S.Z)(_,[["__scopeId","data-v-72463173"]]);var T=E},7167:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -51 512 512"},o=(0,r.uE)('',1),s=[o];function i(e,t,n,o,i,l){return(0,r.wg)(),(0,r.iD)("svg",a,s)}var l={name:"ErrorImg"},c=n(3744);const u=(0,c.Z)(l,[["render",i]]);var d=u},8273:function(e,t,n){"use strict";n.d(t,{Z:function(){return S}});var r=n(6252),a=n(2262),o=(n(7658),n(3577));const s={id:"error"},i={class:"error-content"};var l=(0,r.aZ)({__name:"Error",props:{title:null,message:null,buttonText:null,path:{default:"/"}},setup(e){const t=e,{buttonText:n,title:l,message:c,path:u}=(0,a.BK)(t);return(e,t)=>((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("div",i,[(0,r._)("h1",null,(0,o.zw)((0,a.SU)(l)),1),(0,r._)("p",null,(0,o.zw)((0,a.SU)(c)),1),(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:t[0]||(t[0]=t=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(n)),1)):(0,r.kq)("",!0)])]))}}),c=n(3744);const u=(0,c.Z)(l,[["__scopeId","data-v-b60bfa80"]]);var d=u,m=(0,r.aZ)({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const t=e,{target:n}=(0,a.BK)(t),o=(0,a.iH)(),s=(0,a.iH)(!1);function i(){o.value=setTimeout((()=>{s.value=!0}),500)}return(0,r.bv)((()=>i())),(0,r.Ah)((()=>{o.value&&clearTimeout(o.value)})),(e,t)=>s.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(n)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const _=m;var S=_},5020:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262),s=n(2766);const i=e=>((0,r.dD)("data-v-3a9a4a65"),e=e(),(0,r.Cn)(),e),l={class:"pagination-center","aria-label":"navigation"},c={class:"pagination"},u=i((()=>(0,r._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),d={key:0},m=i((()=>(0,r._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)));var _=(0,r.aZ)({__name:"Pagination",props:{pagination:null,path:null,query:null},setup(e){const t=e,{pagination:n,path:i,query:_}=(0,o.BK)(t);function S(e,t){const n=Object.assign({},_.value);return n.page=t?e+t:e,n}return(e,t)=>{const _=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("nav",l,[(0,r._)("ul",c,[(0,r._)("li",{class:(0,a.C_)(["page-prev",{disabled:!(0,o.SU)(n).has_prev}])},[(0,r.Wm)(_,{class:"page-link",to:{path:(0,o.SU)(i),query:S((0,o.SU)(n).page,-1)},disabled:!(0,o.SU)(n).has_prev},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.PREVIOUS"))+" ",1),u]))])),_:3},8,["to","disabled"])],2),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(s.lM)((0,o.SU)(n).pages,(0,o.SU)(n).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(n).page}])},["..."===e?((0,r.wg)(),(0,r.iD)("span",d," ... ")):((0,r.wg)(),(0,r.j4)(_,{key:1,class:"page-link",to:{path:(0,o.SU)(i),query:S(+e)}},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e),1)])),_:2},1032,["to"]))],2)))),128)),(0,r._)("li",{class:(0,a.C_)(["page-next",{disabled:!(0,o.SU)(n).has_next}])},[(0,r.Wm)(_,{class:"page-link",to:{path:(0,o.SU)(i),query:S((0,o.SU)(n).page,1)},disabled:!(0,o.SU)(n).has_next},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),S=n(3744);const E=(0,S.Z)(_,[["__scopeId","data-v-3a9a4a65"]]);var T=E},8403:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(6252),a=n(2262),o=n(9963),s=n(3577),i=n(4366),l=n(5801),c=n(9917);const u=async e=>{const t=await n.e(881).then(n.bind(n,410)),r=await n.e(881).then(n.bind(n,8288)),a=await n.e(881).then(n.bind(n,6947)),o=await n.e(881).then(n.bind(n,8056)),s={de:o,en:r,fr:a},l=s[e],c={graphs:t.default.adjacencyGraphs,dictionary:{...t.default.dictionary,...l.default.dictionary}};i.Mu.setOptions(c)},d=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},m={class:"password-strength"},_=["value"],S={key:0,class:"password-strength-details"},E={class:"password-strength-value"},T={key:0,class:"info-box"},p={class:"password-feedback"};var A=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const t=e,{password:n}=(0,a.BK)(t),o=(0,c.o)(),A=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),U=(0,a.iH)(0),R=(0,a.iH)(""),I=(0,a.iH)([]),g=(0,a.iH)("0% 100%");function N(e){const t=(0,i.tu)(e);U.value=t.score,R.value=d(U.value),I.value=t.feedback.suggestions,g.value=100*U.value/4+"% 100%"}return(0,r.wF)((async()=>await u(A.value))),(0,r.YP)((()=>A.value),(async e=>{await u(e)})),(0,r.YP)((()=>n.value),(async e=>{O.value?R.value="":N(e)})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",m,[(0,r._)("input",{class:(0,s.C_)(["password-slider",`strength-${U.value}`]),style:(0,s.j5)({backgroundSize:g.value}),type:"range",value:U.value,min:"0",max:"4",step:"1"},null,14,_),R.value?((0,r.wg)(),(0,r.iD)("div",S,[(0,r._)("span",E,(0,s.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,s.zw)(e.$t(`user.PASSWORD_STRENGTH.${R.value}`)),1),I.value.length>0?((0,r.wg)(),(0,r.iD)("div",T,[(0,r._)("ul",p,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(I.value,(t=>((0,r.wg)(),(0,r.iD)("li",{key:t},(0,s.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${t}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),O=n(3744);const U=(0,O.Z)(A,[["__scopeId","data-v-74e71df5"]]);var R=U;const I=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),g={class:"password-input"},N=["id","disabled","placeholder","required","type"],z={key:0,class:"form-info"},h=I((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var w=(0,r.aZ)({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:null,required:{type:Boolean,default:!1}},emits:["updatePassword","passwordError"],setup(e,{emit:t}){const n=e,{checkStrength:i,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(n),_=(0,a.iH)(!1),S=(0,a.iH)("");function E(){_.value=!_.value}function T(e){t("updatePassword",e.target.value)}function p(){t("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(S.value="")})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",g,[(0,r.wy)((0,r._)("input",{id:(0,a.SU)(c),disabled:(0,a.SU)(l),placeholder:(0,a.SU)(d),required:(0,a.SU)(m),type:_.value?"text":"password","onUpdate:modelValue":t[0]||(t[0]=e=>S.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,N),[[o.YZ,S.value]]),(0,r._)("div",{class:"show-password",onClick:E},[(0,r.Uk)((0,s.zw)(e.$t(`user.${_.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),(0,r._)("i",{class:(0,s.C_)(["fa","fa-eye"+(_.value?"-slash":"")]),"aria-hidden":"true"},null,2)]),(0,a.SU)(i)?((0,r.wg)(),(0,r.iD)("div",z,[h,(0,r.Uk)(" "+(0,s.zw)(e.$t("user.PASSWORD_INFO")),1)])):(0,r.kq)("",!0),(0,a.SU)(i)?((0,r.wg)(),(0,r.j4)(R,{key:1,password:S.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const f=(0,O.Z)(w,[["__scopeId","data-v-5a126514"]]);var v=f},2056:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577),o=n(2262),s=n(2024);const i=(0,r._)("div",{class:"map-attribution"},[(0,r._)("span",{class:"map-attribution-text"},"©"),(0,r._)("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," OpenStreetMap ")],-1);var l=(0,r.aZ)({__name:"StaticMap",props:{workout:null,displayHover:{type:Boolean,default:!1}},setup(e){const t=e,{displayHover:n}=(0,o.BK)(t),l=`${(0,s.k)()}workouts/map/${t.workout.map}`;return(e,t)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(n)}])},[(0,o.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,src:l,alt:""})):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"bg-map-image",style:(0,a.j5)({backgroundImage:`url(${l})`})},null,4)),i],2))}});const c=l;var u=c},4998:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(6252),a=n(3577);const o={class:"start-chart"},s={key:0},i={key:1},l={class:"chart-radio"},c=["checked"],u=["checked"],d=["checked"],m={key:0},_=["checked"],S={key:1},E=["checked"],T={key:2},p=["checked"];function A(e,t,n,A,O,U){const R=(0,r.up)("Chart");return(0,r.wg)(),(0,r.iD)("div",o,[e.hideChartIfNoData&&e.emptyStats?((0,r.wg)(),(0,r.iD)("div",s,(0,a.zw)(e.$t("workouts.NO_WORKOUTS")),1)):((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("div",l,[(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_distance",checked:"total_distance"===e.displayedData,onClick:t[0]||(t[0]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,c),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DISTANCE")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_duration",checked:"total_duration"===e.displayedData,onClick:t[1]||(t[1]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,u),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DURATION")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"nb_workouts",checked:"nb_workouts"===e.displayedData,onClick:t[2]||(t[2]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,d),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.WORKOUT",2)),1)]),e.fullStats?((0,r.wg)(),(0,r.iD)("label",m,[(0,r._)("input",{type:"radio",name:"average_speed",checked:"average_speed"===e.displayedData,onClick:t[3]||(t[3]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,_),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.AVERAGE_SPEED")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",S,[(0,r._)("input",{type:"radio",name:"total_ascent",checked:"total_ascent"===e.displayedData,onClick:t[4]||(t[4]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,E),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.ASCENT")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",T,[(0,r._)("input",{type:"radio",name:"total_descent",checked:"total_descent"===e.displayedData,onClick:t[5]||(t[5]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,p),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DESCENT")),1)])):(0,r.kq)("",!0)]),e.labels.length>0?((0,r.wg)(),(0,r.j4)(R,{key:0,datasets:e.datasets,labels:e.labels,displayedData:e.displayedData,displayedSportIds:e.displayedSportIds,fullStats:e.fullStats,useImperialUnits:e.user.imperial_units},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits"])):(0,r.kq)("",!0)]))])}var O=n(4850),U=n(2262);const R={class:"chart"};function I(e,t,n,a,o,s){const i=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",R,[(0,r.Wm)(i,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var g=n(6518),N=n(9150);const z=(e,t=!1)=>{let n="0";t&&(n=String(Math.floor(e/86400)),e%=86400);const r=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const a=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return t?`${"0"===n?"":`${n}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=n(3649);const w=(e,t,n,r=!0,a="km")=>{const o=n?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${t.toFixed(2)} ${o}/h`;case"total_duration":return z(t,r);case"total_distance":case"total_ascent":case"total_descent":return`${t.toFixed(2)} ${o}`;default:return t.toString()}};var f=(0,r.aZ)({name:"Chart",components:{BarChart:g.vz},props:{datasets:{type:Object,required:!0},labels:{type:Object,required:!0},displayedData:{type:String,required:!0},displayedSportIds:{type:Array,required:!0},fullStats:{type:Boolean,required:!0},useImperialUnits:{type:Boolean,required:!0}},setup(e){const{t:t}=(0,N.QT)();function n(e){return isNaN(e)?0:+e}function a(e,t){return n(e)+n(t)}function o(e){return["total_ascent","total_descent"].includes(e)?"m":"km"}const s=(0,r.Fl)((()=>({labels:e.labels,datasets:JSON.parse(JSON.stringify(e.datasets))}))),i=(0,r.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:e.fullStats?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1}},y:{stacked:"average_speed"!==e.displayedData,grid:{drawOnChartArea:!1},ticks:{maxTicksLimit:6,callback:function(t){return w(e.displayedData,+t,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(t){t.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(t){return"average_speed"===e.displayedData&&t.dataset.backgroundColor?t.dataset.backgroundColor[0]:"#666666"},rotation:function(t){return e.fullStats&&t.chart.chartArea.width<580?310:0},display:function(t){return!(e.fullStats&&t.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(t,n){if("average_speed"===e.displayedData)return w(e.displayedData,t,e.useImperialUnits,!1);{const t=n.chart.data.datasets.map((e=>e.data[n.dataIndex])).reduce(((e,t)=>a(e,t)),0);return n.datasetIndex===e.displayedSportIds.length-1&&t>0?w(e.displayedData,t,e.useImperialUnits,!1,o(e.displayedData)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:"average_speed"===e.displayedData?"nearest":"average"},filter:function(e){return"0"!==e.formattedValue},callbacks:{label:function(n){let r=t(`sports.${n.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==n.parsed.y&&(r+=w(e.displayedData,n.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(n){if("average_speed"===e.displayedData)return"";let r=0;return n.map((e=>{r+=e.parsed.y})),`${t("common.TOTAL")}: `+w(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,g.xZ)({chartData:s,options:i});return{barChartProps:l}}}),v=n(3744);const C=(0,v.Z)(f,[["render",I]]);var D=C,k=n(5801),P=n(9917),L=n(9318),M=(0,r.aZ)({name:"UserMonthStats",components:{Chart:D},props:{sports:{type:Object,required:!0},user:{type:Object,required:!0},chartParams:{type:Object,required:!0},displayedSportIds:{type:Array,default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1}},setup(e){const t=(0,P.o)(),n=(0,U.iH)("total_distance"),a=(0,r.Fl)((()=>t.getters[k.gu.GETTERS.USER_STATS])),o=(0,r.Fl)((()=>(0,L.v1)(e.chartParams,e.user.weekm,e.sports,e.displayedSportIds,a.value,e.user.imperial_units)));function s(n){t.dispatch(k.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:n})}function i(e){n.value=e.target.name}function l(e,t){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(t.weekm?"m":""):e.duration}}return(0,r.wF)((()=>s(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async t=>{s(l(t,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[n.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:n,updateDisplayData:i}}});const b=(0,v.Z)(M,[["render",A],["__scopeId","data-v-58e4e79d"]]);var y=b},2179:function(e,t,n){"use strict";n.d(t,{Z:function(){return N}});var r=n(6252),a=n(2262),o=n(3577),s=n(6595),i=n(5801),l=n(9917);const c={class:"box user-header"},u={class:"user-details"},d={class:"user-name"},m={class:"user-stats"},_={class:"user-stat"},S={class:"stat-number"},E={class:"stat-label"},T={class:"user-stat"},p={class:"stat-label"},A={class:"user-stat hide-small"},O={class:"stat-number"},U={class:"stat-label"};var R=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const t=e,{user:n}=(0,a.BK)(t),R=(0,l.o)(),I=(0,r.Fl)((()=>R.getters[i.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const i=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(s.Z,{user:(0,a.SU)(n)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(n).username),1),(0,r._)("div",m,[(0,r._)("div",_,[(0,r._)("span",S,(0,o.zw)((0,a.SU)(n).nb_workouts),1),(0,r._)("span",E,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(n).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(i,{distance:(0,a.SU)(n).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(I).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(I).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(n).nb_sports),1),(0,r._)("span",U,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(n).nb_sports)),1)])])])])}}}),I=n(3744);const g=(0,I.Z)(R,[["__scopeId","data-v-20291951"]]);var N=g},7408:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});n(7658);var r=n(6252),a=n(2262),o=n(3577),s=n(9963),i=n(4850),l=n(5801),c=n(9917);const u={id:"user-infos",class:"description-list"},d={key:1,class:"info-box success-message"},m={key:4,class:"email-form form-box"},_={class:"form-items",for:"email"},S={class:"form-items",for:"email"},E={class:"form-buttons"},T={class:"confirm",type:"submit"},p=["onClick"],A={key:5},O={class:"user-bio"},U={key:0,class:"profile-buttons"},R=["onClick"],I={key:1,class:"profile-buttons"};var g=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,c.o)(),{user:g,fromAdmin:N}=(0,a.BK)(t),z=(0,r.Fl)((()=>n.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),h=(0,r.Fl)((()=>t.user.created_at?(0,i.Z)(new Date(t.user.created_at),"dd/MM/yyyy HH:mm"):"")),w=(0,r.Fl)((()=>t.user.birth_date?(0,i.Z)(new Date(t.user.birth_date),"dd/MM/yyyy"):"")),f=(0,r.Fl)((()=>n.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),v=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),C=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),D=(0,a.iH)(""),k=(0,a.iH)(!1),P=(0,a.iH)(!1),L=(0,a.iH)(""),M=(0,a.iH)("");function b(e){D.value=e,""!==e&&n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function y(e){n.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function G(e){M.value="password-reset",n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function F(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function W(){x(),L.value=g.value.email_to_confirm?g.value.email_to_confirm:"",P.value=!0,M.value="email-update"}function K(){L.value="",P.value=!1}function Y(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:L.value})}function x(){n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),M.value=""}return(0,r.Ah)((()=>x())),(0,r.YP)((()=>f.value),(e=>{e&&(b(""),K())})),(e,t)=>{const n=(0,r.up)("Modal"),i=(0,r.up)("AlertMessage"),l=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",u,[D.value?((0,r.wg)(),(0,r.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:"delete"===D.value?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:(0,a.SU)(g).username,onConfirmAction:t[0]||(t[0]=e=>"delete"===D.value?y((0,a.SU)(g).username):G((0,a.SU)(g).username)),onCancelAction:t[1]||(t[1]=e=>b(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(f)?((0,r.wg)(),(0,r.iD)("div",d,(0,o.zw)(e.$t(`admin.${"password-reset"===M.value?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):(0,r.kq)("",!0),(0,a.SU)(g).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(i,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})),(0,a.SU)(v)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(v)},null,8,["message"])):(0,r.kq)("",!0),P.value?((0,r.wg)(),(0,r.iD)("div",m,[(0,r._)("form",{class:(0,o.C_)({errors:k.value}),onSubmit:t[4]||(t[4]=(0,s.iM)((e=>Y((0,a.SU)(g).username)),["prevent"]))},[(0,r._)("label",_,[(0,r.Uk)((0,o.zw)(e.$t("admin.CURRENT_EMAIL"))+" ",1),(0,r.wy)((0,r._)("input",{id:"email",type:"email","onUpdate:modelValue":t[2]||(t[2]=e=>(0,a.SU)(g).email=e),disabled:""},null,512),[[s.nr,(0,a.SU)(g).email]])]),(0,r._)("label",S,[(0,r.Uk)((0,o.zw)(e.$t("admin.NEW_EMAIL"))+"* ",1),(0,r.wy)((0,r._)("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":t[3]||(t[3]=e=>L.value=e)},null,512),[[s.nr,L.value]])]),(0,r._)("div",E,[(0,r._)("button",T,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,r._)("button",{class:"cancel",onClick:(0,s.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,p)])],34)])):((0,r.wg)(),(0,r.iD)("div",A,[(0,r._)("dl",null,[(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(h)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(g).first_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(g).last_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(w)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(g).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",O,(0,o.zw)((0,a.SU)(g).bio),1)]),(0,a.SU)(N)?((0,r.wg)(),(0,r.iD)("div",U,[(0,a.SU)(z).username!==(0,a.SU)(g).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:t[5]||(t[5]=(0,s.iM)((e=>b("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(g).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:t[6]||(t[6]=(0,s.iM)((e=>F((0,a.SU)(g).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(z).username!==(0,a.SU)(g).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,s.iM)(W,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,R)):(0,r.kq)("",!0),(0,a.SU)(z).username!==(0,a.SU)(g).username&&(0,a.SU)(C).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:t[7]||(t[7]=(0,s.iM)((e=>b("reset")),["prevent"]))},(0,o.zw)(e.$t("admin.RESET_USER_PASSWORD")),1)):(0,r.kq)("",!0),(0,r._)("button",{onClick:t[8]||(t[8]=t=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",I,[(0,r._)("button",{onClick:t[9]||(t[9]=t=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:t[10]||(t[10]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),N=n(3744);const z=(0,N.Z)(g,[["__scopeId","data-v-794e58e7"]]);var h=z},2411:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(6252),a=n(3577),o=n(2262),s=n(9963),i=n(2201),l=n(8403),c=n(5801),u=n(9917);const d=e=>((0,r.dD)("data-v-b3c885de"),e=e(),(0,r.Cn)(),e),m={id:"user-form"},_={key:2,class:"info-box success-message"},S={class:"form-items"},E=["disabled","placeholder"],T={key:1,class:"form-info"},p=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),A=["disabled","placeholder"],O={key:3,class:"form-info"},U=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),R=["disabled"],I={key:3},g={key:0},N={key:4},z={class:"account"},h={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const t=e,n=(0,i.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(t),f=(0,o.qj)({username:"",email:"",password:""}),v=(0,r.Fl)((()=>G(t.action))),C=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),D=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),L=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),M=(0,r.Fl)((()=>"register"===t.action&&!P.value.is_registration_enabled)),b=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(t.action)&&!P.value.is_email_sending_enabled)),y=(0,o.iH)(!1);function G(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${t.action.toUpperCase()}`}}function F(){y.value=!0}function W(e){f.password=e}function K(e){switch(e){case"reset":return t.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:f.password,token:t.token}):d.commit(c.SY.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return d.dispatch(c.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:f.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:f.email});default:f["language"]=L.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:f,redirectUrl:n.query.from})}}function Y(){f.username="",f.email="",f.password=""}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>n.path),(async()=>{d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),d.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),d.commit(c.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),y.value=!1,Y()})),(e,t)=>{const n=(0,r.up)("AlertMessage"),i=(0,r.up)("router-link"),c=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",{id:"user-auth-form",class:(0,a.C_)(`${["reset","reset-request"].includes((0,o.SU)(w))?(0,o.SU)(w):"user-form"}`)},[(0,r._)("div",m,[(0,r._)("div",{class:(0,a.C_)(["form-box",{disabled:(0,o.SU)(M)}])},[(0,o.SU)(M)?((0,r.wg)(),(0,r.j4)(n,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(b)?((0,r.wg)(),(0,r.j4)(n,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(k)||(0,o.SU)(D)?((0,r.wg)(),(0,r.iD)("div",_,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(D)?"REGISTRATION"+((0,o.SU)(P).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:y.value}),onSubmit:t[2]||(t[2]=(0,s.iM)((e=>K((0,o.SU)(w))),["prevent"]))},[(0,r._)("div",S,["register"===(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:0,id:"username",disabled:(0,o.SU)(M),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:F,"onUpdate:modelValue":t[0]||(t[0]=e=>f.username=e),placeholder:e.$t("user.USERNAME")},null,40,E)),[[s.nr,f.username]]):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",T,[p,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.USERNAME_INFO")),1)])):(0,r.kq)("",!0),"reset"!==(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:2,id:"email",disabled:(0,o.SU)(M)||(0,o.SU)(b),required:"",onInvalid:F,type:"email","onUpdate:modelValue":t[1]||(t[1]=e=>f.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[s.nr,f.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[U,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.EMAIL_INFO")),1)])):(0,r.kq)("",!0),["account-confirmation-resend","reset-request"].includes((0,o.SU)(w))?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(l.Z,{key:4,disabled:(0,o.SU)(M),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:f.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:W,onPasswordError:F},null,8,["disabled","placeholder","password","checkStrength"]))]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(M)||(0,o.SU)(b)},(0,a.zw)(e.$t((0,o.SU)(v))),9,R)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",I,[(0,r.Wm)(i,{class:"links",to:"/register"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.REGISTER")),1)])),_:1}),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",g,"-")):(0,r.kq)("",!0),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.j4)(i,{key:1,class:"links",to:"/password-reset/request"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.PASSWORD_FORGOTTEN")),1)])),_:1})):(0,r.kq)("",!0)])):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",N,[(0,r._)("span",z,(0,a.zw)(e.$t("user.ALREADY_HAVE_ACCOUNT")),1),(0,r.Wm)(i,{class:"links",to:"/login"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.LOGIN")),1)])),_:1})])):(0,r.kq)("",!0),["login","register"].includes((0,o.SU)(w))&&(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",h,[(0,r.Wm)(i,{class:"links",to:"/account-confirmation/resend"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(C)?((0,r.wg)(),(0,r.j4)(c,{key:6,message:(0,o.SU)(C)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),f=n(3744);const v=(0,f.Z)(w,[["__scopeId","data-v-b3c885de"]]);var C=v},6595:function(e,t,n){"use strict";n.d(t,{Z:function(){return _}});var r=n(6252),a=n(2262),o=n(2024);const s={class:"user-picture"},i=["alt","src"],l={key:1,class:"no-picture"},c=(0,r._)("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),u=[c];var d=(0,r.aZ)({__name:"UserPicture",props:{user:null},setup(e){const t=e,n=(0,r.Fl)((()=>t.user.picture?`${(0,o.k)()}users/${t.user.username}/picture?${Date.now()}`:""));return(e,t)=>((0,r.wg)(),(0,r.iD)("div",s,[""!==(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(n)},null,8,i)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var _=m},5630:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577);const o={class:"no-workouts box"};function s(e,t){const n=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("div",o,[(0,r._)("div",null,[(0,r.Uk)((0,a.zw)(e.$t("workouts.NO_WORKOUTS"))+" ",1),(0,r.Wm)(n,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var i=n(3744);const l={},c=(0,i.Z)(l,[["render",s],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,t,n){var r={"./de/de.ts":9923,"./en/en.ts":8757,"./fr/fr.ts":6625};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,r,a,o){if(!r){var s=1/0;for(u=0;u=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[l])}))?r.splice(l--,1):(i=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&a&&r;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((function(e){s[e]=function(){return r[e]}}));return s["default"]=function(){return r},n.d(o,s),o}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"static/js/"+({24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile",881:"password"}[e]||e)+"."+{24:"987a4de8",93:"97ccdf6e",193:"61163b0e",243:"27c8fef5",328:"ab9e5f5f",401:"39602236",431:"5976068e",633:"9a092c9a",845:"dd30724d",858:"0441e3cc",881:"c426a91d"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"dd7c6bdb",845:"203e78e2"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="fittrackee_client:";n.l=function(r,a,o,s){if(e[r])e[r].push(a);else{var i,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{const t=new AbortController;e.signal=t.signal;const n=(0,o.a)(e);o.j.set(n,t);const r=s.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const t=`Bearer ${r}`;e.headers&&e.headers.Authorization!==t&&(e.headers.Authorization=`Bearer ${r}`)}return e}),(e=>Promise.reject(e))),c.interceptors.response.use((e=>((0,o.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,o.a)(e.response.config),Promise.reject(e)))),t["Z"]=c},8566:function(e,t,n){"use strict";n.d(t,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:t,url:n,params:r={},data:a={}}=e;return[t,n,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const t=a(e);if(r.has(t)){const e=r.get(t)||{};e?.abort(),r.delete(t)}return t}},2540:function(e,t,n){"use strict";var r=n(9150);function a(){const e=n(4612),t={};return e.keys().forEach((n=>{const r=n.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1){const a=r[1];t[a]=e(n).default}})),t}t["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:a()})},9923:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["unter ",n(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Quellkode"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt-E-Mail des Administrators"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. Anzahl aktiver Nutzer"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. Dateianzahl im zip Archiv"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Neue E-Mail"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Das wasswort wurde zurückgesetzt."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["Trainings existieren"])},IMAGE:e=>{const{normalize:t}=e;return t(["Bild"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:t}=e;return t(["Nutzer"])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Die E-Mail Adresse wurde aktualisiert."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte entfernen"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["Adminstatus"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["Accountstatus"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["Trainingsanzahl"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Fehler bei der GPX-Verarbeitung."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Fehler beim Einlesen der GPX-Datei"])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"Network Error":e=>{const{normalize:t}=e;return t(["Netzwerkfehler."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:t}=e;return t(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:t}=e;return t(["Keine Datei ausgewählt."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Gebe ein gültiges Authentifizierungstoken an."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sportart existiert nicht."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Registrierung erfolgreich."])},"user does not exist":e=>{const{normalize:t}=e;return t(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Du hast keine Berechtigung."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["Vorhergehende"])},NEXT:e=>{const{normalize:t}=e;return t(["Nächste"])}}},s={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autorisieren"])},BACK:e=>{const{normalize:t}=e;return t(["Zurück"])},CANCEL:e=>{const{normalize:t}=e;return t(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:t}=e;return t(["Deaktivieren"])},EDIT:e=>{const{normalize:t}=e;return t(["Bearbeiten"])},ENABLE:e=>{const{normalize:t}=e;return t(["Aktivieren"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmelden"])},NO:e=>{const{normalize:t}=e;return t(["Nein"])},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESET:e=>{const{normalize:t}=e;return t(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Speichern"])},YES:e=>{const{normalize:t}=e;return t(["Ja"])}},i={ABOUT:e=>{const{normalize:t}=e;return t(["Über"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bestätigung"])},CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["Tag"]),t(["Tage"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["Dokumentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["hier"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Versteckt"])},HOME:e=>{const{normalize:t}=e;return t(["Startseite"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["sortiert nach"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sortieren"])},ASC:e=>{const{normalize:t}=e;return t(["aufsteigend"])},DESC:e=>{const{normalize:t}=e;return t(["absteigend"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["pro Seite"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Dieser Monat"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
                                                                              Bitte versuche es später noch einmal oder kontaktiere den Administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Etwas lief schief"])}},u={},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Pendeln)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken (elektrisch)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rudern"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Gehen"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistik"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["Woche"])},month:e=>{const{normalize:t}=e;return t(["Monat"])},year:e=>{const{normalize:t}=e;return t(["Jahr"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:t}=e;return t(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Gebe ein Passwort ein"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte fordere ein neues Passworts an."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LOG_IN:e=>{const{normalize:t}=e;return t(["Anmelden"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmeldung"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Abmelden"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Passwort vergessen?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["schwach"])},AVERAGE:e=>{const{normalize:t}=e;return t(["mittel"])},GOOD:e=>{const{normalize:t}=e;return t(["gut"])},STRONG:e=>{const{normalize:t}=e;return t(["start"])},LABEL:e=>{const{normalize:t}=e;return t(["Passwortstärke"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},allUppercase:e=>{const{normalize:t}=e;return t(["Schreibe einige, aber nicht alle Buchstaben groß."])},capitalization:e=>{const{normalize:t}=e;return t(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:t}=e;return t(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},recentYears:e=>{const{normalize:t}=e;return t(["Vermeide Angabe von letzten Jahreszahlen."])},associatedYears:e=>{const{normalize:t}=e;return t(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},sequences:e=>{const{normalize:t}=e;return t(["Vermeide gebräuchliche Zeichenfolgen."])},repeated:e=>{const{normalize:t}=e;return t(["Vermeide wiederholungen von Wörtern und Zeichen."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},anotherWord:e=>{const{normalize:t}=e;return t(["Füge weitere weniger gebräuchliche Wörter hinzu."])},useWords:e=>{const{normalize:t}=e;return t(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])},noNeed:e=>{const{normalize:t}=e;return t(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:t}=e;return t(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Dein Passwort wurde aktualisiert. Klicke ",n(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Zurück zum Profil"])},BIO:e=>{const{normalize:t}=e;return t(["Biographie"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Geburtsdatum"])},EDIT:e=>{const{normalize:t}=e;return t(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Bitte ",n(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Vorname"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Erster Tag der Woche"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nachname"])},LOCATION:e=>{const{normalize:t}=e;return t(["Ort"])},MONDAY:e=>{const{normalize:t}=e;return t(["Montag"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Bildausgabe"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Bild aktualisieren"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Bild entfernen"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Einstellungsausgabe"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Regirierungsdatum"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sportarten-Einstellungsausgabe"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["Konto"])},APPS:e=>{const{normalize:t}=e;return t(["Anwendungen"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen"])},PROFILE:e=>{const{normalize:t}=e;return t(["Profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["Sportarten"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},COLOR:e=>{const{normalize:t}=e;return t(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["aktiv"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["Geschwindigkeitsschwellenwert für Stopp"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Einheiten für die Distanz"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperiales System (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metrisches System (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Zeitzone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["E-Mail zur Kontobestätigung erneut senden"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Entschuldigung, die Registrierung ist deaktiviert."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Dieser Account ist inaktiv."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["Benutzerbild"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])}},S={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["Analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["Aufstieg"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschnittsgeschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["zurück zum Training"])},DATE:e=>{const{normalize:t}=e;return t(["Datum"])},DESCENT:e=>{const{normalize:t}=e;return t(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["zeige Filter"])},DISTANCE:e=>{const{normalize:t}=e;return t(["Entfernung"])},DURATION:e=>{const{normalize:t}=e;return t(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:t}=e;return t(["Höhe"])},END:e=>{const{normalize:t}=e;return t(["Ende"])},FROM:e=>{const{normalize:t}=e;return t(["Von"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["verberge Filter"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Nächstes Training"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Keine Trainings."])},NOTES:e=>{const{normalize:t}=e;return t(["Anmerkungen"])},PAUSES:e=>{const{normalize:t}=e;return t(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Vorheriges Training"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["Aufzeichnung"]),t(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["Segment"]),t(["Segmente"])])},SPEED:e=>{const{normalize:t}=e;return t(["Geschwindigkeit"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["Sportart"]),t(["Sportarten"])])},START:e=>{const{normalize:t}=e;return t(["Start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:t}=e;return t(["Titel"])},TO:e=>{const{normalize:t}=e;return t(["bis"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Füge erstes Training hinzu!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["Temperatur"])},WIND:e=>{const{normalize:t}=e;return t(["Wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNO"])},NE:e=>{const{normalize:t}=e;return t(["NO"])},ENE:e=>{const{normalize:t}=e;return t(["ONO"])},E:e=>{const{normalize:t}=e;return t(["O"])},ESE:e=>{const{normalize:t}=e;return t(["OSO"])},SE:e=>{const{normalize:t}=e;return t(["SO"])},SSE:e=>{const{normalize:t}=e;return t(["SSO"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["klarer Tag"])},"clear-night":e=>{const{normalize:t}=e;return t(["klare Nacht"])},cloudy:e=>{const{normalize:t}=e;return t(["wolkig"])},fog:e=>{const{normalize:t}=e;return t(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:t}=e;return t(["Regen"])},sleet:e=>{const{normalize:t}=e;return t(["Schneeregen"])},snow:e=>{const{normalize:t}=e;return t(["Schnee"])},wind:e=>{const{normalize:t}=e;return t(["Wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["mit .gpx Datei"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["ohne .gpx Datei"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["Training"]),t(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["oder .zip Datei mit .gpx Dateien"])}},E={about:r,admin:a,api:o,buttons:s,common:i,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:_,workouts:S}},8757:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["under ",n(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Source code"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activate account"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Add/remove admin rights, delete user account."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Administrator email for contact"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. number of active users"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["If 0, no limitation on registration."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. files of zip archive"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to delete ",n(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to reset ",n(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Current email"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["New email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The password has been reset."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["workouts exist"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Update application configuration (maximum number of registered users, maximum files size)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Update email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["user"]),t(["users"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The email address has been updated."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Remove admin rights"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["registration date"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["account status"])},USERNAME:e=>{const{normalize:t}=e;return t(["username"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["workout count"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: valid email must be provided."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Error during gpx processing."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Error during gpx file parsing."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Invalid credentials."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"Network Error":e=>{const{normalize:t}=e;return t(["Network Error."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:t}=e;return t(["No file provided."])},"no selected file":e=>{const{normalize:t}=e;return t(["No selected file."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Provide a valid auth token."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sport does not exist."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expired. Please log in again."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Successfully registered."])},"user does not exist":e=>{const{normalize:t}=e;return t(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["You do not have permissions."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["previous"])},NEXT:e=>{const{normalize:t}=e;return t(["next"])}}},s={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Authorize"])},BACK:e=>{const{normalize:t}=e;return t(["Back"])},CANCEL:e=>{const{normalize:t}=e;return t(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Delete my account"])},DISABLE:e=>{const{normalize:t}=e;return t(["Disable"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit"])},ENABLE:e=>{const{normalize:t}=e;return t(["Enable"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Log in"])},NO:e=>{const{normalize:t}=e;return t(["No"])},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESET:e=>{const{normalize:t}=e;return t(["Reset"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Submit"])},YES:e=>{const{normalize:t}=e;return t(["Yes"])}},i={ABOUT:e=>{const{normalize:t}=e;return t(["about"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["day"]),t(["days"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Displayed"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation"])},HERE:e=>{const{normalize:t}=e;return t(["here"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Hidden"])},HOME:e=>{const{normalize:t}=e;return t(["Home"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["order by"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sort"])},ASC:e=>{const{normalize:t}=e;return t(["ascending"])},DESC:e=>{const{normalize:t}=e;return t(["descending"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["This month"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["The application seems to have encountered some issues.
                                                                              Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page not found"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Something went wrong"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Id"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Application description"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Issue at"])},NAME:e=>{const{normalize:t}=e;return t(["Application name"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:t}=e;return t(["Application URL"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["The application ",n(r(0))," is requesting:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2 applications"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Authorize ",n(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Delete application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Add an application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application not found!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["All existing associated tokens have been revoked."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking (Electric)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rowing"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Walking"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistics"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["month"])},year:e=>{const{normalize:t}=e;return t(["year"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Current password"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Enter a password"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["hide password"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Invalid token, please request a new password reset."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LOG_IN:e=>{const{normalize:t}=e;return t(["log in"])},LOGIN:e=>{const{normalize:t}=e;return t(["Login"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Logout"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["New password"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["No users found."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Password"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["At least 8 characters required."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Forgot password?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["weak"])},AVERAGE:e=>{const{normalize:t}=e;return t(["average"])},GOOD:e=>{const{normalize:t}=e;return t(["good"])},STRONG:e=>{const{normalize:t}=e;return t(["strong"])},LABEL:e=>{const{normalize:t}=e;return t(["password strength"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Avoid predictable letter substitutions like ","@"," for a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Avoid reversed spellings of common words."])},allUppercase:e=>{const{normalize:t}=e;return t(["Capitalize some, but not all letters."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalize more than the first letter."])},dates:e=>{const{normalize:t}=e;return t(["Avoid dates and years that are associated with you."])},recentYears:e=>{const{normalize:t}=e;return t(["Avoid recent years."])},associatedYears:e=>{const{normalize:t}=e;return t(["Avoid years that are associated with you."])},sequences:e=>{const{normalize:t}=e;return t(["Avoid common character sequences."])},repeated:e=>{const{normalize:t}=e;return t(["Avoid repeated words and characters."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Use longer keyboard patterns and change typing direction multiple times."])},anotherWord:e=>{const{normalize:t}=e;return t(["Add more words that are less common."])},useWords:e=>{const{normalize:t}=e;return t(["Use multiple words, but avoid common phrases."])},noNeed:e=>{const{normalize:t}=e;return t(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:t}=e;return t(["If you use this password elsewhere, you should change it."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your password have been updated. Click ",n(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Account edition"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Back to profile"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Birth date"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Please ",n(r(0))," to change your email address again or contact the administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["First name"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["First day of week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Last name"])},LOCATION:e=>{const{normalize:t}=e;return t(["Location"])},MONDAY:e=>{const{normalize:t}=e;return t(["Monday"])},PICTURE:e=>{const{normalize:t}=e;return t(["Picture"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Picture edition"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Update picture"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Remove picture"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Preferences edition"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registration date"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sports preferences edition"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["account"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["picture"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["preferences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profile"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["active"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["stopped speed threshold"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Units for distance"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperial system (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metric system (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Timezone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Resend account confirmation email"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registration is disabled."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset your password"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["This user account is inactive."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["user picture"])},USERNAME:e=>{const{normalize:t}=e;return t(["Username"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])}},S={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Add a workout"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analysis"])},ASCENT:e=>{const{normalize:t}=e;return t(["ascent"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["ave. speed"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["average speed"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["back to workout"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["display filters"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["duration"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Edit the workout"])},ELEVATION:e=>{const{normalize:t}=e;return t(["elevation"])},END:e=>{const{normalize:t}=e;return t(["end"])},FROM:e=>{const{normalize:t}=e;return t(["from"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["hide filters"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. altitude"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max files"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max size"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Next workout"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["No file provided"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["no folder inside"])},NO_MAP:e=>{const{normalize:t}=e;return t(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["No next workout"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["No previous workout"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["No records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["No workouts."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Previous workout"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Ave. speed"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Farthest distance"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Highest ascent"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Longest duration"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["remaining characters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["speed"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["start elevation axis at zero"])},TITLE:e=>{const{normalize:t}=e;return t(["title"])},TO:e=>{const{normalize:t}=e;return t(["to"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Upload one!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidity"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperature"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["clear day"])},"clear-night":e=>{const{normalize:t}=e;return t(["clear night"])},cloudy:e=>{const{normalize:t}=e;return t(["cloudy"])},fog:e=>{const{normalize:t}=e;return t(["fog"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["partly cloudy night"])},rain:e=>{const{normalize:t}=e;return t(["rain"])},sleet:e=>{const{normalize:t}=e;return t(["sleet"])},snow:e=>{const{normalize:t}=e;return t(["snow"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["with .gpx file"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["without .gpx file"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["workout"]),t(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["or .zip file containing .gpx files"])}},E={about:r,admin:a,api:o,buttons:s,common:i,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:_,workouts:S}},6625:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["sous licence ",n(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Code source (en)"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activer le compte"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Email de l'administrateur pour contact "])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Nombre maximum d'utilisateurs actifs "])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Si égal à 0, pas limite d'inscription"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des archives zip (en Mo) "])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:t}=e;return t(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Nombre max. de fichiers dans une archive zip "])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",n(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",n(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Nouvelle adresse email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Le mot de passe a été réinitialisé."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["des séances existent"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Changer l'email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["utilisateur"]),t(["utilisateurs"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["L'adresse email a été mise à jour."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Retirer les droits d'admin"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["status administrateur"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["statut du compte"])},USERNAME:e=>{const{normalize:t}=e;return t(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["nombre de séances"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Erreur lors du traitement du fichier gpx."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Erreur lors de l'analyse du fichier."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Jeton de connexion, merci de vous reconnecter."])},"no file part":e=>{const{normalize:t}=e;return t(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:t}=e;return t(["Pas de fichier sélectionné."])},"Network Error":e=>{const{normalize:t}=e;return t(["Erreur réseau."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Merci de fournir un jeton de connexion valide."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Ce sport n'existe pas."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Inscription validée."])},"user does not exist":e=>{const{normalize:t}=e;return t(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Une adresse électronique doit être fournie pour le contact de l'administrateur"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["précédent"])},NEXT:e=>{const{normalize:t}=e;return t(["suivant"])}}},s={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autoriser"])},BACK:e=>{const{normalize:t}=e;return t(["Retour"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:t}=e;return t(["Désactiver"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier"])},ENABLE:e=>{const{normalize:t}=e;return t(["Activer"])},FILTER:e=>{const{normalize:t}=e;return t(["Filtrer"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},NO:e=>{const{normalize:t}=e;return t(["Non"])},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},RESET:e=>{const{normalize:t}=e;return t(["Réinit."])},SUBMIT:e=>{const{normalize:t}=e;return t(["Valider"])},YES:e=>{const{normalize:t}=e;return t(["Oui"])}},i={ABOUT:e=>{const{normalize:t}=e;return t(["à propos"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["jour"]),t(["jours"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Affiché"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["ici"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Masqué"])},HOME:e=>{const{normalize:t}=e;return t(["Accueil"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["trier par "])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["tri"])},ASC:e=>{const{normalize:t}=e;return t(["ascendant"])},DESC:e=>{const{normalize:t}=e;return t(["descendant"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Ce mois-ci"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["L'application semble rencontrer quelques problèmes.
                                                                              Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page introuvable"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Une erreur s'est produite"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Créée le"])},NAME:e=>{const{normalize:t}=e;return t(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:t}=e;return t(["URL de l'application"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["L'application ",n(r(0))," demande les accès suivants :"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["Applications OAuth2"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Autoriser ",n(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application introuvable !"])},NO_APPS:e=>{const{normalize:t}=e;return t(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Tous les jetons associés existants ont été révoqués."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["VTT (Électrique)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Aviron"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Marche"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistiques"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["semaine"])},month:e=>{const{normalize:t}=e;return t(["mois"])},year:e=>{const{normalize:t}=e;return t(["année"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:t}=e;return t(["Courriel"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Saisissez un mot de passe"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LOG_IN:e=>{const{normalize:t}=e;return t(["connecter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Se déconnecter"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["8 caractères minimum."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Mot de passe oublié ?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["faible"])},AVERAGE:e=>{const{normalize:t}=e;return t(["moyenne"])},GOOD:e=>{const{normalize:t}=e;return t(["bonne"])},STRONG:e=>{const{normalize:t}=e;return t(["forte"])},LABEL:e=>{const{normalize:t}=e;return t(["robustesse du mot de passe"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Évitez les orthographes inversées des mots courants."])},allUppercase:e=>{const{normalize:t}=e;return t(["Mettez quelques lettres en majuscules, mais pas toutes."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:t}=e;return t(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},recentYears:e=>{const{normalize:t}=e;return t(["Évitez les dernières années."])},associatedYears:e=>{const{normalize:t}=e;return t(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},sequences:e=>{const{normalize:t}=e;return t(["Évitez les séquences de caractères courantes."])},repeated:e=>{const{normalize:t}=e;return t(["Évitez les mots et les caractères répétés."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},anotherWord:e=>{const{normalize:t}=e;return t(["Ajoutez des mots moins courants."])},useWords:e=>{const{normalize:t}=e;return t(["Utilisez plusieurs mots, mais évitez les phrases courantes."])},noNeed:e=>{const{normalize:t}=e;return t(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:t}=e;return t(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Votre mot de passe a été mis à jour. Cliquez ",n(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Revenir au profil"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Date de naissance"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Veuillez vous ",n(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Prénom"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nom"])},LOCATION:e=>{const{normalize:t}=e;return t(["Lieu"])},MONDAY:e=>{const{normalize:t}=e;return t(["Lundi"])},PICTURE:e=>{const{normalize:t}=e;return t(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour de l'image de profil"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Mettre à jour l'image"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Supprimer"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Date d'inscription"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences des sports"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["compte"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["image"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["préférences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Unités pour les distances"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Système impérial (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Système métrique (m, km)"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["actif"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["seuil de vitesse arrêtée"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès."])},TIMEZONE:e=>{const{normalize:t}=e;return t(["Fuseau horaire"])}},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinitialiser votre mot de passe"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Le compte de cet utilisateur est inactif."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["photo de l'utilisateur"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])}},S={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["revenir à la séance"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["afficher les filtres"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["durée"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Modifier la séance"])},ELEVATION:e=>{const{normalize:t}=e;return t(["altitude"])},END:e=>{const{normalize:t}=e;return t(["fin"])},FROM:e=>{const{normalize:t}=e;return t(["à partir de"])},GPX_FILE:e=>{const{normalize:t}=e;return t(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["masquer les filtres"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude max"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["taille max. "])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance suivante"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["pas de répertoire"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Pas de séances."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance précédente"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["vitesse"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["début"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:t}=e;return t(["titre"])},TO:e=>{const{normalize:t}=e;return t(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajoutez votre première séance !"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidité"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["température"])},WIND:e=>{const{normalize:t}=e;return t(["vent"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSO"])},SW:e=>{const{normalize:t}=e;return t(["SO"])},WSW:e=>{const{normalize:t}=e;return t(["OSO"])},W:e=>{const{normalize:t}=e;return t(["O"])},WNW:e=>{const{normalize:t}=e;return t(["ONO"])},NW:e=>{const{normalize:t}=e;return t(["NO"])},NNW:e=>{const{normalize:t}=e;return t(["NNO"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["ensoleillé"])},"clear-night":e=>{const{normalize:t}=e;return t(["nuit claire"])},cloudy:e=>{const{normalize:t}=e;return t(["nuageux"])},fog:e=>{const{normalize:t}=e;return t(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:t}=e;return t(["pluie"])},sleet:e=>{const{normalize:t}=e;return t(["neige fondue"])},snow:e=>{const{normalize:t}=e;return t(["neige"])},wind:e=>{const{normalize:t}=e;return t(["venteux"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["avec un fichier .gpx"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["sans fichier .gpx"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["séance"]),t(["séances"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["ou une archive .zip contenant des fichiers .gpx"])}},E={about:r,admin:a,api:o,buttons:s,common:i,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:_,workouts:S}},6331:function(e,t,n){"use strict";var r=n(6775),a=n(6429),o=n(9963),s=n(2343),i=n(5205);(0,i.z)("/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});var l=n(6252),c=n(2262),u=n(3577);const d=e=>((0,l.dD)("data-v-2c73279e"),e=e(),(0,l.Cn)(),e),m={id:"footer"},_={class:"footer-items"},S={class:"footer-item"},E=d((()=>(0,l._)("strong",null,"FitTrackee",-1))),T=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),p={class:"footer-item"},A={key:0,class:"footer-item bullet"},O={key:1,class:"footer-item"},U=["href"],R=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),I={class:"footer-item"},g={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"};var N=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const t=e,{adminContact:n,version:r}=(0,c.BK)(t);return(e,t)=>{const a=(0,l.up)("router-link");return(0,l.wg)(),(0,l.iD)("div",m,[(0,l._)("div",_,[(0,l._)("div",S,[E,(0,l.Uk)(" v"+(0,u.zw)((0,c.SU)(r)),1)]),T,(0,l._)("div",p,[(0,l.Wm)(a,{to:"/about"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("common.ABOUT")),1)])),_:1})]),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(n)}`},(0,u.zw)(e.$t("common.CONTACT")),9,U)])):(0,l.kq)("",!0),R,(0,l._)("div",I,[(0,l._)("a",g,(0,u.zw)(e.$t("common.DOCUMENTATION")),1)])])])}}}),z=n(3744);const h=(0,z.Z)(N,[["__scopeId","data-v-2c73279e"]]);var w=h,f=(n(7658),n(6595)),v=n(5801),C=n(9917),D=n(6287);const k=e=>((0,l.dD)("data-v-95c1cc02"),e=e(),(0,l.Cn)(),e),P={id:"nav"},L={class:"nav-container"},M={class:"nav-app-name"},b={class:"nav-items-close"},y=k((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),G={key:0,class:"nav-items-group"},F=k((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),W={class:"nav-items-user-menu"},K={key:0,class:"nav-items-group"},Y={class:"nav-item nav-profile-img"},x={key:1,class:"nav-items-group"},B=k((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var $=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:t}){const n=(0,C.o)(),r=(0,l.Fl)((()=>n.getters[v.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>n.getters[v.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>n.getters[v.SY.GETTERS.LANGUAGE])),s=(0,c.iH)(!1);function i(){s.value=!0,t("menuInteraction",!0)}function d(){s.value=!1,t("menuInteraction",!1)}function m(e){n.dispatch(v.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function _(){n.dispatch(v.YN.ACTIONS.LOGOUT)}return(e,t)=>{const n=(0,l.up)("router-link"),S=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",L,[(0,l._)("div",M,[(0,l._)("div",{class:"nav-item app-name",onClick:t[0]||(t[0]=t=>e.$router.push("/"))}," FitTrackee ")]),(0,l._)("div",{class:(0,u.C_)(["nav-icon-open",{"menu-open":s.value}])},[(0,l._)("i",{class:"fa fa-bars hamburger-icon",onClick:t[1]||(t[1]=e=>i())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":s.value}])},[(0,l._)("div",b,[y,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!s.value}]),onClick:t[2]||(t[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:t[3]||(t[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",G,[(0,l.Wm)(n,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,u.kC)(e.$t("workouts.WORKOUT",2))),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts/add"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("workouts.ADD_WORKOUT")),1)])),_:1}),(0,c.SU)(a)&&(0,c.SU)(r).admin?((0,l.wg)(),(0,l.j4)(n,{key:0,class:"nav-item",to:"/admin"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("admin.ADMIN")),1)])),_:1})):(0,l.kq)("",!0),F])):(0,l.kq)("",!0)]),(0,l._)("div",W,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",K,[(0,l._)("div",Y,[(0,l.Wm)(f.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(n,{class:"nav-item",to:"/profile",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(r).username),1)])),_:1}),(0,l._)("div",{class:"nav-item nav-link",onClick:_},(0,u.zw)(e.$t("user.LOGOUT")),1)])):((0,l.wg)(),(0,l.iD)("div",x,[(0,l.Wm)(n,{class:"nav-item",to:"/login",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.LOGIN")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/register",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.REGISTER")),1)])),_:1})])),(0,c.SU)(D.mT)&&(0,c.SU)(o)?((0,l.wg)(),(0,l.j4)(S,{key:2,class:"nav-item",options:(0,c.SU)(D.mT),selected:(0,c.SU)(o),onSelected:m},{default:(0,l.w5)((()=>[B])),_:1},8,["options","selected"])):(0,l.kq)("",!0)])],2)])])}}});const Z=(0,z.Z)($,[["__scopeId","data-v-95c1cc02"]]);var H=Z,q=n(7167);const V={id:"no-config"},j={class:"error-page"},X={class:"error-img"},J=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",V,[(0,l._)("div",j,[(0,l._)("div",X,[(0,l.Wm)(q.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,J)])]))}});const ee=(0,z.Z)(Q,[["__scopeId","data-v-47759238"]]);var te=ee;const ne=(0,l._)("div",{id:"top"},null,-1),re={key:0,class:"app-container"},ae={class:"app-loading"},oe={class:"container scroll"},se=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),ie=[se];var le=(0,l.aZ)({__name:"App",setup(e){const t=(0,C.o)(),n=(0,l.Fl)((()=>t.getters[v.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>t.getters[v.SY.GETTERS.APP_LOADING])),a=(0,c.iH)(!1),o=(0,c.iH)(!1);function s(e){a.value=e}function i(e){return e.getBoundingClientRect().top=0}function d(){window.onscroll=()=>{const e=document.querySelector("#bottom");o.value=null!==e&&i(e)}}function m(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((()=>{o.value=!1}),300)}function _(){let e="en";try{const t=navigator.language.split("-")[0];t in D.v1&&(e=t)}catch(n){e="en"}t.dispatch(v.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{_(),t.dispatch(v.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,t)=>{const i=(0,l.up)("Loader"),d=(0,l.up)("router-view");return(0,l.wg)(),(0,l.iD)(l.HY,null,[ne,(0,l.Wm)(H,{onMenuInteraction:s}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",re,[(0,l._)("div",ae,[(0,l.Wm)(i)])])):((0,l.wg)(),(0,l.iD)("div",{key:1,class:(0,u.C_)(["app-container",{"hide-scroll":a.value}])},[(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(te,{key:1}))],2)),(0,l._)("div",oe,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},ie,2)]),(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(w,{key:2,version:(0,c.SU)(n)?(0,c.SU)(n).version:"",adminContact:(0,c.SU)(n).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const ce=le;var ue=ce,de=n(2540),me=n(9160),_e=n(2894);const Se={class:"alert-message"},Ee=["innerHTML"];var Te=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",Se,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(n))},null,8,Ee)]))}});const pe=(0,z.Z)(Te,[["__scopeId","data-v-69d7e4ff"]]);var Ae=pe,Oe=n(2531);const Ue={class:"custom-textarea"},Re=["id","name","maxLenght","disabled"],Ie={class:"remaining-chars"};var ge=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:t}){const n=e,r=(0,c.iH)("");function a(e){t("updateValue",e.target.value)}return(0,l.YP)((()=>n.input),(e=>{r.value=null===e?"":e})),(t,n)=>((0,l.wg)(),(0,l.iD)("div",Ue,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLenght:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":n[0]||(n[0]=e=>r.value=e),onInput:a},null,40,Re),[[o.nr,r.value]]),(0,l._)("div",Ie,(0,u.zw)(t.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const Ne=(0,z.Z)(ge,[["__scopeId","data-v-8cf5cc64"]]);var ze=Ne,he=n(3649);const we=(0,l.Uk)(" "+(0,u.zw)(" ")+" ");var fe=(0,l.aZ)({__name:"Distance",props:{distance:null,unitFrom:null,useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const t=e,{digits:n,displayUnit:r,distance:a,speed:o,strong:s,unitFrom:i,useImperialUnits:d}=(0,c.BK)(t),m=(0,l.Fl)((()=>d.value?he.Dl[i.value].defaultTarget:i.value)),_=(0,l.Fl)((()=>d.value?(0,he.sC)(a.value,i.value,m.value,n.value):parseFloat(a.value.toFixed(n.value))));return(e,t)=>((0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("span",{class:(0,u.C_)(["distance",{strong:(0,c.SU)(s)}])},(0,u.zw)((0,c.SU)(_)),3),we,(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("span",{key:0,class:(0,u.C_)(["unit",{strong:(0,c.SU)(s)}])},(0,u.zw)((0,c.SU)(m))+(0,u.zw)((0,c.SU)(o)?"/h":""),3)):(0,l.kq)("",!0)],64))}});const ve=(0,z.Z)(fe,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,De=n(2201);const ke={class:"dropdown-wrapper"},Pe={key:0,class:"dropdown-list"},Le=["onClick"];var Me=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:t}){const n=e,r=(0,De.yj)(),a=(0,c.iH)(!1),o=n.options.map((e=>e));function s(){a.value=!a.value}function i(e){t("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(t,n)=>((0,l.wg)(),(0,l.iD)("div",ke,[(0,l._)("div",{class:"dropdown-selected",onClick:s},[(0,l.WI)(t.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",Pe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:t.value===e.selected}]),key:n,onClick:e=>i(t)},(0,u.zw)(t.label),11,Le)))),128))])):(0,l.kq)("",!0)]))}});const be=(0,z.Z)(Me,[["__scopeId","data-v-2d3b4eac"]]);var ye=be;const Ge={class:"error-message"},Fe={key:0},We={key:1};var Ke=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",Ge,[Array.isArray((0,c.SU)(n))?((0,l.wg)(),(0,l.iD)("ul",Fe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(n),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{key:n},(0,u.zw)(e.$t(t)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",We,(0,u.zw)(e.$t((0,c.SU)(n))),1))]))}});const Ye=(0,z.Z)(Ke,[["__scopeId","data-v-2659a79a"]]);var xe=Ye;const Be={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},$e=(0,l._)("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),Ze=(0,l._)("g",null,[(0,l._)("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),(0,l._)("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),He=[$e,Ze];function qe(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Be,He)}var Ve={name:"CyclingSport"};const je=(0,z.Z)(Ve,[["render",qe]]);var Xe=je;const Je={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Qe=(0,l._)("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),et=(0,l._)("g",{id:"g147"},[(0,l._)("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),(0,l._)("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),tt=[Qe,et];function nt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Je,tt)}var rt={name:"CyclingTransport"};const at=(0,z.Z)(rt,[["render",nt]]);var ot=at;const st={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},it=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),lt=(0,l._)("g",null,[(0,l._)("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),(0,l._)("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),ct=[it,lt];function ut(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",st,ct)}var dt={name:"Hiking"};const mt=(0,z.Z)(dt,[["render",ut]]);var _t=mt;const St={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),Tt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),(0,l._)("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),(0,l._)("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),pt=[Et,Tt];function At(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",St,pt)}var Ot={name:"MountainBiking"};const Ut=(0,z.Z)(Ot,[["render",At]]);var Rt=Ut;const It={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},gt=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),Nt=[gt];function zt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",It,Nt)}var ht={name:"MountainBikingElectric"};const wt=(0,z.Z)(ht,[["render",zt]]);var ft=wt;const vt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},Ct=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),Dt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),(0,l._)("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),kt=[Ct,Dt];function Pt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,kt)}var Lt={name:"Rowing"};const Mt=(0,z.Z)(Lt,[["render",Pt]]);var bt=Mt;const yt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},Gt=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),Ft=(0,l._)("g",null,[(0,l._)("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),(0,l._)("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),Wt=[Gt,Ft];function Kt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",yt,Wt)}var Yt={name:"Running"};const xt=(0,z.Z)(Yt,[["render",Kt]]);var Bt=xt;const $t={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},Zt=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),Ht=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),(0,l._)("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),qt=[Zt,Ht];function Vt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",$t,qt)}var jt={name:"SkiingAlpine"};const Xt=(0,z.Z)(jt,[["render",Vt]]);var Jt=Xt;const Qt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},en=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),tn=(0,l._)("g",null,[(0,l._)("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),nn=[en,tn];function rn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Qt,nn)}var an={name:"SkiingCrossCountry"};const on=(0,z.Z)(an,[["render",rn]]);var sn=on;const ln={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},cn=(0,l.uE)('silhouette of a person with snowshoes',6),un=[cn];function dn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",ln,un)}var mn={name:"Snowshoes"};const _n=(0,z.Z)(mn,[["render",dn]]);var Sn=_n;const En={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},Tn=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),pn=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),(0,l._)("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),An=[Tn,pn];function On(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",En,An)}var Un={name:"Trail"};const Rn=(0,z.Z)(Un,[["render",On]]);var In=Rn;const gn={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Nn=(0,l.uE)('silhouette of a walking person',3),zn=[Nn];function hn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",gn,zn)}var wn={name:"Walking"};const fn=(0,z.Z)(wn,[["render",hn]]);var vn=fn;const Cn=["title"];var Dn=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const t=e,{color:n,sportLabel:r,title:a}=(0,c.BK)(t),o=(0,l.f3)("sportColors");return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(n)?(0,c.SU)(n):(0,c.SU)(o)[(0,c.SU)(r)]}),title:(0,c.SU)(a)?(0,c.SU)(a):e.$t(`sports.${(0,c.SU)(r)}.LABEL`)},["Cycling (Sport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Xe,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ot,{key:1})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(_t,{key:2})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Rt,{key:3})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ft,{key:4})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(bt,{key:5})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Bt,{key:6})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Jt,{key:7})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(sn,{key:8})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Sn,{key:9})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(In,{key:10})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:11})):(0,l.kq)("",!0)],12,Cn))}});const kn=Dn;var Pn=kn;const Ln={class:"loader"};function Mn(e,t){return(0,l.wg)(),(0,l.iD)("div",Ln)}const bn={},yn=(0,z.Z)(bn,[["render",Mn],["__scopeId","data-v-4c9921ee"]]);var Gn=yn;const Fn={id:"modal"},Wn={class:"custom-modal"},Kn={key:0,class:"modal-message"},Yn={key:1,class:"modal-message"},xn={class:"modal-buttons"};var Bn=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:t}){const n=e,r=(0,C.o)(),{title:a,message:o,strongMessage:s}=(0,c.BK)(n),i=(0,l.Fl)((()=>r.getters[v.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(v.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,n)=>{const r=(0,l.up)("i18n-t"),d=(0,l.up)("ErrorMessage"),m=(0,l.up)("Card");return(0,l.wg)(),(0,l.iD)("div",Fn,[(0,l._)("div",Wn,[(0,l.Wm)(m,null,{title:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(a)),1)])),content:(0,l.w5)((()=>[(0,c.SU)(s)?((0,l.wg)(),(0,l.iD)("div",Kn,[(0,l.Wm)(r,{keypath:(0,c.SU)(o)},{default:(0,l.w5)((()=>[(0,l._)("span",null,(0,u.zw)((0,c.SU)(s)),1)])),_:1},8,["keypath"])])):((0,l.wg)(),(0,l.iD)("div",Yn,(0,u.zw)((0,c.SU)(o)),1)),(0,c.SU)(i)?((0,l.wg)(),(0,l.j4)(d,{key:2,message:(0,c.SU)(i)},null,8,["message"])):(0,l.kq)("",!0),(0,l._)("div",xn,[(0,c.SU)(i)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:n[0]||(n[0]=e=>t("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:n[1]||(n[1]=e=>t("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(i)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const $n=(0,z.Z)(Bn,[["__scopeId","data-v-e8fcfaba"]]);var Zn=$n;const Hn=[{target:Ae,name:"AlertMessage"},{target:Oe.Z,name:"Card"},{target:ze,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:ye,name:"Dropdown"},{target:xe,name:"ErrorMessage"},{target:Gn,name:"Loader"},{target:Zn,name:"Modal"},{target:Pn,name:"SportImage"}],qn={mounted:(e,t)=>{e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};var Vn=n(631);r.kL.register(r.ZL,r.jn,r.od,r.De,r.Dx,r.u,r.Gu,r.vn,r.uw,r.ST,r.f$,a.Z);const jn=(0,o.ri)(ue).provide("sportColors",Vn.Zo).use(de.Z).use(_e.Z).use(me.Z).use(s.ZP,{name:"VFullscreen"}).directive("click-outside",qn);Hn.forEach((e=>{jn.component(e.name,e.target)})),jn.mount("#app")},9160:function(e,t,n){"use strict";n.d(t,{Z:function(){return zl}});var r=n(2201),a=(n(7658),n(6252)),o=n(3577),s=n(9963),i=n(2262),l=n(5801),c=n(9917),u=n(8966);const d=e=>((0,a.dD)("data-v-24ec93e2"),e=e(),(0,a.Cn)(),e),m={id:"admin-app",class:"admin-card"},_=["onSubmit"],S={for:"admin_contact"},E=["value"],T=["disabled"],p={for:"max_users"},A=["disabled"],O={class:"user-limit-help"},U={class:"info-box"},R=d((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),I={for:"max_single_file_size"},g=["disabled"],N={for:"max_zip_file_size"},z=["disabled"],h={for:"gpx_limit_import"},w=["disabled"],f={key:1,class:"form-buttons"},v={class:"confirm",type:"submit"},C=["onClick"],D={key:2,class:"form-buttons"};var k=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const t=e,{edition:n}=(0,i.BK)(t),d=(0,c.o)(),k=(0,r.tv)(),P=(0,i.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0}),L=(0,a.Fl)((()=>d.getters[l.SY.GETTERS.ERROR_MESSAGES]));function M(e){Object.keys(P).map((t=>{["max_single_file_size","max_zip_file_size"].includes(t)?P[t]=(0,u.j)(e[t]):P[t]=e[t]}))}function b(){M(t.appConfig),d.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),k.push("/admin/application")}function y(){const e=Object.assign({},P);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,d.dispatch(l.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{t.appConfig&&M(t.appConfig)})),(e,t)=>{const r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",m,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("form",{class:"admin-form",onSubmit:(0,s.iM)(y,["prevent"])},[(0,a._)("label",S,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,i.SU)(n)||P.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":t[0]||(t[0]=e=>P.admin_contact=e),disabled:!(0,i.SU)(n)},null,8,T)),[[s.nr,P.admin_contact]]):((0,a.wg)(),(0,a.iD)("input",{key:0,class:"no-contact",value:e.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,E))]),(0,a._)("label",p,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":t[1]||(t[1]=e=>P.max_users=e),disabled:!(0,i.SU)(n)},null,8,A),[[s.nr,P.max_users]])]),(0,a._)("div",O,[(0,a._)("span",U,[R,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",I,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[2]||(t[2]=e=>P.max_single_file_size=e),disabled:!(0,i.SU)(n)},null,8,g),[[s.nr,P.max_single_file_size]])]),(0,a._)("label",N,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[3]||(t[3]=e=>P.max_zip_file_size=e),disabled:!(0,i.SU)(n)},null,8,z),[[s.nr,P.max_zip_file_size]])]),(0,a._)("label",h,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":t[4]||(t[4]=e=>P.gpx_limit_import=e),disabled:!(0,i.SU)(n)},null,8,w),[[s.nr,P.gpx_limit_import]])]),(0,i.SU)(L)?((0,a.wg)(),(0,a.j4)(r,{key:0,message:(0,i.SU)(L)},null,8,["message"])):(0,a.kq)("",!0),(0,i.SU)(n)?((0,a.wg)(),(0,a.iD)("div",f,[(0,a._)("button",v,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,s.iM)(b,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,C)])):((0,a.wg)(),(0,a.iD)("div",D,[(0,a._)("button",{class:"confirm",onClick:t[5]||(t[5]=(0,s.iM)((t=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:t[6]||(t[6]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,_)])),_:1})])}}}),P=n(3744);const L=(0,P.Z)(k,[["__scopeId","data-v-24ec93e2"]]);var M=L;const b={class:"stat-card"},y={class:"stat-content box"},G={class:"stat-icon"},F={class:"stat-details"},W={class:"stat-huge"},K={class:"stat"};var Y=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const t=e,{icon:n,text:r,value:s}=(0,i.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",b,[(0,a._)("div",y,[(0,a._)("div",G,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,i.SU)(n)}`])},null,2)]),(0,a._)("div",F,[(0,a._)("div",W,(0,o.zw)((0,i.SU)(s)),1),(0,a._)("div",K,(0,o.zw)((0,i.SU)(r)),1)])])]))}});const x=Y;var B=x;const $={id:"user-stats"};var Z=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const t=e,{appStatistics:n}=(0,i.BK)(t),r=(0,a.Fl)((()=>(0,u.Z)(n.value.uploads_dir_size,!1)));return(e,t)=>((0,a.wg)(),(0,a.iD)("div",$,[(0,a.Wm)(B,{icon:"users",value:(0,i.SU)(n).users,text:e.$t("admin.USER",(0,i.SU)(n).users)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"tags",value:(0,i.SU)(n).sports,text:e.$t("workouts.SPORT",(0,i.SU)(n).sports)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"calendar",value:(0,i.SU)(n).workouts,text:e.$t("workouts.WORKOUT",(0,i.SU)(n).workouts)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"folder-open",value:(0,i.SU)(r).size,text:(0,i.SU)(r).suffix},null,8,["value","text"])]))}});const H=Z;var q=H,V=n(2531);const j=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),X={id:"admin-menu",class:"center-card"},J={class:"admin-menu description-list"},Q={class:"application-config-details"},ee=j((()=>(0,a._)("br",null,null,-1))),te={class:"registration-status"},ne={key:0,class:"email-sending-status"},re=j((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var ae=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const t=e,{appConfig:n,appStatistics:r}=(0,i.BK)(t);return(e,t)=>{const s=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",X,[(0,a.Wm)(V.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(q,{appStatistics:(0,i.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",J,[(0,a._)("dl",null,[(0,a._)("dt",null,[(0,a.Wm)(s,{to:"/admin/application"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APPLICATION")),1)])),_:1})]),(0,a._)("dd",Q,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),ee,(0,a._)("span",te,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,i.SU)(n).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,i.SU)(n).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ne,[re,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),(0,a._)("dt",null,[(0,a.Wm)(s,{to:"/admin/sports"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("workouts.SPORT",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),(0,a._)("dt",null,[(0,a.Wm)(s,{to:"/admin/users"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])])),_:1})])}}});const oe=(0,P.Z)(ae,[["__scopeId","data-v-0dd66f89"]]);var se=oe,ie=n(9150),le=n(631);const ce=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),ue={id:"admin-sports",class:"admin-card"},de={class:"responsive-table"},me=ce((()=>(0,a._)("th",null,"#",-1))),_e={class:"text-left"},Se={class:"text-left sport-action"},Ee=ce((()=>(0,a._)("th",null,null,-1))),Te={class:"text-center"},pe=ce((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),Ae={class:"cell-heading"},Oe={class:"sport-label"},Ue={class:"cell-heading"},Re={class:"text-center"},Ie={class:"cell-heading"},ge={class:"sport-action"},Ne={class:"cell-heading"},ze={class:"action-button"},he=["onClick"],we={key:0,class:"has-workouts"},fe=ce((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var ve=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:t}=(0,ie.QT)(),n=(0,c.o)(),r=(0,a.Fl)((()=>(0,le.xH)(n.getters[l.O8.GETTERS.SPORTS],t))),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(e,t){n.dispatch(l.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:t})}return(e,t)=>{const n=(0,a.up)("SportImage"),l=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ue,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.SPORTS.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",de,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[me,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",_e,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("th",Se,(0,o.zw)(e.$t("admin.ACTION")),1),Ee])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(r),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.id},[(0,a._)("td",Te,[pe,(0,a.Uk)(" "+(0,o.zw)(t.id),1)]),(0,a._)("td",null,[(0,a._)("span",Ae,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(n,{title:t.translatedLabel,"sport-label":t.label,color:t.color},null,8,["title","sport-label","color"])]),(0,a._)("td",Oe,[(0,a._)("span",Ue,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(t.translatedLabel),1)]),(0,a._)("td",Re,[(0,a._)("span",Ie,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(t.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",ge,[(0,a._)("span",Ne,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",ze,[(0,a._)("button",{class:(0,o.C_)({danger:t.is_active}),onClick:e=>d(t.id,!t.is_active)},(0,o.zw)(e.$t(`buttons.${t.is_active?"DIS":"EN"}ABLE`)),11,he),t.has_workouts?((0,a.wg)(),(0,a.iD)("span",we,[fe,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,i.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,i.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const Ce=(0,P.Z)(ve,[["__scopeId","data-v-6d62af67"]]);var De=Ce,ke=n(4850),Pe=n(8626),Le=n(5020),Me=n(6595);const be={class:"users-filters"},ye={class:"search-username"},Ge=["onKeyup","placeholder"];var Fe=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:t}){const n=(0,r.yj)(),l=(0,i.iH)(n.query.q?n.query.q:"");function c(){""!==l.value&&t("filterOnUsername",l)}function u(){l.value="",t("filterOnUsername",l.value)}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",be,[(0,a._)("div",ye,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":t[0]||(t[0]=e=>l.value=e),onKeyup:(0,s.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,Ge),[[s.nr,l.value,void 0,{trim:!0}]]),""!==l.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:u})):(0,a.kq)("",!0)]),(0,a._)("i",{class:(0,o.C_)(["fa fa-search",{"fa-disabled":""===l.value}]),"aria-hidden":"true",onClick:c},null,2)]))}});const We=(0,P.Z)(Fe,[["__scopeId","data-v-627a8e91"]]);var Ke=We,Ye=n(2766),xe=n(6558);const Be=e=>((0,a.dD)("data-v-4735c10f"),e=e(),(0,a.Cn)(),e),$e={id:"admin-users",class:"admin-card"},Ze={key:0,class:"no-users"},He={key:1,class:"responsive-table"},qe=Be((()=>(0,a._)("th",null,"#",-1))),Ve={class:"left-text"},je={class:"left-text"},Xe={class:"left-text"},Je={class:"cell-heading"},Qe={class:"cell-heading"},et={class:"cell-heading"},tt={class:"cell-heading"},nt={class:"text-center"},rt={class:"cell-heading"},at={class:"text-center"},ot={class:"cell-heading"},st={class:"text-center"},it={class:"cell-heading"},lt={class:"text-center"},ct={class:"cell-heading"},ut=["disabled","onClick"];var dt=(0,a.aZ)({__name:"AdminUsers",setup(e){const t=(0,c.o)(),n=(0,r.yj)(),u=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let _=(0,i.qj)((0,Ye.pm)(n.query,d,m));const S=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),E=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES]));function A(e){t.dispatch(l.RT.ACTIONS.GET_USERS,e)}function O(e){R("q",e.value)}function U(e,n){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,admin:n})}function R(e,t){_[e]=t,"per_page"===e&&(_.page=1),u.push({path:"/admin/users",query:_})}return(0,a.wF)((()=>A(_))),(0,a.Ah)((()=>{t.dispatch(l.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>n.query),(e=>{_=(0,Ye.pm)(e,d,m,{query:_}),A(_)})),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",$e,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(Ke,{onFilterOnUsername:O}),(0,a.Wm)(Pe.Z,{sort:(0,i.SU)(Ye.fS),order_by:d,query:(0,i.SU)(_),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:R},null,8,["sort","query"]),0===(0,i.SU)(E).length?((0,a.wg)(),(0,a.iD)("div",Ze,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",He,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[qe,(0,a._)("th",Ve,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",je,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",Xe,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a._)("th",null,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTION")),1)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(E),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.username},[(0,a._)("td",null,[(0,a._)("span",Je,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Me.Z,{user:t},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",Qe,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(n,{to:`/admin/users/${t.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",et,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(t.email),1)]),(0,a._)("td",null,[(0,a._)("span",tt,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(xe.eB)(t.created_at,(0,i.SU)(S).timezone),"dd/MM/yyyy HH:mm")),1)]),(0,a._)("td",nt,[(0,a._)("span",rt,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(t.nb_workouts),1)]),(0,a._)("td",at,[(0,a._)("span",ot,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",st,[(0,a._)("span",it,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",lt,[(0,a._)("span",ct,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:t.admin}),disabled:t.username===(0,i.SU)(S).username,onClick:e=>U(t.username,!t.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${t.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,ut)])])))),128))])]),(0,i.SU)(T).page?((0,a.wg)(),(0,a.j4)(Le.Z,{key:0,path:"/admin/users",pagination:(0,i.SU)(T),query:(0,i.SU)(_)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,i.SU)(p)?((0,a.wg)(),(0,a.j4)(r,{key:1,message:(0,i.SU)(p)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,s.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const mt=(0,P.Z)(dt,[["__scopeId","data-v-4735c10f"]]);var _t=mt,St=n(2179);const Et={class:"profile-tabs custom-checkboxes-group"},Tt={class:"profile-tabs-checkboxes custom-checkboxes"},pt=["id","name","checked","disabled","onInput"];var At=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const t=e,{tabs:n,selectedTab:r,disabled:s}=(0,i.BK)(t);function l(e){switch(e){case"ACCOUNT":case"PICTURE":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${t.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(t.edition?"/edit":"")}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Et,[(0,a._)("div",Tt,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(n),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:t},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:t,name:t,checked:(0,i.SU)(r).split("/")[0]===t,disabled:(0,i.SU)(s),onInput:n=>e.$router.push(l(t))},null,40,pt),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${t}`)),1)])])))),128))])]))}});const Ot=At;var Ut=Ot;const Rt={id:"user-profile"},It={class:"box"};var gt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,{user:n,tab:r}=(0,i.BK)(t),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,t)=>{const s=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",Rt,[(0,a.Wm)(St.Z,{user:(0,i.SU)(n)},null,8,["user"]),(0,a._)("div",It,[(0,a.Wm)(Ut,{tabs:o,selectedTab:(0,i.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(s,{user:(0,i.SU)(n)},null,8,["user"])])])}}});const Nt=(0,P.Z)(gt,[["__scopeId","data-v-9729cba4"]]);var zt=Nt,ht=n(7408),wt=n(6287);const ft={id:"user-preferences",class:"description-list"},vt={class:"profile-buttons"};var Ct=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const t=e,n=(0,a.Fl)((()=>t.user.language?wt.zK[t.user.language]:wt.zK.en)),r=(0,a.Fl)((()=>t.user.weekm?"MONDAY":"SUNDAY")),s=(0,a.Fl)((()=>t.user.timezone?t.user.timezone:"Europe/Paris")),l=(0,a.Fl)((()=>t.user.display_ascent?"DISPLAYED":"HIDDEN"));return(t,c)=>((0,a.wg)(),(0,a.iD)("div",ft,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(n)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(s)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`user.PROFILE.${(0,i.SU)(r)}`)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`common.${(0,i.SU)(l)}`)),1)]),(0,a._)("div",vt,[(0,a._)("button",{onClick:c[0]||(c[0]=e=>t.$router.push("/profile/edit/preferences"))},(0,o.zw)(t.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:c[1]||(c[1]=e=>t.$router.push("/"))},(0,o.zw)(t.$t("common.HOME")),1)])]))}});const Dt=Ct;var kt=Dt;const Pt={id:"user-profile-edition",class:"center-card"};var Lt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,n=(0,c.o)(),{user:r,tab:s}=(0,i.BK)(t),u=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS"],d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING]));return(e,t)=>{const n=(0,a.up)("router-view"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Pt,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t(`user.PROFILE.${(0,i.SU)(s)}_EDITION`)),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Ut,{tabs:u,selectedTab:(0,i.SU)(s),edition:!0,disabled:(0,i.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(n,{user:(0,i.SU)(r)},null,8,["user"])])),_:1})])}}});const Mt=Lt;var bt=Mt,yt=n(8403);const Gt={id:"user-infos-edition"},Ft={class:"profile-form form-box"},Wt={key:1,class:"info-box success-message"},Kt=["onSubmit"],Yt={class:"form-items",for:"email"},xt=["disabled"],Bt={class:"form-items",for:"password-field"},$t={class:"form-items",for:"new-password-field"},Zt={class:"form-buttons"},Ht={class:"confirm",type:"submit"};var qt=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const t=e,{user:n}=(0,i.BK)(t),r=(0,c.o)(),u=(0,i.qj)({email:"",password:"",new_password:""}),d=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.APP_CONFIG])),_=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.IS_SUCCESS])),S=(0,i.iH)(!1),E=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.ERROR_MESSAGES])),T=(0,i.iH)(!1),p=(0,i.iH)(!1);function A(){T.value=!0}function O(e){u.email=e.email}function U(e){u.password=e}function R(e){u.new_password=e}function I(){const e={email:u.email,password:u.password};u.new_password&&(e.new_password=u.new_password),S.value=u.email!==n.value.email,r.dispatch(l.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function g(e){p.value=e}function N(e){r.dispatch(l.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}return(0,a.bv)((()=>{t.user&&O(t.user)})),(0,a.Ah)((()=>{r.commit(l.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>_.value),(async e=>{e&&(U(""),R(""),O(n.value),T.value=!1)})),(0,a.YP)((()=>n.value.email),(async()=>{O(n.value)})),(e,t)=>{const r=(0,a.up)("Modal"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Gt,[p.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:t[0]||(t[0]=e=>N((0,i.SU)(n).username)),onCancelAction:t[1]||(t[1]=e=>g(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Ft,[(0,i.SU)(E)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,i.SU)(E)},null,8,["message"])):(0,a.kq)("",!0),(0,i.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Wt,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${S.value&&(0,i.SU)(m).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:T.value}),onSubmit:(0,s.iM)(I,["prevent"])},[(0,a._)("label",Yt,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=e=>u.email=e),disabled:(0,i.SU)(d),required:!0,onInvalid:A},null,40,xt),[[s.nr,u.email]])]),(0,a._)("label",Bt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(yt.Z,{id:"password-field",disabled:(0,i.SU)(d),password:u.password,required:!0,onUpdatePassword:U,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("label",$t,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(yt.Z,{id:"new-password-field",disabled:(0,i.SU)(d),checkStrength:!0,password:u.new_password,isSuccess:!1,onUpdatePassword:R,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("div",Zt,[(0,a._)("button",Ht,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,s.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:t[4]||(t[4]=(0,s.iM)((e=>g(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1)])],42,Kt)])])}}});const Vt=(0,P.Z)(qt,[["__scopeId","data-v-37b8c4c8"]]);var jt=Vt;const Xt={id:"user-infos-edition"},Jt={class:"profile-form form-box"},Qt=["onSubmit"],en={class:"form-items",for:"registrationDate"},tn=["value"],nn={class:"form-items",for:"first_name"},rn=["disabled"],an={class:"form-items",for:"last_name"},on={class:"form-items",for:"birth_date"},sn=["disabled"],ln={class:"form-items",for:"location"},cn=["disabled"],un={class:"form-items"},dn={class:"form-buttons"},mn={class:"confirm",type:"submit"};var _n=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,i.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),u=(0,a.Fl)((()=>t.user.created_at?(0,ke.Z)(new Date(t.user.created_at),"dd/MM/yyyy HH:mm"):"")),d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function _(e){r.first_name=e.first_name?e.first_name:"",r.last_name=e.last_name?e.last_name:"",r.birth_date=e.birth_date?(0,ke.Z)(new Date(e.birth_date),"yyyy-MM-dd"):"",r.location=e.location?e.location:"",r.bio=e.bio?e.bio:""}function S(e){r.bio=e}function E(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{t.user&&_(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage"),l=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Xt,[(0,a._)("div",Jt,[(0,i.SU)(m)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,i.SU)(m)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,s.iM)(E,["prevent"])},[(0,a._)("label",en,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,i.SU)(u),disabled:""},null,8,tn)]),(0,a._)("label",nn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":t[0]||(t[0]=e=>r.first_name=e),disabled:(0,i.SU)(d)},null,8,rn),[[s.nr,r.first_name]])]),(0,a._)("label",an,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":t[1]||(t[1]=e=>r.last_name=e)},null,512),[[s.nr,r.last_name]])]),(0,a._)("label",on,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),(0,a.wy)((0,a._)("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":t[2]||(t[2]=e=>r.birth_date=e),disabled:(0,i.SU)(d)},null,8,sn),[[s.nr,r.birth_date]])]),(0,a._)("label",ln,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":t[3]||(t[3]=e=>r.location=e),disabled:(0,i.SU)(d)},null,8,cn),[[s.nr,r.location]])]),(0,a._)("label",un,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(l,{name:"bio",charLimit:200,input:r.bio,disabled:(0,i.SU)(d),onUpdateValue:S},null,8,["input","disabled"])]),(0,a._)("div",dn,[(0,a._)("button",mn,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,s.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Qt)])])}}});const Sn=(0,P.Z)(_n,[["__scopeId","data-v-b6bacea0"]]);var En=Sn;const Tn=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),pn={id:"user-picture-edition"},An={class:"user-picture-form"},On=["onSubmit"],Un={class:"picture-help"},Rn={class:"info-box"},In=Tn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),gn={class:"picture-buttons"},Nn=["disabled"];var zn=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,i.BK)(t),d=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),_=m.value.max_single_file_size?(0,u.Z)(m.value.max_single_file_size):"",S=(0,i.iH)(null);function E(){n.dispatch(l.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(S.value=e.target.files[0])}function p(){S.value&&n.dispatch(l.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:S.value})}return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",pn,[(0,a._)("div",An,[(0,i.SU)(d)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,i.SU)(d)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Me.Z,{user:(0,i.SU)(r)},null,8,["user"]),(0,a._)("form",{onSubmit:(0,s.iM)(p,["prevent"])},[(0,a._)("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:T},null,32),(0,a._)("div",Un,[(0,a._)("span",Rn,[In,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,i.SU)(_)),1)])]),(0,a._)("div",gn,[(0,a._)("button",{type:"submit",disabled:!S.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,Nn),(0,i.SU)(r).picture?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"danger",onClick:E},(0,o.zw)(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):(0,a.kq)("",!0),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,On)])])}}});const hn=(0,P.Z)(zn,[["__scopeId","data-v-687e9604"]]);var wn=hn;const fn=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],vn={id:"tz-dropdown"},Cn=["value","disabled","onKeydown"],Dn=["onClick","onMouseover","autofocus"];var kn=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:t}){const n=e,{input:r,disabled:l}=(0,i.BK)(n),c=(0,i.iH)(n.input),u=(0,i.iH)(!1),d=(0,i.iH)(null),m=(0,i.iH)(0);function _(e){return e.toLowerCase().match(c.value.toLowerCase())}function S(e){m.value=e}function E(e){c.value=e,u.value=!1,t("updateTimezone",e)}function T(e){e.preventDefault(),d.value?.firstElementChild?.innerHTML&&E(d.value?.firstElementChild?.innerHTML)}function p(e){e.preventDefault(),u.value=!0,c.value=e.target.value.trim()}return(0,a.YP)((()=>n.input),(e=>{c.value=e})),(e,t)=>((0,a.wg)(),(0,a.iD)("div",vn,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,i.SU)(l),required:"",onKeydown:[t[0]||(t[0]=(0,s.D2)((e=>E((0,i.SU)(r))),["esc"])),(0,s.D2)(T,["enter"])],onInput:p},null,40,Cn),u.value?((0,a.wg)(),(0,a.iD)("ul",{key:0,class:"tz-dropdown-list",ref_key:"tzList",ref:d},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(fn).filter((e=>_(e))),((e,t)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:t===m.value}]),onClick:t=>E(e),onMouseover:e=>S(t),autofocus:t===m.value},(0,o.zw)(e),43,Dn)))),128))],512)):(0,a.kq)("",!0)]))}});const Pn=(0,P.Z)(kn,[["__scopeId","data-v-47ea2903"]]);var Ln=Pn;const Mn={id:"user-preferences-edition"},bn={class:"profile-form form-box"},yn=["onSubmit"],Gn={class:"form-items"},Fn=["disabled"],Wn=["value"],Kn={class:"form-items"},Yn={class:"form-items form-checkboxes"},xn={class:"checkboxes-label"},Bn={class:"checkboxes"},$n=["id","name","checked","disabled","onInput"],Zn={class:"checkbox-label"},Hn={class:"form-items form-checkboxes"},qn={class:"checkboxes-label"},Vn={class:"checkboxes"},jn=["id","name","checked","disabled","onInput"],Xn={class:"checkbox-label"},Jn={class:"form-items form-checkboxes"},Qn={class:"checkboxes-label"},er={class:"checkboxes"},tr=["id","name","checked","disabled","onInput"],nr={class:"checkbox-label"},rr={class:"form-buttons"},ar={class:"confirm",type:"submit"};var or=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,i.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",weekm:!1}),u=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],d=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],m=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],_=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),S=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function E(e){r.display_ascent=e.display_ascent,r.imperial_units=!!e.imperial_units&&e.imperial_units,r.language=e.language?e.language:"en",r.timezone=e.timezone?e.timezone:"Europe/Paris",r.weekm=!!e.weekm&&e.weekm}function T(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function p(e){r.timezone=e}function A(e){r.display_ascent=e}function O(e){r.imperial_units=e}function U(e){r.weekm=e}return(0,a.bv)((()=>{t.user&&E(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("div",bn,[(0,i.SU)(S)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,i.SU)(S)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,s.iM)(T,["prevent"])},[(0,a._)("label",Gn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":t[0]||(t[0]=e=>r.language=e),disabled:(0,i.SU)(_)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(wt.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,Wn)))),128))],8,Fn),[[s.bM,r.language]])]),(0,a._)("label",Kn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(Ln,{input:r.timezone,disabled:(0,i.SU)(_),onUpdateTimezone:p},null,8,["input","disabled"])]),(0,a._)("div",Yn,[(0,a._)("span",xn,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",Bn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(u,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.weekm,disabled:(0,i.SU)(_),onInput:e=>U(t.value)},null,40,$n),(0,a._)("span",Zn,(0,o.zw)(e.$t(`user.PROFILE.${t.label}`)),1)]))),64))])]),(0,a._)("div",Hn,[(0,a._)("span",qn,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Vn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.imperial_units,disabled:(0,i.SU)(_),onInput:e=>O(t.value)},null,40,jn),(0,a._)("span",Xn,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${t.label}`)),1)]))),64))])]),(0,a._)("div",Jn,[(0,a._)("span",Qn,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",er,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.display_ascent,disabled:(0,i.SU)(_),onInput:e=>A(t.value)},null,40,tr),(0,a._)("span",nr,(0,o.zw)(e.$t(`common.${t.label}`)),1)]))),64))])]),(0,a._)("div",rr,[(0,a._)("button",ar,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[1]||(t[1]=(0,s.iM)((t=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,yn)])])}}});const sr=(0,P.Z)(or,[["__scopeId","data-v-f7548012"]]);var ir=sr;const lr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],cr=["application:write"],ur={id:"new-oauth2-app"},dr={id:"new-oauth2-title"},mr={id:"apps-form"},_r=["onSubmit"],Sr={class:"form-items"},Er={class:"form-item"},Tr={for:"app-name"},pr={class:"form-item"},Ar={for:"app-description"},Or={class:"form-item"},Ur={for:"app-url"},Rr={class:"form-item"},Ir={for:"app-redirect-uri"},gr={class:"form-item-scope"},Nr={class:"form-item-scope-label"},zr={class:"scope-label"},hr=["name","checked","onChange"],wr=["innerHTML"],fr={class:"form-buttons"},vr=["disabled"];var Cr=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),r=(0,i.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),u=(0,i.qj)([]),d=(0,a.Fl)((()=>E(t.authUser,cr,lr)));function m(){const e={client_name:r.client_name,client_description:r.client_description,client_uri:r.client_uri,redirect_uris:[r.redirect_uri],scope:u.sort().join(" ")};n.dispatch(l.Km.ACTIONS.CREATE_CLIENT,e)}function _(e){r.client_description=e}function S(e){const t=u.indexOf(e);t>-1?u.splice(t,1):u.push(e)}function E(e,t,n){const r=[...n];return e.admin&&r.push(...t),r.sort()}return(e,t)=>{const n=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",ur,[(0,a._)("h1",dr,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",mr,[(0,a._)("form",{onSubmit:(0,s.iM)(m,["prevent"])},[(0,a._)("div",Sr,[(0,a._)("div",Er,[(0,a._)("label",Tr,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":t[0]||(t[0]=e=>r.client_name=e)},null,512),[[s.nr,r.client_name]])]),(0,a._)("div",pr,[(0,a._)("label",Ar,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(n,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:_},null,8,["input"])]),(0,a._)("div",Or,[(0,a._)("label",Ur,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":t[1]||(t[1]=e=>r.client_uri=e)},null,512),[[s.nr,r.client_uri]])]),(0,a._)("div",Rr,[(0,a._)("label",Ir,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":t[2]||(t[2]=e=>r.redirect_uri=e)},null,512),[[s.nr,r.redirect_uri]])]),(0,a._)("div",gr,[(0,a._)("div",Nr,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:t},[(0,a._)("label",zr,[(0,a._)("input",{type:"checkbox",name:t,checked:u.includes(t),onChange:e=>S(t)},null,40,hr),(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,wr)])))),128))])]),(0,a._)("div",fr,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===u.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,vr),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,s.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,_r)])])}}});const Dr=(0,P.Z)(Cr,[["__scopeId","data-v-0657ee77"]]);var kr=Dr;const Pr={id:"authorize-oauth2-app"},Lr={key:0},Mr={id:"authorize-oauth2-title"},br={class:"oauth2-access description-list"},yr={class:"client-scope"},Gr=["innerHTML"],Fr={class:"authorize-oauth2-buttons"},Wr={key:1},Kr={class:"no-app"};var Yr=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const t=(0,r.yj)(),n=(0,c.o)(),s=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENT])),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(){t.query.client_id&&"string"===typeof t.query.client_id&&n.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,t.query.client_id)}function m(){n.dispatch(l.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${t.query.client_id}`,redirect_uri:`${t.query.redirect_uri}`,response_type:`${t.query.response_type}`,scope:`${t.query.scope}`,state:`${t.query.state?t.query.state:""}`,code_challenge:`${t.query.code_challenge?t.query.code_challenge:""}`,code_challenge_method:`${t.query.code_challenge_method?t.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Pr,[(0,i.SU)(s).client_id?((0,a.wg)(),(0,a.iD)("div",Lr,[(0,a._)("h1",Mr,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:(0,i.SU)(s).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,i.SU)(s).name),1)])),_:1},8,["to"])])),_:1})]),(0,i.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,i.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",br,[(0,a._)("p",null,(0,o.zw)(e.$t("oauth2.APP_REQUESTING_ACCESS")),1),(0,a._)("dl",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(s).scope.split(" "),(t=>((0,a.wg)(),(0,a.iD)(a.HY,{key:t},[(0,a._)("dt",yr,[(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,Gr)],64)))),128))]),(0,a._)("div",Fr,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",Wr,[(0,a._)("p",Kr,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const xr=(0,P.Z)(Yr,[["__scopeId","data-v-3b2fe9ed"]]);var Br=xr;const $r={id:"oauth2-apps"};var Zr=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,i.BK)(t);return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.Km.MUTATIONS.SET_CLIENTS,[])})),(e,t)=>{const n=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",$r,[(0,a.Wm)(n,{authUser:(0,i.SU)(r)},null,8,["authUser"])])}}});const Hr=Zr;var qr=Hr;const Vr={id:"oauth2-app",class:"description-list"},jr={key:1},Xr={key:0,class:"info-box success-message"},Jr=["title"],Qr={key:0},ea={key:1,class:"app-secret"},ta=["title"],na={class:"client-scopes"},ra={class:"app-buttons"},aa={key:2},oa={class:"no-app"};var sa=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,r.yj)(),s=(0,c.o)(),{afterCreation:u,authUser:d}=(0,i.BK)(t),m=(0,a.Fl)((()=>s.getters[l.Km.GETTERS.CLIENT])),_=(0,a.Fl)((()=>s.getters[l.Km.GETTERS.REVOCATION_SUCCESSFUL])),S=(0,i.iH)(!1),E=(0,i.iH)(null),T=(0,i.iH)(!1),p=(0,i.iH)(!1),A=(0,i.iH)(!1);function O(){!u.value&&n.params.id&&"string"===typeof n.params.id&&s.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_ID,+n.params.id)}function U(e){E.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",R(!0)}function R(e){S.value=e,e||(E.value=null)}function I(e){"oauth2.APP_DELETION_CONFIRMATION"===E.value?s.dispatch(l.Km.ACTIONS.DELETE_CLIENT,e):s.dispatch(l.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function g(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function N(){m.value.client_secret&&(navigator.clipboard.writeText(m.value.client_secret),p.value=!0,T.value=!1,setTimeout((()=>{p.value=!1}),3e3))}return(0,a.wF)((()=>{O(),navigator.clipboard&&(A.value=!0)})),(0,a.Ah)((()=>{s.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),s.commit(l.Km.MUTATIONS.EMPTY_CLIENT),s.commit(l.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>_.value),(e=>{e&&R(!1)})),(e,t)=>{const n=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",Vr,[S.value?((0,a.wg)(),(0,a.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(E.value),onConfirmAction:t[0]||(t[0]=e=>I((0,i.SU)(m).id)),onCancelAction:t[1]||(t[1]=e=>R(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,i.SU)(m)&&(0,i.SU)(m).client_id?((0,a.wg)(),(0,a.iD)("div",jr,[(0,i.SU)(u)||(0,i.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Xr,(0,o.zw)(e.$t((0,i.SU)(u)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.CLIENT_ID"))+":",1),(0,a._)("dd",null,[(0,a.Uk)((0,o.zw)((0,i.SU)(m).client_id)+" ",1),(0,i.SU)(u)&&A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(T.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:g},null,10,Jr)):(0,a.kq)("",!0)]),(0,i.SU)(u)&&(0,i.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",Qr,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,i.SU)(u)&&(0,i.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",ea,[(0,a.Uk)((0,o.zw)((0,i.SU)(m).client_secret)+" ",1),A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(p.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:N},null,10,ta)):(0,a.kq)("",!0)])):(0,a.kq)("",!0),(0,a._)("dt",null,(0,o.zw)((0,o.kC)(e.$t("oauth2.APP.ISSUE_AT")))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(xe.eB)((0,i.SU)(m).issued_at,(0,i.SU)(d).timezone),"dd/MM/yyyy HH:mm")),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.NAME"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(m).name),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION"))+":",1),(0,a._)("dd",{class:(0,o.C_)({"no-description":!(0,i.SU)(m).client_description})},(0,o.zw)((0,i.SU)(m).client_description?(0,i.SU)(m).client_description:e.$t("oauth2.NO_DESCRIPTION")),3),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(m).website),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,i.SU)(m).redirect_uris.length>0?(0,i.SU)(m).redirect_uris[0]:""),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+":",1),(0,a._)("dd",na,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(m).scope.split(" "),(e=>((0,a.wg)(),(0,a.iD)("span",{class:"client-scope",key:e},[(0,a._)("code",null,(0,o.zw)(e),1)])))),128))])]),(0,a._)("div",ra,[(0,a._)("button",{class:"danger",onClick:t[2]||(t[2]=e=>U(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:t[3]||(t[3]=e=>U(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:t[4]||(t[4]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",aa,[(0,a._)("p",oa,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const ia=(0,P.Z)(sa,[["__scopeId","data-v-00697fc9"]]);var la=ia;const ca={id:"oauth2-apps-list"},ua={class:"apps-list"},da={key:0},ma={class:"app-issued-at"},_a={key:1,class:"no-apps"},Sa={class:"app-list-buttons"};var Ea=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),s=(0,r.yj)(),{authUser:u}=(0,i.BK)(t),d=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS_PAGINATION]));let _=S(s.query);function S(e){const t={};return e.page&&(t.page=(0,Ye.z_)(e.page,Ye.Hf)),t}function E(e){n.dispatch(l.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{E(_)})),(0,a.YP)((()=>s.query),(async e=>{_=S(e),E(_)})),(e,t)=>{const n=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",ca,[(0,a._)("p",ua,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,i.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",da,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("li",{key:t.client_id},[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:t.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.name),1)])),_:2},1032,["to"]),(0,a._)("span",ma,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(xe.eB)(t.issued_at,(0,i.SU)(u).timezone),"dd/MM/yyyy HH:mm")),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",_a,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,i.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Le.Z,{key:2,pagination:(0,i.SU)(m),path:"/profile/apps",query:(0,i.SU)(_)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,a._)("div",Sa,[(0,a._)("button",{onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const Ta=(0,P.Z)(Ea,[["__scopeId","data-v-a5c2cdde"]]);var pa=Ta;const Aa={id:"user-sport-preferences"},Oa={key:0,class:"responsive-table"},Ua={class:"mobile-display"},Ra={key:0,class:"profile-buttons mobile-display"},Ia={key:1,class:"profile-buttons"},ga={class:"text-left"},Na={key:0},za={class:"cell-heading"},ha=["value"],wa={class:"cell-heading"},fa={key:0,class:"disabled-message"},va={key:1,class:"fa fa-refresh fa-spin fa-fw"},Ca={class:"cell-heading"},Da={class:"cell-heading"},ka=["checked"],Pa={class:"cell-heading"},La=["value"],Ma={key:1},ba={key:0,class:"action-buttons"},ya={class:"cell-heading"},Ga=["onClick"],Fa={key:1,class:"edition-buttons"},Wa=["disabled"],Ka=["disabled","onClick"],Ya=["disabled"],xa={key:0,class:"profile-buttons"},Ba={key:1,class:"profile-buttons"};var $a=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const t=e,n=(0,c.o)(),{t:r}=(0,ie.QT)(),{isEdition:u,user:d}=(0,i.BK)(t),m="#838383",_=(0,a.f3)("sportColors"),S=(0,a.Fl)((()=>n.getters[l.O8.GETTERS.SPORTS])),E=(0,a.Fl)((()=>(0,le.xH)(S.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),A=(0,i.qj)({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1});function O(e){null!==e?(A.sport_id=e.id,A.color=e.color?e.color:_?_[e.label]:m,A.is_active=e.is_active_for_user,A.stopped_speed_threshold=e.stopped_speed_threshold):N()}function U(e){return A.sport_id===e}function R(e){A.color=e.target.value}function I(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function g(e){A.is_active=e.target.checked}function N(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function z(e){e.preventDefault(),n.dispatch(l.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,t){e.preventDefault(),n.dispatch(l.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,t)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||N()})),(e,t)=>{const n=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Aa,[(0,i.SU)(S).length>0?((0,a.wg)(),(0,a.iD)("div",Oa,[(0,a._)("div",Ua,[(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("div",Ra,[(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=(0,s.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Ia,[(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[2]||(t[2]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]),(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),(0,a._)("th",ga,(0,o.zw)(e.$t("workouts.SPORT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("th",Na,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1)):(0,a.kq)("",!0)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(E),(s=>((0,a.wg)(),(0,a.iD)("tr",{key:s.id},[(0,a._)("td",null,[(0,a._)("span",za,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),U(s.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:R},null,40,ha)):((0,a.wg)(),(0,a.j4)(n,{key:1,title:s.translatedLabel,"sport-label":s.label,color:s.color?s.color:(0,i.SU)(_)[s.label]},null,8,["title","sport-label","color"]))]),(0,a._)("td",{class:(0,o.C_)(["sport-label",{"disabled-sport":!s.is_active}])},[(0,a._)("span",wa,(0,o.zw)(e.$t("user.PROFILE.SPORT.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(s.translatedLabel)+" ",1),s.is_active?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",fa," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,i.SU)(T)&&U(s.id)?((0,a.wg)(),(0,a.iD)("i",va)):(0,a.kq)("",!0),(0,i.SU)(p)&&A.sport_id===s.id?((0,a.wg)(),(0,a.j4)(r,{key:2,message:(0,i.SU)(p)},null,8,["message"])):(0,a.kq)("",!0)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!s.is_active}])},[(0,a._)("span",Ca,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+((0,i.SU)(d).sports_list.includes(s.id)?"-check":"")),"aria-hidden":"true"},null,2)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!s.is_active}])},[(0,a._)("span",Da,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),U(s.id)&&s.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:s.is_active_for_user,onChange:g},null,40,ka)):((0,a.wg)(),(0,a.iD)("i",{key:1,class:(0,o.C_)("fa fa"+(s.is_active_for_user?"-check":"")),"aria-hidden":"true"},null,2))],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!s.is_active}])},[(0,a._)("span",Pa,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),U(s.id)&&s.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1",value:A.stopped_speed_threshold,onInput:I},null,40,La)):((0,a.wg)(),(0,a.iD)("span",Ma,(0,o.zw)(s.stopped_speed_threshold),1))],2),(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("td",ba,[(0,a._)("span",ya,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1),0===A.sport_id?((0,a.wg)(),(0,a.iD)("button",{key:0,onClick:e=>O(s)},(0,o.zw)(e.$t("buttons.EDIT")),9,Ga)):(0,a.kq)("",!0),U(s.id)?((0,a.wg)(),(0,a.iD)("div",Fa,[(0,a._)("button",{disabled:(0,i.SU)(T),onClick:z},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Wa),(0,a._)("button",{disabled:(0,i.SU)(T),onClick:e=>h(e,s.id)},(0,o.zw)(e.$t("buttons.RESET")),9,Ka),(0,a._)("button",{disabled:(0,i.SU)(T),onClick:t[3]||(t[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,Ya)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,i.SU)(u)?((0,a.wg)(),(0,a.iD)("div",xa,[(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,s.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Ba,[(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[6]||(t[6]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const Za=(0,P.Z)($a,[["__scopeId","data-v-74e52489"]]);var Ha=Za,qa=n(2894);const Va=e=>((0,a.dD)("data-v-74257266"),e=e(),(0,a.Cn)(),e),ja={class:"about-text"},Xa=["innerHTML"],Ja=Va((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),Qa={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},eo=Va((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),to={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},no=Va((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),ro=Va((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),ao={key:0},oo=Va((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),so=["href"];var io=(0,a.aZ)({__name:"About",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG]));return(e,t)=>{const r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",ja,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Xa),(0,a._)("p",null,[Ja,(0,a._)("a",Qa,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[eo,(0,a._)("a",to,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[no,(0,a.Wm)(r,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[ro])),_:1})]),(0,i.SU)(n).admin_contact?((0,a.wg)(),(0,a.iD)("div",ao,[oo,(0,a._)("a",{href:`mailto:${(0,i.SU)(n).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,so)])):(0,a.kq)("",!0)])])}}});const lo=(0,P.Z)(io,[["__scopeId","data-v-74257266"]]);var co=lo;const uo={id:"bike"},mo=["src"];function _o(e,t){return(0,a.wg)(),(0,a.iD)("div",uo,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,mo)])}const So={},Eo=(0,P.Z)(So,[["render",_o],["__scopeId","data-v-795f7f5f"]]);var To=Eo;const po={id:"about",class:"view"},Ao={class:"container"},Oo={class:"container-sub"},Uo={class:"container-sub about-details"};var Ro=(0,a.aZ)({__name:"AboutView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",po,[(0,a._)("div",Ao,[(0,a._)("div",Oo,[(0,a.Wm)(To)]),(0,a._)("div",Uo,[(0,a.Wm)(co)])])]))}});const Io=(0,P.Z)(Ro,[["__scopeId","data-v-bffb50d0"]]);var go=Io,No=n(1818),zo=n(2056);const ho=e=>((0,a.dD)("data-v-c9d1f10c"),e=e(),(0,a.Cn)(),e),wo={class:"timeline-workout"},fo={class:"box"},vo={class:"workout-user-date"},Co={class:"workout-user"},Do=["title"],ko={key:0},Po={key:1,class:"no-map"},Lo={class:"img"},Mo={class:"data"},bo=ho((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),yo={key:0},Go={class:"data"},Fo=ho((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Wo={key:0,class:"data elevation"},Ko=["alt"],Yo={class:"data-values"},xo=(0,a.Uk)("/ "),Bo={key:1,class:"data altitude"},$o=ho((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Zo={class:"data-values"},Ho=(0,a.Uk)(" +"),qo=(0,a.Uk)("/- ");var Vo=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const t=e,n=(0,c.o)(),{user:r,workout:s,sport:u,useImperialUnits:d}=(0,i.BK)(t),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));return(e,t)=>{const n=(0,a.up)("router-link"),l=(0,a.up)("SportImage"),c=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",wo,[(0,a._)("div",fo,[(0,a._)("div",vo,[(0,a._)("div",Co,[(0,a.Wm)(Me.Z,{user:(0,i.SU)(r)},null,8,["user"]),(0,i.SU)(r).username?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-user-name",to:{name:"User",params:{username:(0,i.SU)(r).username}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,i.SU)(r).username),1)])),_:1},8,["to"])):(0,a.kq)("",!0)]),(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:(0,i.SU)(s).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,i.SU)(s).title),1)])),_:1},8,["to"])):(0,a.kq)("",!0),(0,i.SU)(s).workout_date&&(0,i.SU)(r)?((0,a.wg)(),(0,a.iD)("div",{key:1,class:"workout-date",title:(0,i.SU)(ke.Z)((0,i.SU)(xe.eB)((0,i.SU)(s).workout_date,(0,i.SU)(r).timezone),"dd/MM/yyyy HH:mm")},(0,o.zw)((0,i.SU)(No.Z)(new Date((0,i.SU)(s).workout_date),new Date,{addSuffix:!0,locale:(0,i.SU)(m)})),9,Do)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,i.SU)(s)}]),onClick:t[0]||(t[0]=t=>(0,i.SU)(s).id?e.$router.push({name:"Workout",params:{workoutId:(0,i.SU)(s).id}}):null)},[(0,i.SU)(s)?((0,a.wg)(),(0,a.iD)("div",ko,[(0,i.SU)(s).with_gpx?((0,a.wg)(),(0,a.j4)(zo.Z,{key:0,workout:(0,i.SU)(s)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",Po,(0,o.zw)(e.$t("workouts.NO_MAP")),1))])):(0,a.kq)("",!0)],2),(0,a._)("div",{class:(0,o.C_)(["workout-data",{"without-gpx":(0,i.SU)(s)&&!(0,i.SU)(s).with_gpx}]),onClick:t[1]||(t[1]=t=>(0,i.SU)(s).id?e.$router.push({name:"Workout",params:{workoutId:(0,i.SU)(s).id}}):null)},[(0,a._)("div",Lo,[(0,i.SU)(u).label?((0,a.wg)(),(0,a.j4)(l,{key:0,"sport-label":(0,i.SU)(u).label,color:(0,i.SU)(u).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Mo,[bo,(0,i.SU)(s)?((0,a.wg)(),(0,a.iD)("span",yo,(0,o.zw)((0,i.SU)(s).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Go,[Fo,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,i.SU)(s).distance,digits:3,unitFrom:"km",useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,i.SU)(s)&&(0,i.SU)(s).with_gpx?((0,a.wg)(),(0,a.iD)("div",Wo,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,Ko),(0,a._)("div",Yo,[(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,i.SU)(s).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),xo,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,i.SU)(s).max_alt,unitFrom:"m",useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0),(0,i.SU)(s)&&(0,i.SU)(s).with_gpx?((0,a.wg)(),(0,a.iD)("div",Bo,[$o,(0,a._)("div",Zo,[Ho,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,i.SU)(s).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),qo,(0,i.SU)(s).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,i.SU)(s).descent,unitFrom:"m",useImperialUnits:(0,i.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0)],2)])])}}});const jo=(0,P.Z)(Vo,[["__scopeId","data-v-c9d1f10c"]]);var Xo=jo,Jo=n(5630),Qo=n(3768);const es={id:"timeline"},ts={class:"section-title"},ns={key:0},rs={key:1},as={key:1,class:"more-workouts"};var os=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:s}=(0,i.BK)(t),u=(0,i.iH)(1),d=5,m=t.user.nb_workouts>=d?d:t.user.nb_workouts;(0,a.wF)((()=>E()));const _=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.TIMELINE_WORKOUTS])),S=(0,a.Fl)((()=>_.value.length>0&&null!==_.value[_.value.length-1].previous_workout));function E(){n.dispatch(l.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}function T(){u.value+=1,n.dispatch(l.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",es,[(0,a._)("div",ts,(0,o.zw)(e.$t("workouts.LATEST_WORKOUTS")),1),(0,i.SU)(s).nb_workouts>0&&0===(0,i.SU)(_).length?((0,a.wg)(),(0,a.iD)("div",ns,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)([...Array((0,i.SU)(m)).keys()],(e=>((0,a.wg)(),(0,a.j4)(Xo,{user:(0,i.SU)(s),useImperialUnits:(0,i.SU)(s).imperial_units,key:e},null,8,["user","useImperialUnits"])))),128))])):((0,a.wg)(),(0,a.iD)("div",rs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(_),(e=>((0,a.wg)(),(0,a.j4)(Xo,{workout:e,sport:(0,i.SU)(_).length>0?(0,i.SU)(r).filter((t=>t.id===e.sport_id))[0]:null,user:(0,i.SU)(s),useImperialUnits:(0,i.SU)(s).imperial_units,key:e.id},null,8,["workout","sport","user","useImperialUnits"])))),128)),0===(0,i.SU)(_).length?((0,a.wg)(),(0,a.j4)(Jo.Z,{key:0})):(0,a.kq)("",!0),(0,i.SU)(S)?((0,a.wg)(),(0,a.iD)("div",as,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const ss=(0,P.Z)(os,[["__scopeId","data-v-35567bf2"]]);var is=ss,ls=n(1640),cs=n(4559),us=n(7349),ds=n(1743),ms=n(4703),_s=n(1085);const Ss=["title"];var Es=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const t=e,{displayHARecord:n,workout:r,sportLabel:o,sportColor:s}=(0,i.BK)(t);return(e,t)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:t[0]||(t[0]=t=>e.$router.push({name:"Workout",params:{workoutId:(0,i.SU)(r).id}}))},[(0,a.Wm)(l,{"sport-label":(0,i.SU)(o),title:(0,i.SU)(r).title,color:(0,i.SU)(s)},null,8,["sport-label","title","color"]),(0,a._)("sup",null,[(0,i.SU)(r).records.length>0?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:(0,i.SU)(r).records.filter((e=>!!(0,i.SU)(n)||"HA"!==e.record_type)).map((t=>` ${e.$t(`workouts.RECORD_${t.record_type}`)}`))},null,8,Ss)):(0,a.kq)("",!0)])])}}});const Ts=Es;var ps=Ts;const As={class:"donut-chart"},Os={height:"34",width:"34",viewBox:"0 0 34 34"},Us=["stroke","stroke-dashoffset","transform"];var Rs=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const t=e,{colors:n,datasets:r}=(0,i.BK)(t);let o=-90;const s=16,l=16,c=14,u=2*Math.PI*c;function d(e,t){return t-e*t}function m(e,t){const n=`rotate(${o}, ${s}, ${l})`;return o=360*t+o,n}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",As,[((0,a.wg)(),(0,a.iD)("svg",Os,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,i.SU)(r)),((e,t)=>((0,a.wg)(),(0,a.iD)("g",{key:t},[(0,a._)("circle",{cx:s,cy:l,r:c,fill:"transparent",stroke:(0,i.SU)(n)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(t,e[1].percentage)},null,8,Us)])))),128))]))]))}});const Is=Rs;var gs=Is;const Ns={class:"calendar-workouts-chart"},zs={class:"workouts-count"},hs={key:0,class:"workouts-pane"},ws={class:"more-workouts"};var fs=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const t=e,{colors:n,datasets:r,sports:s,workouts:l}=(0,i.BK)(t),c=(0,i.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,t)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",Ns,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",zs,(0,o.zw)((0,i.SU)(l).length),1),(0,a.Wm)(gs,{datasets:(0,i.SU)(r),colors:(0,i.SU)(n)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",hs,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",ws,[(0,a._)("i",{class:"fa fa-times calendar-more","aria-hidden":"true",onClick:u}),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(l),((e,t)=>((0,a.wg)(),(0,a.j4)(ps,{key:t,workout:e,sportLabel:(0,i.SU)(le.PA)(e,(0,i.SU)(s)),sportColor:(0,i.SU)(le.CM)(e,(0,i.SU)(s))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const vs=(0,P.Z)(fs,[["__scopeId","data-v-52d4310a"]]);var Cs=vs;const Ds={class:"calendar-workouts"},ks={class:"desktop-display"},Ps={key:0,class:"workouts-display"},Ls={key:1,class:"donut-display"},Ms={class:"mobile-display"},bs={key:0,class:"donut-display"};var ys=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const t=e,{displayHARecord:n,workouts:r,sports:o}=(0,i.BK)(t),s=(0,a.Fl)((()=>(0,Qo.BN)(t.workouts))),l=(0,a.Fl)((()=>(0,le.Yx)(t.sports))),c=6;return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ds,[(0,a._)("div",ks,[(0,i.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",Ps,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,i.SU)(r).slice(0,c),((e,t)=>((0,a.wg)(),(0,a.j4)(ps,{key:t,displayHARecord:(0,i.SU)(n),workout:e,sportLabel:(0,i.SU)(le.PA)(e,(0,i.SU)(o)),sportColor:(0,i.SU)(le.CM)(e,(0,i.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ls,[(0,a.Wm)(Cs,{workouts:(0,i.SU)(r),sports:(0,i.SU)(o),datasets:(0,i.SU)(s),colors:(0,i.SU)(l)},null,8,["workouts","sports","datasets","colors"])]))]),(0,a._)("div",Ms,[(0,i.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bs,[(0,a.Wm)(Cs,{workouts:(0,i.SU)(r),sports:(0,i.SU)(o),datasets:(0,i.SU)(s),colors:(0,i.SU)(l)},null,8,["workouts","sports","datasets","colors"])])):(0,a.kq)("",!0)])]))}});const Gs=ys;var Fs=Gs;const Ws={class:"calendar-cells"},Ks={class:"calendar-cell-day"};var Ys=(0,a.aZ)({__name:"CalendarCells",props:{currentDay:null,displayHARecord:{type:Boolean},endDate:null,sports:null,startDate:null,timezone:null,weekStartingMonday:{type:Boolean},workouts:null},setup(e){const t=e,{currentDay:n,displayHARecord:r,endDate:s,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,i.BK)(t),_=(0,i.iH)([]);function S(){_.value=[];let e=c.value;while(e<=s.value){const t=[];for(let n=0;n<7;n++)t.push(e),e=(0,us.Z)(e,1);_.value.push(t)}}function E(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,t){return t?t.filter((t=>(0,ds.Z)((0,xe.eB)(t.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>S())),(0,a.YP)((()=>t.currentDay),(()=>S())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ws,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(_.value,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:t},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,i.SU)(ms.Z)(e,(0,i.SU)(n)),"week-end":E(t),today:(0,i.SU)(_s.Z)(e)}]),key:t},[(0,a.Wm)(Fs,{workouts:T(e,(0,i.SU)(m)),sports:(0,i.SU)(l),displayHARecord:(0,i.SU)(r)},null,8,["workouts","sports","displayHARecord"]),(0,a._)("div",Ks,(0,o.zw)((0,i.SU)(ke.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const xs=Ys;var Bs=xs;const $s={class:"calendar-days"};var Zs=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const t=e,n=[];for(let r=0;r<7;r++)n.push((0,us.Z)(t.startDate,r));return(t,r)=>((0,a.wg)(),(0,a.iD)("div",$s,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(n,((t,n)=>(0,a._)("div",{class:"calendar-day",key:n},(0,o.zw)((0,i.SU)(ke.Z)(t,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Hs=Zs;var qs=Hs;const Vs={class:"calendar-header"},js=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Xs=[js],Js={class:"calendar-month"},Qs=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),ei=[Qs];var ti=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:t}){const n=e,{day:r,localeOptions:s}=(0,i.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Vs,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:n[0]||(n[0]=e=>t("displayPreviousMonth"))},Xs),(0,a._)("div",Js,[(0,a._)("span",null,(0,o.zw)((0,i.SU)(ke.Z)((0,i.SU)(r),"MMM yyyy",{locale:(0,i.SU)(s)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:n[1]||(n[1]=e=>t("displayNextMonth"))},ei)]))}});const ni=ti;var ri=ni;const ai={id:"user-calendar"},oi={class:"calendar-card box"};var si=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:o}=(0,i.BK)(t),s="yyyy-MM-dd",u=(0,i.iH)(new Date),d=(0,i.iH)((0,xe.yx)(u.value,t.user.weekm)),m=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.CALENDAR_WORKOUTS])),_=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));function S(){d.value=(0,xe.yx)(u.value,t.user.weekm);const e={from:(0,ke.Z)(d.value.start,s),to:(0,ke.Z)(d.value.end,s),page:1,per_page:100,...Qo.eR};n.dispatch(l.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function E(){u.value=(0,ls.Z)(u.value,1),S()}function T(){u.value=(0,cs.Z)(u.value,1),S()}return(0,a.wF)((()=>S())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",ai,[(0,a._)("div",oi,[(0,a.Wm)(ri,{day:u.value,"locale-options":(0,i.SU)(_),onDisplayNextMonth:E,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(qs,{"start-date":d.value.start,"locale-options":(0,i.SU)(_)},null,8,["start-date","locale-options"]),(0,a.Wm)(Bs,{currentDay:u.value,displayHARecord:(0,i.SU)(o).display_ascent,"end-date":d.value.end,sports:(0,i.SU)(r),"start-date":d.value.start,timezone:(0,i.SU)(o).timezone,workouts:(0,i.SU)(m),weekStartingMonday:(0,i.SU)(o).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}});const ii=si;var li=ii,ci=n(3703),ui=n(4135),di=n(4998);const mi={class:"user-month-stats"};var _i=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const t=e,{sports:n,user:r}=(0,i.BK)(t),s=new Date,l={duration:"week",start:(0,ci.Z)(s),end:(0,ui.Z)(s)},c=t.sports.map((e=>e.id));return(e,t)=>{const s=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",mi,[(0,a.Wm)(s,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("dashboard.THIS_MONTH")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(di.Z,{sports:(0,i.SU)(n),user:(0,i.SU)(r),"chart-params":l,"displayed-sport-ids":(0,i.SU)(c),"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])),_:1})])}}});const Si=(0,P.Z)(_i,[["__scopeId","data-v-1bcddc12"]]);var Ei=Si,Ti=(n(1703),n(3649));const pi=(e,t,n)=>{const r="km",a=n?Ti.Dl[r].defaultTarget:r,o="m",s=n?Ti.Dl[o].defaultTarget:o;let i;switch(e.record_type){case"AS":case"MS":i=`${(0,Ti.sC)(+e.value,r,a,2)} ${a}/h`;break;case"FD":i=`${(0,Ti.sC)(+e.value,r,a,3)} ${a}`;break;case"HA":i=`${(0,Ti.sC)(+e.value,o,s,2)} ${s}`;break;case"LD":i=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{workout_date:(0,xe.Jo)((0,xe.eB)(e.workout_date,t)).workout_date,workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:i}},Ai=(e,t)=>{const n=e.label.toLowerCase(),r=t.label.toLowerCase();return n>r?1:ne.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const o=t.find((e=>e.id===a.sport_id));return o&&o.label&&(void 0===e[o.translatedLabel]&&(e[o.translatedLabel]={label:o.label,color:o.color,records:[]}),e[o.translatedLabel].records.push(pi(a,n,r))),e}),{}),Ui={class:"records-card"},Ri={class:"record-type"},Ii={class:"record-value"},gi={class:"record-date"};var Ni=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const t=e,{records:n,sportTranslatedLabel:r}=(0,i.BK)(t),{t:s}=(0,ie.QT)();function l(e){const t=[];return e.map((e=>{t.push({...e,label:s(`workouts.RECORD_${e.record_type}`)})})),t.sort(Ai)}return(e,t)=>{const s=(0,a.up)("SportImage"),c=(0,a.up)("router-link"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Ui,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(s,{"sport-label":(0,i.SU)(n).label,color:(0,i.SU)(n).color},null,8,["sport-label","color"]),(0,a.Uk)(" "+(0,o.zw)((0,i.SU)(r)),1)])),content:(0,a.w5)((()=>[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(l((0,i.SU)(n).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",Ri,(0,o.zw)(e.label),1),(0,a._)("span",Ii,(0,o.zw)(e.value),1),(0,a._)("span",gi,[(0,a.Wm)(c,{to:{name:"Workout",params:{workoutId:e.workout_id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.workout_date),1)])),_:2},1032,["to"])])])))),128))])),_:1})])}}});const zi=(0,P.Z)(Ni,[["__scopeId","data-v-b5480ab0"]]);var hi=zi;const wi=e=>((0,a.dD)("data-v-27dfbb65"),e=e(),(0,a.Cn)(),e),fi={class:"user-records-section"},vi={class:"section-title"},Ci=wi((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),Di={class:"user-records"},ki={key:0,class:"no-records"};var Pi=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,{t:n}=(0,ie.QT)(),r=(0,a.Fl)((()=>Oi(t.user.records,(0,le.xH)(t.sports,n),t.user.timezone,t.user.imperial_units,t.user.display_ascent)));return(t,n)=>((0,a.wg)(),(0,a.iD)("div",fi,[(0,a._)("div",vi,[Ci,(0,a.Uk)(" "+(0,o.zw)(t.$t("workouts.RECORD",2)),1)]),(0,a._)("div",Di,[0===Object.keys((0,i.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",ki,(0,o.zw)(t.$t("workouts.NO_RECORDS")),1)):(0,a.kq)("",!0),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.keys((0,i.SU)(r)).sort(),(t=>((0,a.wg)(),(0,a.j4)(hi,{sportTranslatedLabel:t,records:(0,i.SU)(r)[t],key:t,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const Li=(0,P.Z)(Pi,[["__scopeId","data-v-27dfbb65"]]);var Mi=Li;const bi={id:"user-stats"};var yi=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,{t:n}=(0,ie.QT)(),{user:r}=(0,i.BK)(t),o=(0,a.Fl)((()=>t.user.total_duration)),s=(0,a.Fl)((()=>S(o))),l="km",c=r.value.imperial_units?Ti.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,Ti.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?Ti.Dl[d].defaultTarget:d,_=(0,a.Fl)((()=>r.value.imperial_units?(0,Ti.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function S(e){const t=e.value.match(/day/g)?e.value.split(", ")[1]:e.value;return{days:e.value.match(/day/g)?`${e.value.split(" ")[0]} ${e.value.match(/days/g)?n("common.DAY",2):n("common.DAY",1)}`:`0 ${n("common.DAY",2)},`,duration:`${t.split(":")[0]}h ${t.split(":")[1]}min`}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",bi,[(0,a.Wm)(B,{icon:"calendar",value:(0,i.SU)(r).nb_workouts,text:e.$t("workouts.WORKOUT",(0,i.SU)(r).nb_workouts)},null,8,["value","text"]),(0,a.Wm)(B,{icon:"road",value:(0,i.SU)(u),text:"mi"===(0,i.SU)(c)?"miles":(0,i.SU)(c)},null,8,["value","text"]),(0,i.SU)(r).display_ascent?((0,a.wg)(),(0,a.j4)(B,{key:0,icon:"location-arrow",value:(0,i.SU)(_),text:"ft"===(0,i.SU)(m)?"feet":(0,i.SU)(m)},null,8,["value","text"])):(0,a.kq)("",!0),(0,a.Wm)(B,{icon:"clock-o",value:(0,i.SU)(s).days,text:(0,i.SU)(s).duration},null,8,["value","text"]),(0,i.SU)(r).display_ascent?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(B,{key:1,icon:"tags",value:(0,i.SU)(r).nb_sports,text:e.$t("workouts.SPORT",(0,i.SU)(r).nb_sports)},null,8,["value","text"]))]))}});const Gi=yi;var Fi=Gi;const Wi=e=>((0,a.dD)("data-v-4c0893c1"),e=e(),(0,a.Cn)(),e),Ki={key:0,id:"dashboard",class:"view"},Yi={class:"container mobile-menu"},xi={class:"box"},Bi=Wi((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),$i=[Bi],Zi=Wi((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),Hi=[Zi],qi=Wi((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),Vi=[qi],ji=Wi((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Xi=[ji],Ji={class:"container"},Qi={class:"container dashboard-container"},el={class:"left-container dashboard-sub-container"},tl={class:"right-container dashboard-sub-container"},nl=Wi((()=>(0,a._)("div",{id:"bottom"},null,-1))),rl={key:1,class:"app-loading"};var al=(0,a.aZ)({__name:"Dashboard",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>t.getters[l.O8.GETTERS.SPORTS])),s=(0,i.iH)("calendar");function u(e){s.value=e}return(0,a.wF)((()=>t.dispatch(l.YN.ACTIONS.GET_USER_PROFILE))),(e,t)=>{const l=(0,a.up)("Loader");return(0,i.SU)(n).username&&(0,i.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",Ki,[(0,a._)("div",Yi,[(0,a._)("div",xi,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===s.value}]),onClick:t[0]||(t[0]=e=>u("calendar"))},$i,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===s.value}]),onClick:t[1]||(t[1]=e=>u("chart"))},Hi,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===s.value}]),onClick:t[2]||(t[2]=e=>u("timeline"))},Vi,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===s.value}]),onClick:t[3]||(t[3]=e=>u("records"))},Xi,2)])]),(0,a._)("div",Ji,[(0,a.Wm)(Fi,{user:(0,i.SU)(n)},null,8,["user"])]),(0,a._)("div",Qi,[(0,a._)("div",el,[(0,a.Wm)(Ei,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("chart"===s.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Mi,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("records"===s.value)})},null,8,["sports","user","class"])]),(0,a._)("div",tl,[(0,a.Wm)(li,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("calendar"===s.value)})},null,8,["sports","user","class"]),(0,a.Wm)(is,{sports:(0,i.SU)(r),user:(0,i.SU)(n),class:(0,o.C_)({"is-hidden":!("timeline"===s.value)})},null,8,["sports","user","class"])])]),nl])):((0,a.wg)(),(0,a.iD)("div",rl,[(0,a.Wm)(l)]))}}});const ol=(0,P.Z)(al,[["__scopeId","data-v-4c0893c1"]]);var sl=ol,il=n(8273);const ll={class:"not-found view"};var cl=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",ll,[(0,a.Wm)(il.Z)]))}});const ul=cl;var dl=ul,ml=n(2411);const _l={id:"loginOrRegister",class:"view"},Sl={class:"container"},El={class:"container-sub"},Tl={class:"container-sub"};var pl=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const t=e,{action:n}=(0,i.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",_l,[(0,a._)("div",Sl,[(0,a._)("div",El,[(0,a.Wm)(To)]),(0,a._)("div",Tl,[(0,a.Wm)(ml.Z,{action:(0,i.SU)(n)},null,8,["action"])])])]))}});const Al=(0,P.Z)(pl,[["__scopeId","data-v-6a38125b"]]);var Ol=Al;const Ul=e=>{const t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return""===n?"PROFILE":n.toUpperCase()},Rl=[{path:"/",name:"Dashboard",component:sl},{path:"/login",name:"Login",component:Ol,props:{action:"login"}},{path:"/register",name:"Register",component:Ol,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>n.e(845).then(n.bind(n,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>n.e(845).then(n.bind(n,8160))},{path:"/profile",name:"Profile",component:()=>n.e(845).then(n.bind(n,6266)),children:[{path:"",name:"UserProfile",component:zt,props:e=>({tab:Ul(e.path)}),children:[{path:"",name:"UserInfos",component:ht.Z},{path:"preferences",name:"UserPreferences",component:kt},{path:"sports",name:"UserSportPreferences",component:Ha,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:qr,children:[{path:"",name:"UserAppsList",component:pa},{path:":id",name:"UserApp",component:la},{path:":id/created",name:"CreatedUserApp",component:la,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:kr},{path:"authorize",name:"AuthorizeUserApp",component:Br}]}]},{path:"edit",name:"UserProfileEdition",component:bt,props:e=>({tab:Ul(e.path)}),children:[{path:"",name:"UserInfosEdition",component:En},{path:"account",name:"UserAccountEdition",component:jt},{path:"picture",name:"UserPictureEdition",component:wn},{path:"preferences",name:"UserPreferencesEdition",component:ir},{path:"sports",name:"UserSportPreferencesEdition",component:Ha,props:{isEdition:!0}}]}]},{path:"/statistics",name:"Statistics",component:()=>n.e(193).then(n.bind(n,7885))},{path:"/users/:username",name:"User",component:()=>n.e(845).then(n.bind(n,9453))},{path:"/workouts",name:"Workouts",component:()=>n.e(401).then(n.bind(n,7017))},{path:"/workouts/:workoutId",name:"Workout",component:()=>n.e(401).then(n.bind(n,6466)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>n.e(401).then(n.bind(n,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>n.e(401).then(n.bind(n,6466)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>n.e(401).then(n.bind(n,4189))},{path:"/admin",name:"Administration",component:()=>n.e(328).then(n.bind(n,6e3)),children:[{path:"",name:"AdministrationMenu",component:se},{path:"application",name:"ApplicationAdministration",component:M},{path:"application/edit",name:"ApplicationAdministrationEdition",component:M,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:De},{path:"users/:username",name:"UserFromAdmin",component:()=>n.e(845).then(n.bind(n,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:_t}]},{path:"/about",name:"About",component:go},{path:"/:pathMatch(.*)*",name:"not-found",component:dl}],Il=(0,r.p7)({history:(0,r.PO)("/"),routes:Rl}),gl=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],Nl=["/email-update","/about"];Il.beforeEach(((e,t,n)=>{qa.Z.dispatch(l.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(Nl.includes(e.path))return n();if(qa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]&&gl.includes(e.path))return n("/");if(qa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]||gl.includes(e.path))n();else{const t="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(t)}})).catch((e=>{console.error(e),n()}))}));var zl=Il},5801:function(e,t,n){"use strict";var r,a,o,s,i,l,c,u,d,m,_,S,E,T,p,A,O,U;n.d(t,{YN:function(){return z},Km:function(){return h},SY:function(){return I},O8:function(){return g},gu:function(){return N},RT:function(){return w},aX:function(){return f}}),function(e){e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["CONFIRM_ACCOUNT"]="CONFIRM_ACCOUNT",e["CONFIRM_EMAIL"]="CONFIRM_EMAIL",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["RESEND_ACCOUNT_CONFIRMATION_EMAIL"]="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["RESET_USER_SPORT_PREFERENCES"]="RESET_USER_SPORT_PREFERENCES",e["UPDATE_USER_ACCOUNT"]="UPDATE_USER_ACCOUNT",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES",e["UPDATE_USER_SPORT_PREFERENCES"]="UPDATE_USER_SPORT_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["IS_SUCCESS"]="IS_SUCCESS",e["IS_REGISTRATION_SUCCESS"]="IS_REGISTRATION_SUCCESS",e["USER_LOADING"]="USER_LOADING"}(a||(a={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_IS_SUCCESS"]="UPDATE_USER_IS_SUCCESS",e["UPDATE_IS_REGISTRATION_SUCCESS"]="UPDATE_IS_REGISTRATION_SUCCESS",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING"}(o||(o={})),function(e){e["AUTHORIZE_CLIENT"]="AUTHORIZE_CLIENT",e["CREATE_CLIENT"]="CREATE_CLIENT",e["DELETE_CLIENT"]="DELETE_CLIENT",e["GET_CLIENTS"]="GET_CLIENTS",e["GET_CLIENT_BY_CLIENT_ID"]="GET_CLIENT_BY_CLIENT_ID",e["GET_CLIENT_BY_ID"]="GET_CLIENT_BY_ID",e["REVOKE_ALL_TOKENS"]="REVOKE_ALL_TOKENS"}(s||(s={})),function(e){e["CLIENT"]="CLIENT",e["CLIENTS"]="CLIENTS",e["CLIENTS_PAGINATION"]="CLIENTS_PAGINATION",e["REVOCATION_SUCCESSFUL"]="REVOCATION_SUCCESSFUL"}(i||(i={})),function(e){e["EMPTY_CLIENT"]="EMPTY_CLIENT",e["SET_CLIENT"]="SET_CLIENT",e["SET_CLIENTS"]="SET_CLIENTS",e["SET_CLIENTS_PAGINATION"]="SET_CLIENTS_PAGINATION",e["SET_REVOCATION_SUCCESSFUL"]="SET_REVOCATION_SUCCESSFUL"}(l||(l={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LANGUAGE"]="UPDATE_APPLICATION_LANGUAGE"}(c||(c={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(u||(u={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(d||(d={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(m||(m={})),function(e){e["SPORTS"]="SPORTS"}(_||(_={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(S||(S={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(E||(E={})),function(e){e["USER_STATS"]="USER_STATS"}(T||(T={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(p||(p={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER",e["DELETE_USER_ACCOUNT"]="DELETE_USER_ACCOUNT"}(A||(A={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_IS_SUCCESS"]="USERS_IS_SUCCESS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(O||(O={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION",e["UPDATE_IS_SUCCESS"]="UPDATE_IS_SUCCESS"}(U||(U={}));var R=n(52);const I={ACTIONS:c,GETTERS:u,MUTATIONS:d},g={ACTIONS:m,GETTERS:_,MUTATIONS:S},N={ACTIONS:E,GETTERS:T,MUTATIONS:p},z={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:s,GETTERS:i,MUTATIONS:l},w={ACTIONS:A,GETTERS:O,MUTATIONS:U},f={ACTIONS:R.tW,GETTERS:R.JP,MUTATIONS:R.CW}},2894:function(e,t,n){"use strict";n.d(t,{Z:function(){return me}});var r=n(3907),a=(n(7658),n(1703),n(5167)),o=n(9669),s=n.n(o),i=n(8566),l=n(2024);const c=s().create({baseURL:(0,l.k)()});c.interceptors.request.use((e=>{const t=new AbortController;e.signal=t.signal;const n=(0,i.a)(e);return i.j.set(n,t),e}),(e=>Promise.reject(e))),c.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,i.a)(e.response.config),Promise.reject(e))));var u=c,d=n(9160),m=n(5801);const _=(e,t)=>{e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${t.username}`).then((n=>{204===n.status?t.fromAdmin?d.Z.push("/admin/users"):e.dispatch(m.YN.ACTIONS.LOGOUT).then((()=>d.Z.push("/"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},S={[m.RT.ACTIONS.EMPTY_USER](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USER,{})},[m.RT.ACTIONS.EMPTY_USERS](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(m.RT.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[m.RT.ACTIONS.GET_USER](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${t}`).then((t=>{"success"===t.data.status?e.commit(m.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0]):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[m.RT.ACTIONS.GET_USERS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:t}).then((t=>{"success"===t.data.status?(e.commit(m.RT.MUTATIONS.UPDATE_USERS,t.data.data.users),e.commit(m.RT.MUTATIONS.UPDATE_USERS_PAGINATION,t.data.pagination)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[m.RT.ACTIONS.UPDATE_USER](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n={};void 0!==t.admin&&(n.admin=t.admin),t.resetPassword&&(n.reset_password=t.resetPassword),t.activate&&(n.activate=t.activate),void 0!==t.new_email&&(n.new_email=t.new_email),a.Z.patch(`users/${t.username}`,n).then((n=>{"success"===n.data.status?(e.commit(m.RT.MUTATIONS.UPDATE_USER_IN_USERS,n.data.data.users[0]),(t.resetPassword||t.new_email)&&e.commit(m.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(t.activate||t.new_email)&&e.commit(m.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0])):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[m.RT.ACTIONS.DELETE_USER_ACCOUNT](e,t){_(e,{username:t.username,fromAdmin:!0})}},E=e=>{localStorage.removeItem("authToken"),e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.gu.MUTATIONS.EMPTY_USER_STATS),e.commit(m.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(m.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(m.aX.MUTATIONS.EMPTY_WORKOUTS),e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),d.Z.push("/login")},T={[m.YN.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[m.YN.GETTERS.IS_AUTHENTICATED]&&(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE)),!window.localStorage.authToken&&e.getters[m.YN.GETTERS.IS_AUTHENTICATED]&&E(e)},[m.YN.ACTIONS.CONFIRM_ACCOUNT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/account/confirm",{token:t.token}).then((t=>{if("success"===t.data.status){const n=t.data.auth_token;window.localStorage.setItem("authToken",n),e.commit(m.YN.MUTATIONS.UPDATE_AUTH_TOKEN,n),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/")))}else(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t)}))},[m.YN.ACTIONS.CONFIRM_EMAIL](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),u.post("/auth/email/update",{token:t.token}).then((n=>{"success"===n.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),t.refreshUser&&e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/profile/edit/account"))),d.Z.push("/profile/edit/account")):(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t)}))},[m.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),t.data.data.language&&e.dispatch(m.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language),e.dispatch(m.O8.ACTIONS.GET_SPORTS)):((0,l.S)(e,null),E(e))})).catch((t=>{"canceled"!==t.message&&((0,l.S)(e,t),E(e))}))},[m.YN.ACTIONS.LOGIN_OR_REGISTER](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),u.post(`/auth/${t.actionType}`,t.formData).then((n=>{if("success"===n.data.status)if("login"===t.actionType){const r=n.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(m.YN.MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("string"===typeof t.redirectUrl?t.redirectUrl:"/")))}else d.Z.push("/login").then((()=>e.commit(m.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.LOGOUT](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((t=>{"success"===t.data.status?E(e):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.UPDATE_USER_PROFILE](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",t).then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),d.Z.push("/profile")):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.Z.patch("auth/profile/edit/account",t).then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.commit(m.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",t).then((t=>{"success"===t.data.status?(e.commit(m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.dispatch(m.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language).then((()=>d.Z.push("/profile/preferences")))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${t}`).then((t=>{204===t.status?e.dispatch(m.O8.ACTIONS.GET_SPORTS):(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[m.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",t).then((t=>{"success"===t.data.status?e.dispatch(m.O8.ACTIONS.GET_SPORTS):(0,l.S)(e,null)})).catch((t=>{(0,l.S)(e,t),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[m.YN.ACTIONS.UPDATE_USER_PICTURE](e,t){if(e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");const n=new FormData;n.append("file",t.picture),a.Z.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then((t=>{"success"===t.data.status?e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/profile"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.DELETE_ACCOUNT](e,t){_(e,t)},[m.YN.ACTIONS.DELETE_PICTURE](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"]("auth/picture").then((t=>{204===t.status?e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE).then((()=>d.Z.push("/profile"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[m.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/password/reset-request",t).then((t=>{"success"===t.data.status?d.Z.push("/password-reset/sent"):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/account/resend-confirmation",t).then((t=>{"success"===t.data.status?d.Z.push("/account-confirmation/email-sent"):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.YN.ACTIONS.RESET_USER_PASSWORD](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),u.post("auth/password/update",t).then((t=>{"success"===t.data.status?d.Z.push("/password-reset/password-updated"):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},p={[m.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[m.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[m.YN.GETTERS.IS_AUTHENTICATED]:e=>null!==e.authToken,[m.YN.GETTERS.IS_ADMIN]:e=>e.authUserProfile&&e.authUserProfile.admin,[m.YN.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[m.YN.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[m.YN.GETTERS.USER_LOADING]:e=>e.loading},A={[m.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[m.YN.MUTATIONS.UPDATE_AUTH_TOKEN](e,t){e.authToken=t},[m.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,t){e.authUserProfile=t},[m.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,t){e.isRegistrationSuccess=t},[m.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[m.YN.MUTATIONS.UPDATE_USER_LOADING](e,t){e.loading=t}},O={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1},U={state:O,actions:T,getters:p,mutations:A};var R=U;const I=(e,t)=>{e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(t).then((t=>{"success"===t.data.status?e.commit(m.Km.MUTATIONS.SET_CLIENT,t.data.data.client):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},g={[m.Km.ACTIONS.AUTHORIZE_CLIENT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const n=new FormData;n.set("client_id",t.client_id),n.set("response_type",t.response_type),n.set("scope",t.scope),n.set("confirm","true"),t.state&&n.set("state",t.state),t.code_challenge&&n.set("code_challenge",t.code_challenge),t.code_challenge_method&&n.set("code_challenge_method",t.code_challenge_method),a.Z.post("oauth/authorize",n,{headers:{"Content-Type":"multipart/form-data"}}).then((t=>{200==t.status&&t.data.redirect_url?window.location.href=t.data.redirect_url:(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.CREATE_CLIENT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",t).then((t=>{"created"===t.data.status?(e.commit(m.Km.MUTATIONS.SET_CLIENT,t.data.data.client),d.Z.push(`/profile/apps/${t.data.data.client.id}/created`)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.DELETE_CLIENT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${t}`).then((t=>{204===t.status?e.dispatch(m.Km.ACTIONS.GET_CLIENTS).then((()=>d.Z.push("/profile/apps"))):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,t){I(e,`oauth/apps/${t}`)},[m.Km.ACTIONS.GET_CLIENT_BY_ID](e,t){I(e,`oauth/apps/${t}/by_id`)},[m.Km.ACTIONS.GET_CLIENTS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:t}).then((t=>{"success"===t.data.status?(e.commit(m.Km.MUTATIONS.SET_CLIENTS,t.data.data.clients),e.commit(m.Km.MUTATIONS.SET_CLIENTS_PAGINATION,t.data.pagination)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.Km.ACTIONS.REVOKE_ALL_TOKENS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${t}/revoke`).then((t=>{"success"===t.data.status?e.commit(m.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},N={[m.Km.GETTERS.CLIENT]:e=>e.client,[m.Km.GETTERS.CLIENTS]:e=>e.clients,[m.Km.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[m.Km.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},z={[m.Km.MUTATIONS.SET_CLIENT](e,t){e.client=t},[m.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[m.Km.MUTATIONS.SET_CLIENTS](e,t){e.clients=t},[m.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,t){e.pagination=t},[m.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,t){e.revocationSuccessful=t}},h={client:{},clients:[],pagination:{},revocationSuccessful:!1},w={state:h,actions:g,getters:N,mutations:z};var f=w,v=n(2540);const{locale:C}=v.Z.global,D={[m.SY.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),a.Z.get("config").then((t=>{"success"===t.data.status?e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t))).finally((()=>e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!1)))},[m.SY.ACTIONS.GET_APPLICATION_STATS](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("stats/all").then((t=>{"success"===t.data.status?e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",t).then((t=>{"success"===t.data.status?(e.commit(m.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data),d.Z.push("/admin/application")):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,t){document.querySelector("html")?.setAttribute("lang",t),e.commit(m.SY.MUTATIONS.UPDATE_LANG,t),C.value=t}},k={[m.SY.GETTERS.APP_CONFIG]:e=>e.application.config,[m.SY.GETTERS.APP_LOADING]:e=>e.appLoading,[m.SY.GETTERS.APP_STATS]:e=>e.application.statistics,[m.SY.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[m.SY.GETTERS.LANGUAGE]:e=>e.language,[m.SY.GETTERS.LOCALE]:e=>e.locale};var P=n(6287);const L={[m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[m.SY.MUTATIONS.SET_ERROR_MESSAGES](e,t){e.errorMessages=t},[m.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,t){e.application.config=t},[m.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,t){e.appLoading=t},[m.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,t){e.application.statistics=t},[m.SY.MUTATIONS.UPDATE_LANG](e,t){e.language=t,e.locale=P.v1[t]}};var M=n(5826);const b={root:!0,language:"en",locale:M.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},y={[m.O8.ACTIONS.GET_SPORTS](e){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((t=>{"success"===t.data.status?(e.commit(m.O8.MUTATIONS.SET_SPORTS,t.data.data.sports),e.commit(m.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},[m.O8.ACTIONS.UPDATE_SPORTS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${t.id}`,{is_active:t.isActive}).then((t=>{"success"===t.data.status?e.dispatch(m.O8.ACTIONS.GET_SPORTS):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},G={[m.O8.GETTERS.SPORTS]:e=>e.sports},F={[m.O8.MUTATIONS.SET_SPORTS](e,t){e.sports=t}},W={sports:[]},K={state:W,actions:y,getters:G,mutations:F};var Y=K;const x={[m.gu.ACTIONS.GET_USER_STATS](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${t.username}/${t.filterType}`,{params:t.params}).then((t=>{"success"===t.data.status?e.commit(m.gu.MUTATIONS.UPDATE_USER_STATS,t.data.data.statistics):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))}},B={[m.gu.GETTERS.USER_STATS]:e=>e.statistics},$={[m.gu.MUTATIONS.UPDATE_USER_STATS](e,t){e.statistics=t},[m.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},Z={statistics:{}},H={state:Z,actions:x,getters:B,mutations:$};var q=H;const V={[m.RT.GETTERS.USER]:e=>e.user,[m.RT.GETTERS.USERS]:e=>e.users,[m.RT.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[m.RT.GETTERS.USERS_LOADING]:e=>e.loading,[m.RT.GETTERS.USERS_PAGINATION]:e=>e.pagination},j={[m.RT.MUTATIONS.UPDATE_USER](e,t){e.user=t},[m.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,t){e.users=e.users.map((e=>e.username===t.username?t:e))},[m.RT.MUTATIONS.UPDATE_USERS](e,t){e.users=t},[m.RT.MUTATIONS.UPDATE_USERS_LOADING](e,t){e.loading=t},[m.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,t){e.pagination=t},[m.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t}},X={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},J={state:X,actions:S,getters:V,mutations:j};var Q=J,ee=n(52);const te=(e,t,n)=>{e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:t}).then((t=>{"success"===t.data.status?(e.commit(m.aX.MUTATIONS[n],t.data.data.workouts),n===ee.CW.SET_USER_WORKOUTS&&e.commit(m.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,t.data.pagination)):(0,l.S)(e,null)})).catch((t=>(0,l.S)(e,t)))},ne={[m.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,t){e.commit(m.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),te(e,t,ee.CW.SET_CALENDAR_WORKOUTS)},[m.aX.ACTIONS.GET_USER_WORKOUTS](e,t){te(e,t,ee.CW.SET_USER_WORKOUTS)},[m.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,t){te(e,t,ee.CW.SET_TIMELINE_WORKOUTS)},[m.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,t){te(e,t,ee.CW.ADD_TIMELINE_WORKOUTS)},[m.aX.ACTIONS.GET_WORKOUT_DATA](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const n=t.segmentId?`/segment/${t.segmentId}`:"";a.Z.get(`workouts/${t.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(t.segmentId&&(0===o.segments.length||!o.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(m.aX.MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(a.Z.get(`workouts/${t.workoutId}/chart_data${n}`).then((t=>{"success"===t.data.status&&e.commit(m.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,t.data.data.chart_data)})),a.Z.get(`workouts/${t.workoutId}/gpx${n}`).then((t=>{"success"===t.data.status&&e.commit(m.aX.MUTATIONS.SET_WORKOUT_GPX,t.data.data.gpx)})))}else e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),(0,l.S)(e,null)})).catch((t=>{e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.DELETE_WORKOUT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${t.workoutId}`).then((()=>{e.commit(m.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE),d.Z.push("/")})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.EDIT_WORKOUT](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${t.workoutId}`,t.data).then((()=>{e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(m.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then((()=>{d.Z.push({name:"Workout",params:{workoutId:t.workoutId}})}))})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.ADD_WORKOUT](e,t){if(e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");const n=new FormData;n.append("file",t.file),n.append("data",`{"sport_id": ${t.sport_id}, "notes": "${t.notes}"}`),a.Z.post("workouts",n,{headers:{"content-type":"multipart/form-data"}}).then((t=>{if("created"===t.data.status){e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];d.Z.push(1===t.data.data.workouts.length?`/workouts/${n.id}`:"/")}})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[m.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,t){e.commit(m.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",t).then((t=>{if("created"===t.data.status){e.dispatch(m.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];d.Z.push(`/workouts/${n.id}`)}})).catch((t=>{(0,l.S)(e,t)})).finally((()=>e.commit(m.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},re={[m.aX.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[m.aX.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[m.aX.GETTERS.USER_WORKOUTS]:e=>e.user_workouts,[m.aX.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[m.aX.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},ae={[m.aX.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=e.timeline_workouts.concat(t)},[m.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,t){e.calendar_workouts=t},[m.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=t},[m.aX.MUTATIONS.SET_USER_WORKOUTS](e,t){e.user_workouts=t},[m.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,t){e.pagination=t},[m.aX.MUTATIONS.SET_WORKOUT](e,t){e.workoutData.workout=t},[m.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,t){e.workoutData.chartData=t},[m.aX.MUTATIONS.SET_WORKOUT_GPX](e,t){e.workoutData.gpx=t},[m.aX.MUTATIONS.SET_WORKOUT_LOADING](e,t){e.workoutData.loading=t},[m.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[m.aX.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[m.aX.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}}},oe={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},se={state:oe,actions:ne,getters:re,mutations:ae};var ie=se;const le={authUserModule:R,oAuthModule:f,sportsModule:Y,statsModule:q,usersModule:Q,workoutsModule:ie},ce={state:b,actions:D,getters:k,mutations:L,modules:le};var ue=ce;const de=(0,r.MT)(ue);var me=de},52:function(e,t,n){"use strict";var r,a,o;n.d(t,{CW:function(){return o},JP:function(){return a},tW:function(){return r}}),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(a||(a={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(o||(o={}))},9917:function(e,t,n){"use strict";n.d(t,{o:function(){return a}});var r=n(3907);function a(){return(0,r.oR)()}},2766:function(e,t,n){"use strict";n.d(t,{Hf:function(){return a},Ne:function(){return c},fS:function(){return r},lM:function(){return d},pm:function(){return l},z_:function(){return s}});const r=["asc","desc"],a=1,o=10,s=(e,t)=>e&&"string"===typeof e&&+e>0?+e:t,i=(e,t,n)=>e&&"string"===typeof e&&t.includes(e)?e:n,l=(e,t,n,l)=>{const c=l||{},u=c.defaultSort||"asc",d={};return d.page=s(e.page,a),d.per_page=s(e.per_page,o),d.order=i(e.order,r,u),d.order_by=i(e.order_by,t,n),"string"===typeof e.q?d.q=e.q:delete d.q,d},c=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=(e,t=1)=>Array.from({length:e-t+1},((e,n)=>t+n)),d=(e,t)=>{if(e<0)return[];if(e<9)return u(e);let n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(u(t+2,3)):(n=n.concat(["..."]),t=e-2&&n[n.length-1]{switch(e){case"week":return(0,r.Z)(t,{weekStartsOn:n?1:0});case"year":return(0,a.Z)(t);case"month":return(0,o.Z)(t);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},S=(e,t)=>{switch(e){case"week":return(0,s.Z)(t,7);case"year":return(0,i.Z)(t,1);case"month":return(0,l.Z)(t,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},E=(e,t)=>(0,m.utcToZonedTime)(new Date(e),t),T=(e,t)=>{const n=(0,o.Z)(e),a=(0,c.Z)(e),s=t?1:0;return{start:(0,r.Z)(n,{weekStartsOn:s}),end:(0,u.Z)(a,{weekStartsOn:s})}},p=(e,t=null,n=null)=>(t||(t="yyyy/MM/dd"),n||(n="HH:mm"),{workout_date:(0,d.Z)(e,t),workout_time:(0,d.Z)(e,n)})},8966:function(e,t,n){"use strict";n.d(t,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,t=!0)=>{const n=Math.floor(Math.log(e)/Math.log(1024));if(!e)return t?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,n)).toFixed(1),o=r[n];return t?`${a}${o}`:{size:a,suffix:o}},o=e=>{const t=e/1048576;return+t.toFixed(2)}},2024:function(e,t,n){"use strict";n.d(t,{S:function(){return o},k:function(){return a}});var r=n(5801);const a=()=>"/api/",o=(e,t,n="UNKNOWN")=>{if(t&&"canceled"===t.message)return;if(401===t?.response?.status&&"invalid_token"===t.response.data.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const a=t?t.response?413===t.response.status?"file size is greater than the allowed size":t.response.data.message?t.response.data.message:n:t.message?t.message:n:n;e.commit(r.SY.MUTATIONS.SET_ERROR_MESSAGES,a.includes("\n")?a.split("\n").filter((e=>""!==e)).map((e=>`api.ERROR.${e}`)):`api.ERROR.${a}`)}},6287:function(e,t,n){"use strict";n.d(t,{mT:function(){return u},v1:function(){return i},zK:function(){return l}});var r=n(879),a=n(5826),o=n(5830),s=n(2540);const i={de:r.Z,en:a.Z,fr:o.Z},l={de:"Deutsch",en:"English",fr:"Français"},{availableLocales:c}=s.Z.global,u=c.map((e=>({label:l[e],value:e})))},631:function(e,t,n){"use strict";n.d(t,{CM:function(){return l},PA:function(){return i},Yx:function(){return a},Zo:function(){return r},xH:function(){return s}});const r={"Cycling (Sport)":"#4c9792","Cycling (Transport)":"#88af98",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const t={};return e.map((e=>t[e.id]=e.color?e.color:r[e.label])),t},o=(e,t)=>{const n=e.translatedLabel.toLowerCase(),r=t.translatedLabel.toLowerCase();return n>r?1:ne.filter((e=>"all"===n||(r.includes(e.id)||e[n]))).map((e=>({...e,translatedLabel:t(`sports.${e.label}.LABEL`)}))).sort(o),i=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.label))[0],l=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,t,n){"use strict";n.d(t,{FN:function(){return w},aZ:function(){return h},v1:function(){return z}});n(7658);var r=n(4850),a=n(8148),o=n(9319),s=n(584),i=n(4559),l=n(3703),c=n(876),u=n(7090),d=n(4135),m=n(1593),_=n(7982),S=n(3500),E=n(1640),T=n(6558),p=n(631),A=n(3649);const O={week:{api:"yyyy-MM-dd",chart:"dd/MM/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},U=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],R=(e,t)=>{const n=[];for(let r=(0,T.Nh)(e.duration,e.start,t);r<=e.end;r=(0,T.xA)(e.duration,r))n.push(r);return n},I=(e,t,n=!1)=>{const r={label:e,backgroundColor:[t],data:[]};return n&&(r.type="line",r.borderColor=[t],r.spanGaps=!0),r},g=e=>{const t={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const n=e.color?e.color:p.Zo[e.label];t.average_speed.push(I(e.label,n,!0)),t.nb_workouts.push(I(e.label,n)),t.total_distance.push(I(e.label,n)),t.total_duration.push(I(e.label,n)),t.total_ascent.push(I(e.label,n)),t.total_descent.push(I(e.label,n))})),t},N=(e,t,n)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,A.f3)(["average_speed","total_distance"].includes(e)?"km":"m",t,n);default:case"nb_workouts":case"total_duration":return t}},z=(e,t,n,a,o,s)=>{const i=R(e,t),l=O[e.duration],c=n.filter((e=>a.includes(e.id))),u=[],d=g(c),m={};return c.map((e=>m[e.label]=e.id)),i.map((e=>{const t=(0,r.Z)(e,l.api),n=(0,r.Z)(e,l.chart);u.push(n),U.map((e=>{d[e].map((n=>{n.data.push(t in o&&m[n.label]in o[t]?N(e,o[t][m[n.label]][e],s):"average_speed"===e?null:0)}))}))})),{labels:u,datasets:d}},h=(e,t,n)=>{const r=n?1:0,m="year"===t?(0,a.Z)((0,o.Z)(e,9)):"week"===t?(0,s.Z)((0,i.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,i.Z)(e,11)),_="year"===t?(0,c.Z)(e):"week"===t?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:t,end:_,start:m}},w=(e,t,n)=>{const{duration:r,start:T,end:p}=e,A=n?1:0;return{duration:r,end:"year"===r?(0,c.Z)(t?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(t?(0,_.Z)(p,1):(0,S.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(t?(0,i.Z)(p,1):(0,E.Z)(p,1)),start:"year"===r?(0,a.Z)(t?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,s.Z)(t?(0,_.Z)(T,1):(0,S.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(t?(0,i.Z)(T,1):(0,E.Z)(T,1))}}},3649:function(e,t,n){"use strict";n.d(t,{Dl:function(){return r},f3:function(){return s},sC:function(){return o}});const r={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},a={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},o=(e,t,n,o=3)=>{const s=r[t],i=r[n],l=e*s.multiplier*a[s.system][i.system]/i.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},s=(e,t,n)=>{const a=n?r[e].defaultTarget:e;return n?o(t,e,a,2):t}},3768:function(e,t,n){"use strict";n.d(t,{BN:function(){return o},EX:function(){return a},eR:function(){return s}});n(7658);var r=n(3649);const a=(e,t,n)=>{const a={speed:{label:t("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:t("workouts.ELEVATION"),backgroundColor:["#e5e5e5"],borderColor:["#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],s=[],i=[];return e.map((e=>{o.push(e.distance),s.push(e.duration),a.speed.data.push((0,r.f3)("km",e.speed,n)),a.elevation.data.push((0,r.f3)("m",e.elevation,n)),i.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:s,datasets:a,coordinates:i}},o=e=>{const t=e.length;if(0===t)return{};const n={};return e.map((e=>{n[e.sport_id]||(n[e.sport_id]={count:0,percentage:0}),n[e.sport_id].count+=1,n[e.sport_id].percentage=n[e.sport_id].count/t})),n},s={order:"desc",order_by:"workout_date"}},2531:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={class:"card"},o={class:"card-title"},s={class:"card-content"};function i(e,t){return(0,r.wg)(),(0,r.iD)("div",a,[(0,r._)("div",o,[(0,r.WI)(e.$slots,"title")]),(0,r._)("div",s,[(0,r.WI)(e.$slots,"content")])])}var l=n(3744);const c={},u=(0,l.Z)(c,[["render",i]]);var d=u},8626:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262);const s={class:"table-selects"},i=["value"],l=["value"],c=["value"],u=["value"],d=["value"],m=["value"];var _=(0,r.aZ)({__name:"FilterSelects",props:{order_by:null,query:null,sort:null,message:null},emits:["updateSelect"],setup(e,{emit:t}){const n=e,{order_by:_,query:S,sort:E,message:T}=(0,o.BK)(n),p=[10,25,50,100];function A(e){t("updateSelect",e.target.id,e.target.value)}return(e,t)=>((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),(0,r._)("select",{name:"order_by",id:"order_by",value:(0,o.SU)(S).order_by,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(_),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${t.toUpperCase()}`)),9,l)))),128))],40,i)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),(0,r._)("select",{name:"order",id:"order",value:(0,o.SU)(S).order,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(E),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${t.toUpperCase()}`)),9,u)))),128))],40,c)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),(0,r._)("select",{name:"per_page",id:"per_page",value:(0,o.SU)(S).per_page,onChange:A},[((0,r.wg)(),(0,r.iD)(r.HY,null,(0,r.Ko)(p,(e=>(0,r._)("option",{value:e,key:e},(0,a.zw)(e),9,m))),64))],40,d)])]))}}),S=n(3744);const E=(0,S.Z)(_,[["__scopeId","data-v-72463173"]]);var T=E},7167:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -51 512 512"},o=(0,r.uE)('',1),s=[o];function i(e,t,n,o,i,l){return(0,r.wg)(),(0,r.iD)("svg",a,s)}var l={name:"ErrorImg"},c=n(3744);const u=(0,c.Z)(l,[["render",i]]);var d=u},8273:function(e,t,n){"use strict";n.d(t,{Z:function(){return S}});var r=n(6252),a=n(2262),o=(n(7658),n(3577));const s={id:"error"},i={class:"error-content"};var l=(0,r.aZ)({__name:"Error",props:{title:null,message:null,buttonText:null,path:{default:"/"}},setup(e){const t=e,{buttonText:n,title:l,message:c,path:u}=(0,a.BK)(t);return(e,t)=>((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("div",i,[(0,r._)("h1",null,(0,o.zw)((0,a.SU)(l)),1),(0,r._)("p",null,(0,o.zw)((0,a.SU)(c)),1),(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:t[0]||(t[0]=t=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(n)),1)):(0,r.kq)("",!0)])]))}}),c=n(3744);const u=(0,c.Z)(l,[["__scopeId","data-v-b60bfa80"]]);var d=u,m=(0,r.aZ)({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const t=e,{target:n}=(0,a.BK)(t),o=(0,a.iH)(),s=(0,a.iH)(!1);function i(){o.value=setTimeout((()=>{s.value=!0}),500)}return(0,r.bv)((()=>i())),(0,r.Ah)((()=>{o.value&&clearTimeout(o.value)})),(e,t)=>s.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(n)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const _=m;var S=_},5020:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262),s=n(2766);const i=e=>((0,r.dD)("data-v-3a9a4a65"),e=e(),(0,r.Cn)(),e),l={class:"pagination-center","aria-label":"navigation"},c={class:"pagination"},u=i((()=>(0,r._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),d={key:0},m=i((()=>(0,r._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)));var _=(0,r.aZ)({__name:"Pagination",props:{pagination:null,path:null,query:null},setup(e){const t=e,{pagination:n,path:i,query:_}=(0,o.BK)(t);function S(e,t){const n=Object.assign({},_.value);return n.page=t?e+t:e,n}return(e,t)=>{const _=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("nav",l,[(0,r._)("ul",c,[(0,r._)("li",{class:(0,a.C_)(["page-prev",{disabled:!(0,o.SU)(n).has_prev}])},[(0,r.Wm)(_,{class:"page-link",to:{path:(0,o.SU)(i),query:S((0,o.SU)(n).page,-1)},disabled:!(0,o.SU)(n).has_prev},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.PREVIOUS"))+" ",1),u]))])),_:3},8,["to","disabled"])],2),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(s.lM)((0,o.SU)(n).pages,(0,o.SU)(n).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(n).page}])},["..."===e?((0,r.wg)(),(0,r.iD)("span",d," ... ")):((0,r.wg)(),(0,r.j4)(_,{key:1,class:"page-link",to:{path:(0,o.SU)(i),query:S(+e)}},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e),1)])),_:2},1032,["to"]))],2)))),128)),(0,r._)("li",{class:(0,a.C_)(["page-next",{disabled:!(0,o.SU)(n).has_next}])},[(0,r.Wm)(_,{class:"page-link",to:{path:(0,o.SU)(i),query:S((0,o.SU)(n).page,1)},disabled:!(0,o.SU)(n).has_next},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),S=n(3744);const E=(0,S.Z)(_,[["__scopeId","data-v-3a9a4a65"]]);var T=E},8403:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(6252),a=n(2262),o=n(9963),s=n(3577),i=n(4366),l=n(5801),c=n(9917);const u=async e=>{const t=await n.e(881).then(n.bind(n,410)),r=await n.e(881).then(n.bind(n,8288)),a=await n.e(881).then(n.bind(n,6947)),o=await n.e(881).then(n.bind(n,8056)),s={de:o,en:r,fr:a},l=s[e],c={graphs:t.default.adjacencyGraphs,dictionary:{...t.default.dictionary,...l.default.dictionary}};i.Mu.setOptions(c)},d=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},m={class:"password-strength"},_=["value"],S={key:0,class:"password-strength-details"},E={class:"password-strength-value"},T={key:0,class:"info-box"},p={class:"password-feedback"};var A=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const t=e,{password:n}=(0,a.BK)(t),o=(0,c.o)(),A=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),U=(0,a.iH)(0),R=(0,a.iH)(""),I=(0,a.iH)([]),g=(0,a.iH)("0% 100%");function N(e){const t=(0,i.tu)(e);U.value=t.score,R.value=d(U.value),I.value=t.feedback.suggestions,g.value=100*U.value/4+"% 100%"}return(0,r.wF)((async()=>await u(A.value))),(0,r.YP)((()=>A.value),(async e=>{await u(e)})),(0,r.YP)((()=>n.value),(async e=>{O.value?R.value="":N(e)})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",m,[(0,r._)("input",{class:(0,s.C_)(["password-slider",`strength-${U.value}`]),style:(0,s.j5)({backgroundSize:g.value}),type:"range",value:U.value,min:"0",max:"4",step:"1"},null,14,_),R.value?((0,r.wg)(),(0,r.iD)("div",S,[(0,r._)("span",E,(0,s.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,s.zw)(e.$t(`user.PASSWORD_STRENGTH.${R.value}`)),1),I.value.length>0?((0,r.wg)(),(0,r.iD)("div",T,[(0,r._)("ul",p,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(I.value,(t=>((0,r.wg)(),(0,r.iD)("li",{key:t},(0,s.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${t}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),O=n(3744);const U=(0,O.Z)(A,[["__scopeId","data-v-74e71df5"]]);var R=U;const I=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),g={class:"password-input"},N=["id","disabled","placeholder","required","type"],z={key:0,class:"form-info"},h=I((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var w=(0,r.aZ)({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:null,required:{type:Boolean,default:!1}},emits:["updatePassword","passwordError"],setup(e,{emit:t}){const n=e,{checkStrength:i,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(n),_=(0,a.iH)(!1),S=(0,a.iH)("");function E(){_.value=!_.value}function T(e){t("updatePassword",e.target.value)}function p(){t("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(S.value="")})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",g,[(0,r.wy)((0,r._)("input",{id:(0,a.SU)(c),disabled:(0,a.SU)(l),placeholder:(0,a.SU)(d),required:(0,a.SU)(m),type:_.value?"text":"password","onUpdate:modelValue":t[0]||(t[0]=e=>S.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,N),[[o.YZ,S.value]]),(0,r._)("div",{class:"show-password",onClick:E},[(0,r.Uk)((0,s.zw)(e.$t(`user.${_.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),(0,r._)("i",{class:(0,s.C_)(["fa","fa-eye"+(_.value?"-slash":"")]),"aria-hidden":"true"},null,2)]),(0,a.SU)(i)?((0,r.wg)(),(0,r.iD)("div",z,[h,(0,r.Uk)(" "+(0,s.zw)(e.$t("user.PASSWORD_INFO")),1)])):(0,r.kq)("",!0),(0,a.SU)(i)?((0,r.wg)(),(0,r.j4)(R,{key:1,password:S.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const f=(0,O.Z)(w,[["__scopeId","data-v-5a126514"]]);var v=f},2056:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577),o=n(2262),s=n(2024);const i=(0,r._)("div",{class:"map-attribution"},[(0,r._)("span",{class:"map-attribution-text"},"©"),(0,r._)("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," OpenStreetMap ")],-1);var l=(0,r.aZ)({__name:"StaticMap",props:{workout:null,displayHover:{type:Boolean,default:!1}},setup(e){const t=e,{displayHover:n}=(0,o.BK)(t),l=`${(0,s.k)()}workouts/map/${t.workout.map}`;return(e,t)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(n)}])},[(0,o.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,src:l,alt:""})):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"bg-map-image",style:(0,a.j5)({backgroundImage:`url(${l})`})},null,4)),i],2))}});const c=l;var u=c},4998:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(6252),a=n(3577);const o={class:"start-chart"},s={key:0},i={key:1},l={class:"chart-radio"},c=["checked"],u=["checked"],d=["checked"],m={key:0},_=["checked"],S={key:1},E=["checked"],T={key:2},p=["checked"];function A(e,t,n,A,O,U){const R=(0,r.up)("Chart");return(0,r.wg)(),(0,r.iD)("div",o,[e.hideChartIfNoData&&e.emptyStats?((0,r.wg)(),(0,r.iD)("div",s,(0,a.zw)(e.$t("workouts.NO_WORKOUTS")),1)):((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("div",l,[(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_distance",checked:"total_distance"===e.displayedData,onClick:t[0]||(t[0]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,c),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DISTANCE")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_duration",checked:"total_duration"===e.displayedData,onClick:t[1]||(t[1]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,u),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DURATION")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"nb_workouts",checked:"nb_workouts"===e.displayedData,onClick:t[2]||(t[2]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,d),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.WORKOUT",2)),1)]),e.fullStats?((0,r.wg)(),(0,r.iD)("label",m,[(0,r._)("input",{type:"radio",name:"average_speed",checked:"average_speed"===e.displayedData,onClick:t[3]||(t[3]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,_),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.AVERAGE_SPEED")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",S,[(0,r._)("input",{type:"radio",name:"total_ascent",checked:"total_ascent"===e.displayedData,onClick:t[4]||(t[4]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,E),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.ASCENT")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",T,[(0,r._)("input",{type:"radio",name:"total_descent",checked:"total_descent"===e.displayedData,onClick:t[5]||(t[5]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,p),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DESCENT")),1)])):(0,r.kq)("",!0)]),e.labels.length>0?((0,r.wg)(),(0,r.j4)(R,{key:0,datasets:e.datasets,labels:e.labels,displayedData:e.displayedData,displayedSportIds:e.displayedSportIds,fullStats:e.fullStats,useImperialUnits:e.user.imperial_units},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits"])):(0,r.kq)("",!0)]))])}var O=n(4850),U=n(2262);const R={class:"chart"};function I(e,t,n,a,o,s){const i=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",R,[(0,r.Wm)(i,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var g=n(6518),N=n(9150);const z=(e,t=!1)=>{let n="0";t&&(n=String(Math.floor(e/86400)),e%=86400);const r=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const a=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return t?`${"0"===n?"":`${n}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=n(3649);const w=(e,t,n,r=!0,a="km")=>{const o=n?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${t.toFixed(2)} ${o}/h`;case"total_duration":return z(t,r);case"total_distance":case"total_ascent":case"total_descent":return`${t.toFixed(2)} ${o}`;default:return t.toString()}};var f=(0,r.aZ)({name:"Chart",components:{BarChart:g.vz},props:{datasets:{type:Object,required:!0},labels:{type:Object,required:!0},displayedData:{type:String,required:!0},displayedSportIds:{type:Array,required:!0},fullStats:{type:Boolean,required:!0},useImperialUnits:{type:Boolean,required:!0}},setup(e){const{t:t}=(0,N.QT)();function n(e){return isNaN(e)?0:+e}function a(e,t){return n(e)+n(t)}function o(e){return["total_ascent","total_descent"].includes(e)?"m":"km"}const s=(0,r.Fl)((()=>({labels:e.labels,datasets:JSON.parse(JSON.stringify(e.datasets))}))),i=(0,r.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:e.fullStats?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1}},y:{stacked:"average_speed"!==e.displayedData,grid:{drawOnChartArea:!1},ticks:{maxTicksLimit:6,callback:function(t){return w(e.displayedData,+t,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(t){t.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(t){return"average_speed"===e.displayedData&&t.dataset.backgroundColor?t.dataset.backgroundColor[0]:"#666666"},rotation:function(t){return e.fullStats&&t.chart.chartArea.width<580?310:0},display:function(t){return!(e.fullStats&&t.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(t,n){if("average_speed"===e.displayedData)return w(e.displayedData,t,e.useImperialUnits,!1);{const t=n.chart.data.datasets.map((e=>e.data[n.dataIndex])).reduce(((e,t)=>a(e,t)),0);return n.datasetIndex===e.displayedSportIds.length-1&&t>0?w(e.displayedData,t,e.useImperialUnits,!1,o(e.displayedData)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:"average_speed"===e.displayedData?"nearest":"average"},filter:function(e){return"0"!==e.formattedValue},callbacks:{label:function(n){let r=t(`sports.${n.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==n.parsed.y&&(r+=w(e.displayedData,n.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(n){if("average_speed"===e.displayedData)return"";let r=0;return n.map((e=>{r+=e.parsed.y})),`${t("common.TOTAL")}: `+w(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,g.xZ)({chartData:s,options:i});return{barChartProps:l}}}),v=n(3744);const C=(0,v.Z)(f,[["render",I]]);var D=C,k=n(5801),P=n(9917),L=n(9318),M=(0,r.aZ)({name:"UserMonthStats",components:{Chart:D},props:{sports:{type:Object,required:!0},user:{type:Object,required:!0},chartParams:{type:Object,required:!0},displayedSportIds:{type:Array,default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1}},setup(e){const t=(0,P.o)(),n=(0,U.iH)("total_distance"),a=(0,r.Fl)((()=>t.getters[k.gu.GETTERS.USER_STATS])),o=(0,r.Fl)((()=>(0,L.v1)(e.chartParams,e.user.weekm,e.sports,e.displayedSportIds,a.value,e.user.imperial_units)));function s(n){t.dispatch(k.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:n})}function i(e){n.value=e.target.name}function l(e,t){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(t.weekm?"m":""):e.duration}}return(0,r.wF)((()=>s(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async t=>{s(l(t,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[n.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:n,updateDisplayData:i}}});const b=(0,v.Z)(M,[["render",A],["__scopeId","data-v-58e4e79d"]]);var y=b},2179:function(e,t,n){"use strict";n.d(t,{Z:function(){return N}});var r=n(6252),a=n(2262),o=n(3577),s=n(6595),i=n(5801),l=n(9917);const c={class:"box user-header"},u={class:"user-details"},d={class:"user-name"},m={class:"user-stats"},_={class:"user-stat"},S={class:"stat-number"},E={class:"stat-label"},T={class:"user-stat"},p={class:"stat-label"},A={class:"user-stat hide-small"},O={class:"stat-number"},U={class:"stat-label"};var R=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const t=e,{user:n}=(0,a.BK)(t),R=(0,l.o)(),I=(0,r.Fl)((()=>R.getters[i.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const i=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(s.Z,{user:(0,a.SU)(n)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(n).username),1),(0,r._)("div",m,[(0,r._)("div",_,[(0,r._)("span",S,(0,o.zw)((0,a.SU)(n).nb_workouts),1),(0,r._)("span",E,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(n).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(i,{distance:(0,a.SU)(n).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(I).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(I).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(n).nb_sports),1),(0,r._)("span",U,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(n).nb_sports)),1)])])])])}}}),I=n(3744);const g=(0,I.Z)(R,[["__scopeId","data-v-20291951"]]);var N=g},7408:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});n(7658);var r=n(6252),a=n(2262),o=n(3577),s=n(9963),i=n(4850),l=n(5801),c=n(9917);const u={id:"user-infos",class:"description-list"},d={key:1,class:"info-box success-message"},m={key:4,class:"email-form form-box"},_={class:"form-items",for:"email"},S={class:"form-items",for:"email"},E={class:"form-buttons"},T={class:"confirm",type:"submit"},p=["onClick"],A={key:5},O={class:"user-bio"},U={key:0,class:"profile-buttons"},R=["onClick"],I={key:1,class:"profile-buttons"};var g=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,c.o)(),{user:g,fromAdmin:N}=(0,a.BK)(t),z=(0,r.Fl)((()=>n.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),h=(0,r.Fl)((()=>t.user.created_at?(0,i.Z)(new Date(t.user.created_at),"dd/MM/yyyy HH:mm"):"")),w=(0,r.Fl)((()=>t.user.birth_date?(0,i.Z)(new Date(t.user.birth_date),"dd/MM/yyyy"):"")),f=(0,r.Fl)((()=>n.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),v=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),C=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),D=(0,a.iH)(""),k=(0,a.iH)(!1),P=(0,a.iH)(!1),L=(0,a.iH)(""),M=(0,a.iH)("");function b(e){D.value=e,""!==e&&n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function y(e){n.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function G(e){M.value="password-reset",n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function F(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function W(){x(),L.value=g.value.email_to_confirm?g.value.email_to_confirm:"",P.value=!0,M.value="email-update"}function K(){L.value="",P.value=!1}function Y(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:L.value})}function x(){n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),M.value=""}return(0,r.Ah)((()=>x())),(0,r.YP)((()=>f.value),(e=>{e&&(b(""),K())})),(e,t)=>{const n=(0,r.up)("Modal"),i=(0,r.up)("AlertMessage"),l=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",u,[D.value?((0,r.wg)(),(0,r.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:"delete"===D.value?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:(0,a.SU)(g).username,onConfirmAction:t[0]||(t[0]=e=>"delete"===D.value?y((0,a.SU)(g).username):G((0,a.SU)(g).username)),onCancelAction:t[1]||(t[1]=e=>b(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(f)?((0,r.wg)(),(0,r.iD)("div",d,(0,o.zw)(e.$t(`admin.${"password-reset"===M.value?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):(0,r.kq)("",!0),(0,a.SU)(g).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(i,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})),(0,a.SU)(v)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(v)},null,8,["message"])):(0,r.kq)("",!0),P.value?((0,r.wg)(),(0,r.iD)("div",m,[(0,r._)("form",{class:(0,o.C_)({errors:k.value}),onSubmit:t[4]||(t[4]=(0,s.iM)((e=>Y((0,a.SU)(g).username)),["prevent"]))},[(0,r._)("label",_,[(0,r.Uk)((0,o.zw)(e.$t("admin.CURRENT_EMAIL"))+" ",1),(0,r.wy)((0,r._)("input",{id:"email",type:"email","onUpdate:modelValue":t[2]||(t[2]=e=>(0,a.SU)(g).email=e),disabled:""},null,512),[[s.nr,(0,a.SU)(g).email]])]),(0,r._)("label",S,[(0,r.Uk)((0,o.zw)(e.$t("admin.NEW_EMAIL"))+"* ",1),(0,r.wy)((0,r._)("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":t[3]||(t[3]=e=>L.value=e)},null,512),[[s.nr,L.value]])]),(0,r._)("div",E,[(0,r._)("button",T,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,r._)("button",{class:"cancel",onClick:(0,s.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,p)])],34)])):((0,r.wg)(),(0,r.iD)("div",A,[(0,r._)("dl",null,[(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(h)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(g).first_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(g).last_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(w)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(g).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",O,(0,o.zw)((0,a.SU)(g).bio),1)]),(0,a.SU)(N)?((0,r.wg)(),(0,r.iD)("div",U,[(0,a.SU)(z).username!==(0,a.SU)(g).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:t[5]||(t[5]=(0,s.iM)((e=>b("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(g).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:t[6]||(t[6]=(0,s.iM)((e=>F((0,a.SU)(g).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(z).username!==(0,a.SU)(g).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,s.iM)(W,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,R)):(0,r.kq)("",!0),(0,a.SU)(z).username!==(0,a.SU)(g).username&&(0,a.SU)(C).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:t[7]||(t[7]=(0,s.iM)((e=>b("reset")),["prevent"]))},(0,o.zw)(e.$t("admin.RESET_USER_PASSWORD")),1)):(0,r.kq)("",!0),(0,r._)("button",{onClick:t[8]||(t[8]=t=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",I,[(0,r._)("button",{onClick:t[9]||(t[9]=t=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:t[10]||(t[10]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),N=n(3744);const z=(0,N.Z)(g,[["__scopeId","data-v-794e58e7"]]);var h=z},2411:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(6252),a=n(3577),o=n(2262),s=n(9963),i=n(2201),l=n(8403),c=n(5801),u=n(9917);const d=e=>((0,r.dD)("data-v-b3c885de"),e=e(),(0,r.Cn)(),e),m={id:"user-form"},_={key:2,class:"info-box success-message"},S={class:"form-items"},E=["disabled","placeholder"],T={key:1,class:"form-info"},p=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),A=["disabled","placeholder"],O={key:3,class:"form-info"},U=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),R=["disabled"],I={key:3},g={key:0},N={key:4},z={class:"account"},h={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const t=e,n=(0,i.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(t),f=(0,o.qj)({username:"",email:"",password:""}),v=(0,r.Fl)((()=>G(t.action))),C=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),D=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),L=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),M=(0,r.Fl)((()=>"register"===t.action&&!P.value.is_registration_enabled)),b=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(t.action)&&!P.value.is_email_sending_enabled)),y=(0,o.iH)(!1);function G(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${t.action.toUpperCase()}`}}function F(){y.value=!0}function W(e){f.password=e}function K(e){switch(e){case"reset":return t.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:f.password,token:t.token}):d.commit(c.SY.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return d.dispatch(c.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:f.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:f.email});default:f["language"]=L.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:f,redirectUrl:n.query.from})}}function Y(){f.username="",f.email="",f.password=""}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>n.path),(async()=>{d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),d.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),d.commit(c.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),y.value=!1,Y()})),(e,t)=>{const n=(0,r.up)("AlertMessage"),i=(0,r.up)("router-link"),c=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",{id:"user-auth-form",class:(0,a.C_)(`${["reset","reset-request"].includes((0,o.SU)(w))?(0,o.SU)(w):"user-form"}`)},[(0,r._)("div",m,[(0,r._)("div",{class:(0,a.C_)(["form-box",{disabled:(0,o.SU)(M)}])},[(0,o.SU)(M)?((0,r.wg)(),(0,r.j4)(n,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(b)?((0,r.wg)(),(0,r.j4)(n,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(k)||(0,o.SU)(D)?((0,r.wg)(),(0,r.iD)("div",_,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(D)?"REGISTRATION"+((0,o.SU)(P).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:y.value}),onSubmit:t[2]||(t[2]=(0,s.iM)((e=>K((0,o.SU)(w))),["prevent"]))},[(0,r._)("div",S,["register"===(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:0,id:"username",disabled:(0,o.SU)(M),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:F,"onUpdate:modelValue":t[0]||(t[0]=e=>f.username=e),placeholder:e.$t("user.USERNAME")},null,40,E)),[[s.nr,f.username]]):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",T,[p,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.USERNAME_INFO")),1)])):(0,r.kq)("",!0),"reset"!==(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:2,id:"email",disabled:(0,o.SU)(M)||(0,o.SU)(b),required:"",onInvalid:F,type:"email","onUpdate:modelValue":t[1]||(t[1]=e=>f.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[s.nr,f.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[U,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.EMAIL_INFO")),1)])):(0,r.kq)("",!0),["account-confirmation-resend","reset-request"].includes((0,o.SU)(w))?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(l.Z,{key:4,disabled:(0,o.SU)(M),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:f.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:W,onPasswordError:F},null,8,["disabled","placeholder","password","checkStrength"]))]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(M)||(0,o.SU)(b)},(0,a.zw)(e.$t((0,o.SU)(v))),9,R)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",I,[(0,r.Wm)(i,{class:"links",to:"/register"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.REGISTER")),1)])),_:1}),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",g,"-")):(0,r.kq)("",!0),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.j4)(i,{key:1,class:"links",to:"/password-reset/request"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.PASSWORD_FORGOTTEN")),1)])),_:1})):(0,r.kq)("",!0)])):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",N,[(0,r._)("span",z,(0,a.zw)(e.$t("user.ALREADY_HAVE_ACCOUNT")),1),(0,r.Wm)(i,{class:"links",to:"/login"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.LOGIN")),1)])),_:1})])):(0,r.kq)("",!0),["login","register"].includes((0,o.SU)(w))&&(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",h,[(0,r.Wm)(i,{class:"links",to:"/account-confirmation/resend"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(C)?((0,r.wg)(),(0,r.j4)(c,{key:6,message:(0,o.SU)(C)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),f=n(3744);const v=(0,f.Z)(w,[["__scopeId","data-v-b3c885de"]]);var C=v},6595:function(e,t,n){"use strict";n.d(t,{Z:function(){return _}});var r=n(6252),a=n(2262),o=n(2024);const s={class:"user-picture"},i=["alt","src"],l={key:1,class:"no-picture"},c=(0,r._)("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),u=[c];var d=(0,r.aZ)({__name:"UserPicture",props:{user:null},setup(e){const t=e,n=(0,r.Fl)((()=>t.user.picture?`${(0,o.k)()}users/${t.user.username}/picture?${Date.now()}`:""));return(e,t)=>((0,r.wg)(),(0,r.iD)("div",s,[""!==(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(n)},null,8,i)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var _=m},5630:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577);const o={class:"no-workouts box"};function s(e,t){const n=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("div",o,[(0,r._)("div",null,[(0,r.Uk)((0,a.zw)(e.$t("workouts.NO_WORKOUTS"))+" ",1),(0,r.Wm)(n,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var i=n(3744);const l={},c=(0,i.Z)(l,[["render",s],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,t,n){var r={"./de/de.ts":9923,"./en/en.ts":8757,"./fr/fr.ts":6625};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,r,a,o){if(!r){var s=1/0;for(u=0;u=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[l])}))?r.splice(l--,1):(i=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&a&&r;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((function(e){s[e]=function(){return r[e]}}));return s["default"]=function(){return r},n.d(o,s),o}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"static/js/"+({24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile",881:"password"}[e]||e)+"."+{24:"987a4de8",93:"97ccdf6e",193:"61163b0e",243:"27c8fef5",328:"ab9e5f5f",401:"520d24bf",431:"5976068e",633:"9a092c9a",845:"dd30724d",858:"0441e3cc",881:"c426a91d"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"dd7c6bdb",845:"203e78e2"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="fittrackee_client:";n.l=function(r,a,o,s){if(e[r])e[r].push(a);else{var i,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nauthApi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default authApi\n","import { AxiosRequestConfig } from 'axios'\n\nexport const pendingRequests = new Map()\n\nconst generateRequestKey = (config: AxiosRequestConfig): string => {\n const { method, url, params = {}, data = {} } = config\n return [method, url, JSON.stringify(params), JSON.stringify(data)].join('')\n}\n\nexport const removeRequestIfPending = (config: AxiosRequestConfig): string => {\n const requestKey = generateRequestKey(config)\n if (pendingRequests.has(requestKey)) {\n const controller = pendingRequests.get(requestKey) || {}\n controller?.abort()\n pendingRequests.delete(requestKey)\n }\n return requestKey\n}\n","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nfunction loadLocaleMessages(): Record> {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: Record> = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (matched && matched.length > 1) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontaktiere den Administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"unter \", _interpolate(_list(0)), \" Lizenz \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quellkode\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiviere Konto\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt-E-Mail des Administrators\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Kontakt-E-Mail\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe der hochgeladenen Dateien (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungskonfiguration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe des zip Archives (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zu Admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Passwort zurücksetzen?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelle E-Mail\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lösche Nutzer\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail-Versand ist deaktiviert.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren/Deaktivieren von Sportarten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neue E-Mail\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit deaktiviert.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit aktiviert.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainings existieren\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten Administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere E-Mail\"])},\n \"USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzer\"])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte hinzufügen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte entfernen\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adminstatus\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accountstatus\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsanzahl\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail: Eine gültige E-Mail muss angegeben werden.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Abrufen der Konfiguration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Aktualisieren der Konfiguration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Die Registrierung ist deaktiviert.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dateierweiterung ist nicht erlaubt.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Datei ist größer als erlaubt.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültige Anmeldedaten.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die bereitgestellten Daten sind ungültig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei ausgewählt.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort: Passwort und Passwortbestätigung stimmen nicht überein.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein gültiges Authentifizierungstoken an.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es tut mir leid, der Benutzername ist schon vergeben.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportart existiert nicht.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut an.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Nutzer existiert nicht.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du hast keine Berechtigung.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigungs-E-Mail erneut senden\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorisieren\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter löschen\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mein Konto löschen\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deaktivieren\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bearbeiten\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurücksetzen\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speichern\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigung\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Tag\"]), _normalize([\"Tage\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Angezeigt\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dokumentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versteckt\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startseite\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pro Seite\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insgesamt\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Monat\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
                                                                              Bitte versuche es später noch einmal oder kontaktiere den Administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seite nicht gefunden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training nicht gefunden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas lief schief\"])}\n}","export default {\n \n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Pendeln)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandern\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (elektrisch)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rudern\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laufen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Langlauf)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeschuhe\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gehen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistik\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jahr\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du keine Anweisungen erhalten?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du bereits ein Konto?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelles Passwort\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe eine gültige E-Mail-Adresse an.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein Passwort ein\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nach Benutzernamen filtern\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort verbergen\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte fordere ein neues Passworts an.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neues Passwort\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Nutzer gefunden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe mehr als nur den ersten Buchstaben groß.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Dein Passwort wurde aktualisiert. Klicke \", _interpolate(_list(0)), \" um dich anzumelden.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontoausgabe\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstiegs-bezogene Daten (Aufnahmen, gesamt)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zum Profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biographie\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geburtsdatum\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil bearbeiten\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen ändern\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen für Sportarten ändern\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Bitte \", _interpolate(_list(0)), \" um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nachname\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ort\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildausgabe\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regirierungsdatum\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sontag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungen\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farbe\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vom Admin deaktiviert\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aktiv\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeitsschwellenwert für Stopp\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich erstellt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort anzeigen\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Account ist inaktiv.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training hinzufügen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aufstieg\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück zum Training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abstieg\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zeige Filter\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entfernung\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dauer\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training bearbeiten\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhe\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ende\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Von\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx Datei\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberge Filter\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letzte Trainings\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lade mehr Trainings\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maximale Höhe\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximale Dateianzahl\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximalgröße\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minimale Höhe\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Training\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten aus gpx, ohne Bereinigung\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enthält keinen Ordner\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Karte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Anmerkungen\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Aufzeichnungen.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Trainings.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pausen\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Aufzeichnung\"]), _normalize([\"Aufzeichnungen\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiteste Entfernung\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höchster Anstieg\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Längste Dauer\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verbleibende Zeichen\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Segment\"]), _normalize([\"Segmente\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeit\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Sportart\"]), _normalize([\"Sportarten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start und Ziel\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhenachse bei Null starten\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bis\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gesamtdauer\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge erstes Training hinzu!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luftfeuchtigkeit\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temperatur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klarer Tag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klare Nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wolkig\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nebel\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkter Tag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkte Nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeregen\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schnee\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .gpx Datei\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Training\"]), _normalize([\"Trainings\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsdatum\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du dieses Training löschen möchtest?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip Datei\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oder .zip Datei mit .gpx Dateien\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contact the administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is a self-hosted outdoor activity tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"under \", _interpolate(_list(0)), \" license \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source code\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email for contact\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to reset \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email sending is disabled.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration (maximum number of registered users, maximum files size).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The new email must be different than curent email\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that username is already taken.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A valid email must be provided for administrator contact\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend confirmation email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authorize\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Displayed\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems to have encountered some issues.
                                                                              Please try again later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a new OAuth2 application\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application description\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application name\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redirect URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to application configuration.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application URL\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application created successfully. Make sure to copy the secret now, it won't show up again.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The application \", _interpolate(_list(0)), \" is requesting:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Authorize \", _interpolate(_list(0)), \" to use your account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copy to the clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add an application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application not found!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke all tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to revoke all tokens?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All existing associated tokens have been revoked.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Snowshoes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Didn't received instructions?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. A new confirmation email has been sent to the address provided.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a valid email address.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter on username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No users found.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize more than the first letter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid dates and years that are associated with you.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can create strong passwords without using symbols, numbers, or uppercase letters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you use this password elsewhere, you should change it.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account edition\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ascent-related data (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit sports preferences\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Please \", _interpolate(_list(0)), \" to change your email address again or contact the administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"color\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disabled by admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"active\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stopped speed threshold\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully. Please check your email to confirm your new email address.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been created successfully.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A link to activate your account has been emailed to the address provided.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"show password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This user account is inactive.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 to 30 characters required, only alphanumeric characters and the underscore character \\\"_\\\" allowed.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farthest distance\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highest ascent\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start and finish\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start elevation axis at zero\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacter l'administrateur\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee est un tracker d'activités sportives (en extérieur).\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"sous licence \", _interpolate(_list(0)), \" (en) \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Code source (en)\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer le compte\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email de l'administrateur pour contact \"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"non renseigné\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur \", _interpolate(_list(0)), \" ?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adresse email actuelle\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'envoi d'emails est désactivé.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouvelle adresse email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit. le mot de passe\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changer l'email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les droits d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les droits d'admin\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"statut du compte\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel : une adresse électronique valide doit être fournie.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nouvelle addresse électronique doit être differente de l'adresse actuelle\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, ce nom d'utilisateur est déjà utilisé.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une adresse électronique doit être fournie pour le contact de l'administrateur\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Renvoyer le message de confirmation\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autoriser\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retour\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit.\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à propos\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Affiché\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masqué\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois-ci\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
                                                                              Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une erreur s'est produite\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une nouvelle application OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiant\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description de l'application\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Créée le\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom de l'application\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de redirection\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture à la configuration de l'application.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes auth.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes auth.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes users.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes users.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes workouts.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes workouts.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de l'application\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer cette application ?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'application \", _interpolate(_list(0)), \" demande les accès suivants :\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autoriser \", _interpolate(_list(0)), \" à utiliser votre compte ?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copier dans le presse papier\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application introuvable !\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Révoquer tous les jetons\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir révoquer tous les jetons ?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tous les jetons associés existants ont été révoqués.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Électrique)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raquettes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas reçu les instructions ?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe actuel\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez une adresse électronique valide.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez un mot de passe\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer sur le nom d'utilisateur\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"connecter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouveau mot de passe\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucun utilisateur trouvé.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalisez mais pas seulement la première lettre.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du compte\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données relatives au dénivelé positif (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences des sports\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Veuillez vous \", _interpolate(_list(0)), \" pour changer de nouveau votre adresse électronique ou contacter l'administrateur\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"compte\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km)\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"couleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"désactivé par l'administrateur\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actif\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuil de vitesse arrêtée\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été créé avec succès.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès.\"])},\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envoyer à nouveau le courriel de confirmation de compte\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher le mot de passe\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le compte de cet utilisateur est inactif.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dénivelé positif le + élevé\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Départ et arrivée\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"démarrer l'axe de l'altitude à 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c73279e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_6 = { class: \"footer-item\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer-item bullet\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"footer-item\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_11 = { class: \"footer-item\" }\nconst _hoisted_12 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\n\nimport { toRefs } from 'vue'\n\n interface Props {\n version: string\n adminContact?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n version: null,\n adminContact: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n version: string\n adminContact?: string\n }\n\n \n\n const { adminContact, version } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_unref(version)), 1)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.ABOUT')), 1)\n ]),\n _: 1\n })\n ]),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"•\"))\n : _createCommentVNode(\"\", true),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(adminContact)}`\n }, _toDisplayString(_ctx.$t('common.CONTACT')), 9, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10,\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"a\", _hoisted_12, _toDisplayString(_ctx.$t('common.DOCUMENTATION')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=2c73279e&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c73279e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-95c1cc02\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nimport { ComputedRef, computed, ref, capitalize } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavBar',\n emits: ['menuInteraction'],\n setup(__props, { emit }) {\n\n \n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n store.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n option.value.toString()\n )\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !isMenuOpen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (closeMenu()))\n }, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_unref(isAuthenticated) && _unref(authUser).admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(UserPicture, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(authUser).username), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: logout\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n })\n ])),\n (_unref(availableLanguages) && _unref(language))\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _unref(availableLanguages),\n selected: _unref(language),\n onSelected: updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=95c1cc02&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-95c1cc02\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47759238\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = { class: \"error-img\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NoConfig',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ErrorImg)\n ]),\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=47759238&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47759238\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1)\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { ComputedRef, computed, ref, onBeforeMount, onMounted } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { localeFromLanguage } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() => {\n initLanguage()\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n })\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n const bottom = document.querySelector('#bottom')\n displayScrollButton.value = bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n function initLanguage() {\n let language = 'en'\n try {\n const navigatorLanguage = navigator.language.split('-')[0]\n if (navigatorLanguage in localeFromLanguage) {\n language = navigatorLanguage\n }\n } catch (e) {\n language = 'en'\n }\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, language)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(NavBar, { onMenuInteraction: updateHideScrollBar }),\n (_unref(appLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': hideScrollBar.value }])\n }, [\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': displayScrollButton.value }]),\n onClick: scrollToTop\n }, _hoisted_6, 2)\n ]),\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(Footer, {\n key: 2,\n version: _unref(appConfig) ? _unref(appConfig).version : '',\n adminContact: _unref(appConfig).admin_contact\n }, null, 8, [\"version\", \"adminContact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2930d5e0&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69d7e4ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs } from 'vue'\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlertMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string\n }\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_unref(message))\n }, null, 8, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=69d7e4ff&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-69d7e4ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8cf5cc64\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLenght\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nimport { ref, watch, withDefaults } from 'vue'\n\n interface Props {\n name: string\n charLimit?: number\n disabled?: boolean\n input?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextArea',\n props: {\n name: null,\n charLimit: { default: 500 },\n disabled: { type: Boolean, default: false },\n input: { default: '' }\n },\n emits: ['updateValue'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { name: string, charLimit: number, disabled: boolean, input: string | null }\n\n \n\n \n\n const text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value === null ? '' : value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: __props.name,\n name: __props.name,\n maxLenght: __props.charLimit,\n disabled: __props.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((text).value = $event)),\n onInput: updateText\n }, null, 40, _hoisted_2), [\n [_vModelText, text.value]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(text.value.length) + \"/\" + _toDisplayString(__props.charLimit), 1)\n ]))\n}\n}\n\n})","import script from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=8cf5cc64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8cf5cc64\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f46ff1d6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\" \" + /*#__PURE__*/_toDisplayString(' ') + \" \")\n\nimport { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import { TUnit } from '@/types/units'\n import { units, convertDistance } from '@/utils/units'\n\n interface Props {\n distance: number\n unitFrom: TUnit\n useImperialUnits: boolean\n digits?: number\n displayUnit?: boolean\n speed?: boolean\n strong?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Distance',\n props: {\n distance: null,\n unitFrom: null,\n useImperialUnits: { type: Boolean },\n digits: { default: 2 },\n displayUnit: { type: Boolean, default: true },\n speed: { type: Boolean, default: false },\n strong: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { distance: number, unitFrom: TUnit, useImperialUnits: boolean, digits: number, displayUnit: boolean, speed: boolean, strong: boolean }\n\n \n\n const {\n digits,\n displayUnit,\n distance,\n speed,\n strong,\n unitFrom,\n useImperialUnits,\n } = toRefs(props)\n const unitTo: ComputedRef = computed(() =>\n useImperialUnits.value\n ? units[unitFrom.value].defaultTarget\n : unitFrom.value\n )\n const convertedDistance = computed(() =>\n useImperialUnits.value\n ? convertDistance(\n distance.value,\n unitFrom.value,\n unitTo.value,\n digits.value\n )\n : parseFloat(distance.value.toFixed(digits.value))\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"distance\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(convertedDistance)), 3),\n _hoisted_1,\n (_unref(displayUnit))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"unit\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(unitTo)) + _toDisplayString(_unref(speed) ? '/h' : ''), 3))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Distance.vue?vue&type=style&index=0&id=f46ff1d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f46ff1d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d3b4eac\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n interface Props {\n options: TDropdownOptions\n selected: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dropdown',\n props: {\n options: null,\n selected: null\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n options: TDropdownOptions\n selected: string\n }\n\n \n\n \n\n const route = useRoute()\n const isOpen = ref(false)\n const dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: toggleDropdown\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dropdownOptions), (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === __props.selected }]),\n key: index,\n onClick: ($event: any) => (updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=2d3b4eac&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2d3b4eac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2659a79a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n message: string | string[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string | string[]\n }\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_unref(message)))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(message), (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_unref(message))), 1))\n ]))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=2659a79a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2659a79a\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Snowshoes.vue?vue&type=template&id=67df2761\"\nimport script from \"./Snowshoes.vue?vue&type=script&lang=js\"\nexport * from \"./Snowshoes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { inject, toRefs, withDefaults } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Snowshoes from '@/components/Common/Images/SportImage/Snowshoes.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n interface Props {\n sportLabel: string\n color: string | null\n title?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sportLabel: null,\n color: null,\n title: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { sportLabel: string, color: string | null, title: string }\n\n \n\n const { color, sportLabel, title } = toRefs(props)\n const sportColors = inject('sportColors')\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _unref(color) ? _unref(color) : _unref(sportColors)[_unref(sportLabel)] }),\n title: _unref(title) ? _unref(title) : _ctx.$t(`sports.${_unref(sportLabel)}.LABEL`)\n }, [\n (_unref(sportLabel) === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Hiking')\n ? (_openBlock(), _createBlock(Hiking, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking')\n ? (_openBlock(), _createBlock(MountainBiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(MountainBikingElectric, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 11 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./Loader.vue?vue&type=template&id=4c9921ee&scoped=true\"\nconst script = {}\n\nimport \"./Loader.vue?vue&type=style&index=0&id=4c9921ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c9921ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e8fcfaba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nimport { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n title: string\n message: string\n strongMessage?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n title: null,\n message: null,\n strongMessage: { default: () => null }\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { title: string, message: string, strongMessage: string | null }\n\n \n\n \n\n const store = useStore()\n\n const { title, message, strongMessage } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(title)), 1)\n ]),\n content: _withCtx(() => [\n (_unref(strongMessage))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _unref(message) }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(strongMessage)), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_unref(message)), 1)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_unref(errorMessages) ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=e8fcfaba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e8fcfaba\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Distance from '@/components/Common/Distance.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n { target: AlertMessage, name: 'AlertMessage' },\n { target: Card, name: 'Card' },\n { target: CustomTextArea, name: 'CustomTextArea' },\n { target: Distance, name: 'Distance' },\n { target: Dropdown, name: 'Dropdown' },\n { target: ErrorMessage, name: 'ErrorMessage' },\n { target: Loader, name: 'Loader' },\n { target: Modal, name: 'Modal' },\n { target: SportImage, name: 'SportImage' },\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\nimport VueFullscreen from 'vue-fullscreen'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .use(VueFullscreen, { name: 'VFullscreen' })\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component.target)\n})\n\napp.mount('#app')\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-24ec93e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { for: \"admin_contact\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = { for: \"max_users\" }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"user-limit-help\" }\nconst _hoisted_9 = { class: \"info-box\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { for: \"max_single_file_size\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { for: \"max_zip_file_size\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { for: \"gpx_limit_import\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n key: 1,\n class: \"form-buttons\"\n}\nconst _hoisted_18 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = {\n key: 2,\n class: \"form-buttons\"\n}\n\nimport {\n ComputedRef,\n computed,\n reactive,\n withDefaults,\n onBeforeMount,\n toRefs,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n\n interface Props {\n appConfig: TAppConfig\n edition?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminApplication',\n props: {\n appConfig: null,\n edition: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, edition: boolean }\n\n \n const { edition } = toRefs(props)\n\n const store = useStore()\n const router = useRouter()\n\n const appData: TAppConfigForm = reactive({\n admin_contact: '',\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = appConfig[key])\n })\n }\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _withModifiers(onSubmit, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ADMIN_CONTACT')) + \": \", 1),\n (!_unref(edition) && !appData.admin_contact)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"no-contact\",\n value: _ctx.$t('admin.APP_CONFIG.NO_CONTACT_EMAIL'),\n disabled: \"\"\n }, null, 8, _hoisted_4))\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n id: \"admin_contact\",\n name: \"admin_contact\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appData.admin_contact) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_5)), [\n [_vModelText, appData.admin_contact]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appData.max_users) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_7), [\n [_vModelText, appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appData.max_single_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_12), [\n [_vModelText, appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((appData.max_zip_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_14), [\n [_vModelText, appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((appData.gpx_limit_import) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_16), [\n [_vModelText, appData.gpx_limit_import]\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", _hoisted_18, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_19)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 40, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=24ec93e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24ec93e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n icon: string\n text: string\n value: string | number\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatCard',\n props: {\n icon: null,\n text: null,\n value: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n icon: string\n text: string\n value: string | number\n }\n\n \n const { icon, text, value } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_unref(icon)}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_unref(value)), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(text)), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=6cbb3351&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { computed, toRefs } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n appStatistics: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStatsCards',\n props: {\n appStatistics: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n appStatistics: IAppStatistics\n }\n\n \n\n const { appStatistics } = toRefs(props)\n const uploadDirSize = computed(() =>\n getReadableFileSize(appStatistics.value.uploads_dir_size, false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"users\",\n value: _unref(appStatistics).users,\n text: _ctx.$t('admin.USER', _unref(appStatistics).users)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"tags\",\n value: _unref(appStatistics).sports,\n text: _ctx.$t('workouts.SPORT', _unref(appStatistics).sports)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(appStatistics).workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(appStatistics).workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"folder-open\",\n value: _unref(uploadDirSize).size,\n text: _unref(uploadDirSize).suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}\n}\n\n})","import script from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=61c5053e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0dd66f89\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = { class: \"application-config-details\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = { class: \"registration-status\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"email-sending-status\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-exclamation-triangle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { capitalize, toRefs, withDefaults } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n interface Props {\n appConfig: TAppConfig\n appStatistics?: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminMenu',\n props: {\n appConfig: null,\n appStatistics: { default: () => ({} as IAppStatistics) }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, appStatistics: IAppStatistics }\n\n \n\n const { appConfig, appStatistics } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(AppStatsCards, { appStatistics: _unref(appStatistics) }, null, 8, [\"appStatistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_4,\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _unref(appConfig).is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1),\n (!_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.EMAIL_SENDING_DISABLED')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=0dd66f89&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0dd66f89\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d62af67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminSports',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"title\", \"sport-label\", \"color\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d62af67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d62af67\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, withKeys as _withKeys, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-627a8e91\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"users-filters\" }\nconst _hoisted_2 = { class: \"search-username\" }\nconst _hoisted_3 = [\"onKeyup\", \"placeholder\"]\n\nimport { ref } from 'vue'\n import { useRoute } from 'vue-router'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UsersNameFilter',\n emits: ['filterOnUsername'],\n setup(__props, { emit }) {\n\n const route = useRoute()\n const username = ref(route.query.q ? route.query.q : '')\n\n \n function searchUsers() {\n if (username.value !== '') {\n emit('filterOnUsername', username)\n }\n }\n function resetFilter() {\n username.value = ''\n emit('filterOnUsername', username.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"username\",\n name: \"username\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((username).value = $event)),\n onKeyup: _withKeys(searchUsers, [\"enter\"]),\n placeholder: _ctx.$t('user.FILTER_ON_USERNAME')\n }, null, 40, _hoisted_3), [\n [\n _vModelText,\n username.value,\n void 0,\n { trim: true }\n ]\n ]),\n (username.value !== '')\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-times\",\n \"aria-hidden\": \"true\",\n onClick: resetFilter\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-search\", { 'fa-disabled': username.value === '' }]),\n \"aria-hidden\": \"true\",\n onClick: searchUsers\n }, null, 2)\n ]))\n}\n}\n\n})","import script from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./UsersNameFilter.vue?vue&type=style&index=0&id=627a8e91&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-627a8e91\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4735c10f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"no-users\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"responsive-table\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"left-text\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"text-center\" }\nconst _hoisted_17 = { class: \"cell-heading\" }\nconst _hoisted_18 = { class: \"text-center\" }\nconst _hoisted_19 = { class: \"cell-heading\" }\nconst _hoisted_20 = [\"disabled\", \"onClick\"]\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import UsersNameFilter from '@/components/Users/UsersNameFilter.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminUsers',\n setup(__props) {\n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'is_active',\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadUsers(query))\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function searchUsers(username: Ref) {\n reloadUsers('q', username.value)\n }\n\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(UsersNameFilter, { onFilterOnUsername: searchUsers }),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: reloadUsers\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(users).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('user.NO_USERS_FOUND')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_4,\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/admin/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(user.created_at, _unref(authUser).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _unref(authUser).username,\n onClick: ($event: any) => (updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_20)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(pagination).page)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _unref(pagination),\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=4735c10f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4735c10f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n tabs: string[]\n selectedTab: string\n edition: boolean\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserProfileTabs',\n props: {\n tabs: null,\n selectedTab: null,\n edition: { type: Boolean },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { tabs: string[], selectedTab: string, edition: boolean, disabled: boolean }\n\n \n\n const { tabs, selectedTab, disabled } = toRefs(props)\n\n function getPath(tab: string) {\n switch (tab) {\n case 'ACCOUNT':\n case 'PICTURE':\n return `/profile/edit/${tab.toLocaleLowerCase()}`\n case 'APPS':\n case 'PREFERENCES':\n case 'SPORTS':\n return `/profile${\n props.edition ? '/edit' : ''\n }/${tab.toLocaleLowerCase()}`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(tabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _unref(selectedTab).split('/')[0] === tab,\n disabled: _unref(disabled),\n onInput: ($event: any) => (_ctx.$router.push(getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=01b05f01&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9729cba4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nimport { toRefs } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n }\n\n \n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'PREFERENCES', 'SPORTS', 'APPS']\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: false\n }, null, 8, [\"selectedTab\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9729cba4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9729cba4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nimport { computed } from 'vue'\n\n import { IAuthUserProfile } from '@/types/user'\n import { languageLabels } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferences',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const language = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() => (props.user.weekm ? 'MONDAY' : 'SUNDAY'))\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n const display_ascent = computed(() =>\n props.user.display_ascent ? 'DISPLAYED' : 'HIDDEN'\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(language)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(timezone)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_unref(fistDayOfWeek)}`)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(\n `user.PROFILE.UNITS.${__props.user.imperial_units ? 'IMPERIAL' : 'METRIC'}`\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`common.${_unref(display_ascent)}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n }\n\n \n\n const store = useStore()\n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'ACCOUNT', 'PICTURE', 'PREFERENCES', 'SPORTS']\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_unref(tab)}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: true,\n disabled: _unref(loading)\n }, null, 8, [\"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-37b8c4c8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = [\"disabled\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password-field\"\n}\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"new-password-field\"\n}\nconst _hoisted_9 = { class: \"form-buttons\" }\nconst _hoisted_10 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile, IUserAccountPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAccountEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n const userForm: IUserAccountPayload = reactive({\n email: '',\n password: '',\n new_password: '',\n })\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const emailUpdate = ref(false)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const formErrors = ref(false)\n const displayModal: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IUserProfile) {\n userForm.email = user.email\n }\n function updatePassword(password: string) {\n userForm.password = password\n }\n function updateNewPassword(new_password: string) {\n userForm.new_password = new_password\n }\n function updateProfile() {\n const payload: IUserAccountPayload = {\n email: userForm.email,\n password: userForm.password,\n }\n if (userForm.new_password) {\n payload.new_password = userForm.new_password\n }\n emailUpdate.value = userForm.email !== user.value.email\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT, payload)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n onUnmounted(() => {\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\n watch(\n () => isSuccess.value,\n async (isSuccessValue) => {\n if (isSuccessValue) {\n updatePassword('')\n updateNewPassword('')\n updateUserForm(user.value)\n formErrors.value = false\n }\n }\n )\n watch(\n () => user.value.email,\n async () => {\n updateUserForm(user.value)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteAccount(_unref(user).username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n emailUpdate.value && _unref(appConfig).is_email_sending_enabled ? 'EMAIL_' : ''\n }UPDATE`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.email) = $event)),\n disabled: _unref(loading),\n required: true,\n onInvalid: invalidateForm\n }, null, 40, _hoisted_6), [\n [_vModelText, userForm.email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.CURRENT_PASSWORD')) + \"* \", 1),\n _createVNode(PasswordInput, {\n id: \"password-field\",\n disabled: _unref(loading),\n password: userForm.password,\n required: true,\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.NEW_PASSWORD')) + \" \", 1),\n _createVNode(PasswordInput, {\n id: \"new-password-field\",\n disabled: _unref(loading),\n checkStrength: true,\n password: userForm.new_password,\n isSuccess: false,\n onUpdatePassword: updateNewPassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", _hoisted_10, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1)\n ])\n ], 42, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAccountEdition.vue?vue&type=style&index=0&id=37b8c4c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37b8c4c8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b6bacea0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"form-items\" }\nconst _hoisted_14 = { class: \"form-buttons\" }\nconst _hoisted_15 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfosEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const store = useStore()\n\n const userForm: IUserPayload = reactive({\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _unref(registrationDate),\n disabled: \"\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.first_name) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_7), [\n [_vModelText, userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.birth_date) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_10), [\n [_vModelText, userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userForm.location) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_12), [\n [_vModelText, userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: userForm.bio,\n disabled: _unref(loading),\n onUpdateValue: updateBio\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", _hoisted_15, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=b6bacea0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b6bacea0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-687e9604\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"picture-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"picture-buttons\" }\nconst _hoisted_8 = [\"disabled\"]\n\nimport { ComputedRef, Ref, computed, ref, toRefs, onUnmounted } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPictureEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateUserPicture, [\"prevent\"])\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: updatePictureFile\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !pictureFile.value\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_8),\n (_unref(user).picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: deleteUserPicture\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=687e9604&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-687e9604\"]])\n\nexport default __exports__","export const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Algiers',\n 'Africa/Bissau',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/El_Aaiun',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Khartoum',\n 'Africa/Lagos',\n 'Africa/Maputo',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fortaleza',\n 'America/Fort_Nelson',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Johns',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Helsinki',\n 'Europe/Istanbul',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n]\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withKeys as _withKeys, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47ea2903\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"tz-dropdown\" }\nconst _hoisted_2 = [\"value\", \"disabled\", \"onKeydown\"]\nconst _hoisted_3 = [\"onClick\", \"onMouseover\", \"autofocus\"]\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import { timeZones } from '@/utils/timezone'\n\n interface Props {\n input: string\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimezoneDropdown',\n props: {\n input: null,\n disabled: { type: Boolean, default: false }\n },\n emits: ['updateTimezone'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { input: string, disabled: boolean }\n\n \n\n \n\n const { input, disabled } = toRefs(props)\n const timezone: Ref = ref(props.input)\n const isOpen: Ref = ref(false)\n const tzList: Ref = ref(null)\n const focusItemIndex: Ref = ref(0)\n\n function matchTimezone(t: string): RegExpMatchArray | null {\n return t.toLowerCase().match(timezone.value.toLowerCase())\n }\n function onMouseOver(index: number) {\n focusItemIndex.value = index\n }\n function onUpdateTimezone(value: string) {\n timezone.value = value\n isOpen.value = false\n emit('updateTimezone', value)\n }\n function onEnter(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n if (tzList.value?.firstElementChild?.innerHTML) {\n onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)\n }\n }\n function openDropdown(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n isOpen.value = true\n timezone.value = event.target.value.trim()\n }\n\n watch(\n () => props.input,\n (value) => {\n timezone.value = value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"tz-dropdown-input\",\n id: \"timezone\",\n name: \"timezone\",\n value: timezone.value,\n disabled: _unref(disabled),\n required: \"\",\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(($event: any) => (onUpdateTimezone(_unref(input))), [\"esc\"])),\n _withKeys(onEnter, [\"enter\"])\n ],\n onInput: openDropdown\n }, null, 40, _hoisted_2),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", {\n key: 0,\n class: \"tz-dropdown-list\",\n ref_key: \"tzList\",\n ref: tzList\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(timeZones).filter((t) => matchTimezone(t)), (tz, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: tz,\n class: _normalizeClass([\"tz-dropdown-item\", { focus: index === focusItemIndex.value }]),\n onClick: ($event: any) => (onUpdateTimezone(tz)),\n onMouseover: ($event: any) => (onMouseOver(index)),\n autofocus: index === focusItemIndex.value\n }, _toDisplayString(tz), 43, _hoisted_3))\n }), 128))\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./TimezoneDropdown.vue?vue&type=style&index=0&id=47ea2903&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47ea2903\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f7548012\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-items\" }\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-items\" }\nconst _hoisted_8 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_9 = { class: \"checkboxes-label\" }\nconst _hoisted_10 = { class: \"checkboxes\" }\nconst _hoisted_11 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_12 = { class: \"checkbox-label\" }\nconst _hoisted_13 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_14 = { class: \"checkboxes-label\" }\nconst _hoisted_15 = { class: \"checkboxes\" }\nconst _hoisted_16 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_17 = { class: \"checkbox-label\" }\nconst _hoisted_18 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_19 = { class: \"checkboxes-label\" }\nconst _hoisted_20 = { class: \"checkboxes\" }\nconst _hoisted_21 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_22 = { class: \"checkbox-label\" }\nconst _hoisted_23 = { class: \"form-buttons\" }\nconst _hoisted_24 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserPreferencesPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferencesEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n\n const userForm: IUserPreferencesPayload = reactive({\n display_ascent: true,\n imperial_units: false,\n language: '',\n timezone: 'Europe/Paris',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'SUNDAY',\n value: false,\n },\n {\n label: 'MONDAY',\n value: true,\n },\n ]\n const imperialUnits = [\n {\n label: 'METRIC',\n value: false,\n },\n {\n label: 'IMPERIAL',\n value: true,\n },\n ]\n const ascentData = [\n {\n label: 'DISPLAYED',\n value: true,\n },\n {\n label: 'HIDDEN',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IAuthUserProfile) {\n userForm.display_ascent = user.display_ascent\n userForm.imperial_units = user.imperial_units ? user.imperial_units : false\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES, userForm)\n }\n function updateTZ(value: string) {\n userForm.timezone = value\n }\n function updateAscentDisplay(value: boolean) {\n userForm.display_ascent = value\n }\n function updateImperialUnit(value: boolean) {\n userForm.imperial_units = value\n }\n function updateWeekM(value: boolean) {\n userForm.weekm = value\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.language) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableLanguages), (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_6))\n }), 128))\n ], 8, _hoisted_5), [\n [_vModelSelect, userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _createVNode(TimezoneDropdown, {\n input: userForm.timezone,\n disabled: _unref(loading),\n onUpdateTimezone: updateTZ\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')), 1),\n _createElementVNode(\"div\", _hoisted_10, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(weekStart, (start) => {\n return _createElementVNode(\"label\", {\n key: start.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: start.label,\n name: start.label,\n checked: start.value === userForm.weekm,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateWeekM(start.value))\n }, null, 40, _hoisted_11),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')), 1),\n _createElementVNode(\"div\", _hoisted_15, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(imperialUnits, (unit) => {\n return _createElementVNode(\"label\", {\n key: unit.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: unit.label,\n name: unit.label,\n checked: unit.value === userForm.imperial_units,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateImperialUnit(unit.value))\n }, null, 40, _hoisted_16),\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(`user.PROFILE.UNITS.${unit.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')), 1),\n _createElementVNode(\"div\", _hoisted_20, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ascentData, (status) => {\n return _createElementVNode(\"label\", {\n key: status.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: status.label,\n name: status.label,\n checked: status.value === userForm.display_ascent,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateAscentDisplay(status.value))\n }, null, 40, _hoisted_21),\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t(`common.${status.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", _hoisted_24, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPreferencesEdition.vue?vue&type=style&index=0&id=f7548012&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f7548012\"]])\n\nexport default __exports__","export const oauth2_scopes = [\n 'profile:read',\n 'profile:write',\n 'users:read',\n 'users:write',\n 'workouts:read',\n 'workouts:write',\n]\n\nexport const admin_oauth2_scopes = ['application:write']\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0657ee77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"new-oauth2-app\" }\nconst _hoisted_2 = { id: \"new-oauth2-title\" }\nconst _hoisted_3 = { id: \"apps-form\" }\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = { class: \"form-items\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = { for: \"app-name\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = { for: \"app-description\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = { for: \"app-url\" }\nconst _hoisted_12 = { class: \"form-item\" }\nconst _hoisted_13 = { for: \"app-redirect-uri\" }\nconst _hoisted_14 = { class: \"form-item-scope\" }\nconst _hoisted_15 = { class: \"form-item-scope-label\" }\nconst _hoisted_16 = { class: \"scope-label\" }\nconst _hoisted_17 = [\"name\", \"checked\", \"onChange\"]\nconst _hoisted_18 = [\"innerHTML\"]\nconst _hoisted_19 = { class: \"form-buttons\" }\nconst _hoisted_20 = [\"disabled\"]\n\nimport { computed, reactive } from 'vue'\n\n import { OAUTH2_STORE } from '@/store/constants'\n import { IOAuth2ClientPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { admin_oauth2_scopes, oauth2_scopes } from '@/utils/oauth'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddUserApp',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n const appForm = reactive({\n client_name: '',\n client_uri: '',\n client_description: '',\n redirect_uri: '',\n })\n const scopes: string[] = reactive([])\n const filtered_scopes = computed(() =>\n getScopes(props.authUser, admin_oauth2_scopes, oauth2_scopes)\n )\n\n function createApp() {\n const payload: IOAuth2ClientPayload = {\n client_name: appForm.client_name,\n client_description: appForm.client_description,\n client_uri: appForm.client_uri,\n redirect_uris: [appForm.redirect_uri],\n scope: scopes.sort().join(' '),\n }\n store.dispatch(OAUTH2_STORE.ACTIONS.CREATE_CLIENT, payload)\n }\n function updateDescription(value: string) {\n appForm.client_description = value\n }\n function updateScopes(scope: string) {\n const index = scopes.indexOf(scope)\n if (index > -1) {\n scopes.splice(index, 1)\n } else {\n scopes.push(scope)\n }\n }\n function getScopes(\n authUser: IAuthUserProfile,\n admin_scopes: string[],\n scopes: string[]\n ) {\n const filtered_scopes = [...scopes]\n if (authUser.admin) {\n filtered_scopes.push(...admin_scopes)\n }\n return filtered_scopes.sort()\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.ADD_A_NEW_APP')), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(createApp, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-name\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appForm.client_name) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_name]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')), 1),\n _createVNode(_component_CustomTextArea, {\n name: \"app-description\",\n charLimit: 200,\n input: appForm.description,\n onUpdateValue: updateDescription\n }, null, 8, [\"input\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-url\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appForm.client_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-redirect-uri\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appForm.redirect_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.redirect_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \"* \", 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filtered_scopes), (scope) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"form-item-scope-checkboxes\",\n key: scope\n }, [\n _createElementVNode(\"label\", _hoisted_16, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n name: scope,\n checked: scopes.includes(scope),\n onChange: ($event: any) => (updateScopes(scope))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"p\", {\n class: \"scope-description\",\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_18)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: scopes.length === 0\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_20),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => _ctx.$router.push('/profile/apps'), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AddUserApp.vue?vue&type=style&index=0&id=0657ee77&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0657ee77\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b2fe9ed\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"authorize-oauth2-app\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { id: \"authorize-oauth2-title\" }\nconst _hoisted_4 = { class: \"oauth2-access description-list\" }\nconst _hoisted_5 = { class: \"client-scope\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"authorize-oauth2-buttons\" }\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = { class: \"no-app\" }\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AuthorizeUserApp',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadApp())\n\n function loadApp() {\n if (route.query.client_id && typeof route.query.client_id === 'string') {\n store.dispatch(\n OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID,\n route.query.client_id\n )\n }\n }\n\n function authorizeApp() {\n store.dispatch(OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT, {\n client_id: `${route.query.client_id}`,\n redirect_uri: `${route.query.redirect_uri}`,\n response_type: `${route.query.response_type}`,\n scope: `${route.query.scope}`,\n state: `${route.query.state ? route.query.state : ''}`,\n code_challenge: `${\n route.query.code_challenge ? route.query.code_challenge : ''\n }`,\n code_challenge_method: `${\n route.query.code_challenge_method\n ? route.query.code_challenge_method\n : ''\n }`,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: \"oauth2.AUTHORIZE_APP\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: _unref(client).id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(client).name), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]),\n _: 1\n })\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('oauth2.APP_REQUESTING_ACCESS')), 1),\n _createElementVNode(\"dl\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: scope }, [\n _createElementVNode(\"dt\", _hoisted_5, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"dd\", {\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_6)\n ], 64))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: authorizeApp\n }, _toDisplayString(_ctx.$t('buttons.AUTHORIZE')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"p\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AuthorizeUserApp.vue?vue&type=style&index=0&id=3b2fe9ed&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b2fe9ed\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"oauth2-apps\" }\n\nimport { onUnmounted, toRefs } from 'vue'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENTS, [])\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { authUser: _unref(user) }, null, 8, [\"authUser\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-00697fc9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"oauth2-app\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"title\"]\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"app-secret\"\n}\nconst _hoisted_7 = [\"title\"]\nconst _hoisted_8 = { class: \"client-scopes\" }\nconst _hoisted_9 = { class: \"app-buttons\" }\nconst _hoisted_10 = { key: 2 }\nconst _hoisted_11 = { class: \"no-app\" }\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n capitalize,\n computed,\n onBeforeMount,\n toRefs,\n ref,\n onUnmounted,\n withDefaults,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n afterCreation?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserApp',\n props: {\n authUser: null,\n afterCreation: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, afterCreation: boolean }\n\n \n const route = useRoute()\n const store = useStore()\n\n const { afterCreation, authUser } = toRefs(props)\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const revocationSuccessful: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]\n )\n const displayModal: Ref = ref(false)\n const messageToDisplay: Ref = ref(null)\n const idCopied: Ref = ref(false)\n const secretCopied: Ref = ref(false)\n const clipboardSupport: Ref = ref(false)\n\n onBeforeMount(() => {\n loadClient()\n if (navigator.clipboard) {\n clipboardSupport.value = true\n }\n })\n\n function loadClient() {\n // after creation, client is already in store\n if (\n !afterCreation.value &&\n route.params.id &&\n typeof route.params.id === 'string'\n ) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID, +route.params.id)\n }\n }\n function updateMessageToDisplay(forDelete: boolean) {\n messageToDisplay.value = forDelete\n ? 'oauth2.APP_DELETION_CONFIRMATION'\n : 'oauth2.TOKENS_REVOCATION_CONFIRMATION'\n updateDisplayModal(true)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (!value) {\n messageToDisplay.value = null\n }\n }\n function confirmAction(clientId: number) {\n if (messageToDisplay.value === 'oauth2.APP_DELETION_CONFIRMATION') {\n store.dispatch(OAUTH2_STORE.ACTIONS.DELETE_CLIENT, clientId)\n } else {\n store.dispatch(OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS, clientId)\n }\n }\n function copyIdToClipboard() {\n navigator.clipboard.writeText(client.value.client_id)\n idCopied.value = true\n secretCopied.value = false\n setTimeout(() => {\n idCopied.value = false\n }, 3000)\n }\n function copySecretToClipboard() {\n if (client.value.client_secret) {\n navigator.clipboard.writeText(client.value.client_secret)\n secretCopied.value = true\n idCopied.value = false\n setTimeout(() => {\n secretCopied.value = false\n }, 3000)\n }\n }\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n })\n\n watch(\n () => revocationSuccessful.value,\n (newValue) => {\n if (newValue) {\n updateDisplayModal(false)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t(messageToDisplay.value),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (confirmAction(_unref(client).id))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(client) && _unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(afterCreation) || _unref(revocationSuccessful))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n _unref(afterCreation)\n ? 'oauth2.APP_CREATED_SUCCESSFULLY'\n : 'oauth2.TOKENS_REVOKED'\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_ID')) + \":\", 1),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_unref(client).client_id) + \" \", 1),\n (_unref(afterCreation) && clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${idCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copyIdToClipboard\n }, null, 10, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dt\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_SECRET')) + \": \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dd\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_unref(client).client_secret) + \" \", 1),\n (clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${secretCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copySecretToClipboard\n }, null, 10, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dt\", null, _toDisplayString(capitalize(_ctx.$t('oauth2.APP.ISSUE_AT'))) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(_unref(client).issued_at, _unref(authUser).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')) + \":\", 1),\n _createElementVNode(\"dd\", {\n class: _normalizeClass({ 'no-description': !_unref(client).client_description })\n }, _toDisplayString(_unref(client).client_description\n ? _unref(client).client_description\n : _ctx.$t('oauth2.NO_DESCRIPTION')), 3),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).website), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).redirect_uris.length > 0 ? _unref(client).redirect_uris[0] : ''), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: \"client-scope\",\n key: scope\n }, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateMessageToDisplay(false)))\n }, _toDisplayString(_ctx.$t('oauth2.REVOKE_ALL_TOKENS')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateMessageToDisplay(true)))\n }, _toDisplayString(_ctx.$t('oauth2.DELETE_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserApp.vue?vue&type=style&index=0&id=00697fc9&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-00697fc9\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a5c2cdde\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"oauth2-apps-list\" }\nconst _hoisted_2 = { class: \"apps-list\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"app-issued-at\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"no-apps\"\n}\nconst _hoisted_6 = { class: \"app-list-buttons\" }\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, onBeforeMount, toRefs, watch } from 'vue'\n import { LocationQuery, useRoute } from 'vue-router'\n\n import Pagination from '@/components/Common/Pagination.vue'\n import { OAUTH2_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { IOAuth2Client, IOauth2ClientsPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { defaultPage, getNumberQueryValue } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAppsList',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n const route = useRoute()\n\n const { authUser } = toRefs(props)\n const clients: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS]\n )\n\n const pagination: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]\n )\n let query: IOauth2ClientsPayload = getClientsQuery(route.query)\n\n onBeforeMount(() => {\n loadClients(query)\n })\n\n function getClientsQuery(newQuery: LocationQuery): IOauth2ClientsPayload {\n const clientsQuery: IOauth2ClientsPayload = {}\n if (newQuery.page) {\n clientsQuery.page = getNumberQueryValue(newQuery.page, defaultPage)\n }\n return clientsQuery\n }\n function loadClients(payload: IOauth2ClientsPayload) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS, payload)\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getClientsQuery(newQuery)\n loadClients(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.APPS_LIST')), 1),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(clients), (client) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: client.client_id\n }, [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: client.id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(client.name), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('oauth2.APP.ISSUE_AT')) + \" \" + _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(client.issued_at, _unref(authUser).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.NO_APPS')), 1)),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 2,\n pagination: _unref(pagination),\n path: \"/profile/apps\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps/new')))\n }, _toDisplayString(_ctx.$t('oauth2.NEW_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAppsList.vue?vue&type=style&index=0&id=a5c2cdde&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a5c2cdde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e52489\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-sport-preferences\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"responsive-table\"\n}\nconst _hoisted_3 = { class: \"mobile-display\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"profile-buttons mobile-display\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_6 = { class: \"text-left\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"disabled-message\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"fa fa-refresh fa-spin fa-fw\"\n}\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = [\"checked\"]\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = {\n key: 0,\n class: \"action-buttons\"\n}\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = {\n key: 1,\n class: \"edition-buttons\"\n}\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\", \"onClick\"]\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_27 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { ComputedRef, computed, inject, reactive, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile, IUserSportPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n user: IUserProfile\n isEdition: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserSportPreferences',\n props: {\n user: null,\n isEdition: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n isEdition: boolean\n }\n\n \n\n const store = useStore()\n const { t } = useI18n()\n\n const { isEdition, user } = toRefs(props)\n const defaultColor = '#838383'\n const sportColors: Record | undefined = inject('sportColors')\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t, 'is_active', user.value.sports_list)\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const sportPayload: IUserSportPreferencesPayload = reactive({\n sport_id: 0,\n color: null,\n is_active: true,\n stopped_speed_threshold: 1,\n })\n\n function updateSportInEdition(sport: ISport | null) {\n if (sport !== null) {\n sportPayload.sport_id = sport.id\n sportPayload.color = sport.color\n ? sport.color\n : sportColors\n ? sportColors[sport.label]\n : defaultColor\n sportPayload.is_active = sport.is_active_for_user\n sportPayload.stopped_speed_threshold = sport.stopped_speed_threshold\n } else {\n resetSportPayload()\n }\n }\n function isSportInEdition(sportId: number) {\n return sportPayload.sport_id === sportId\n }\n function updateColor(event: Event & { target: HTMLInputElement }) {\n sportPayload.color = event.target.value\n }\n function updateThreshold(event: Event & { target: HTMLInputElement }) {\n sportPayload.stopped_speed_threshold = parseFloat(event.target.value)\n }\n function updateIsActive(event: Event & { target: HTMLInputElement }) {\n sportPayload.is_active = event.target.checked\n }\n function resetSportPayload() {\n sportPayload.sport_id = 0\n sportPayload.color = null\n sportPayload.is_active = true\n sportPayload.stopped_speed_threshold = 1\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n }\n function updateSport(event: Event) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,\n sportPayload\n )\n }\n function resetSport(event: Event, sportId: number) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES,\n sportId\n )\n }\n\n watch(\n () => loading.value,\n (newIsLoading) => {\n if (!newIsLoading && !errorMessages.value) {\n resetSportPayload()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.SPORT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"sport-color\",\n type: \"color\",\n value: sportPayload.color,\n onInput: updateColor\n }, null, 40, _hoisted_9))\n : (_openBlock(), _createBlock(_component_SportImage, {\n key: 1,\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color ? sport.color : _unref(sportColors)[sport.label]\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n ]),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"sport-label\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel) + \" \", 1),\n (!sport.is_active)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (\" + _toDisplayString(_ctx.$t('user.PROFILE.SPORT.DISABLED_BY_ADMIN')) + \") \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(loading) && isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages) && sportPayload.sport_id === sport.id)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${\n _unref(user).sports_list.includes(sport.id) ? '-check' : ''\n }`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n type: \"checkbox\",\n checked: sport.is_active_for_user,\n onChange: updateIsActive\n }, null, 40, _hoisted_15))\n : (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(`fa fa${sport.is_active_for_user ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2))\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"threshold-input\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: sportPayload.stopped_speed_threshold,\n onInput: updateThreshold\n }, null, 40, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(sport.stopped_speed_threshold), 1))\n ], 2),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1),\n (sportPayload.sport_id === 0)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: ($event: any) => (updateSportInEdition(sport))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 9, _hoisted_21))\n : _createCommentVNode(\"\", true),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: updateSport\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_23),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: (e) => resetSport(e, sport.id)\n }, _toDisplayString(_ctx.$t('buttons.RESET')), 9, _hoisted_24),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateSportInEdition(null)))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserSportPreferences.vue?vue&type=style&index=0&id=74e52489&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e52489\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74257266\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"about-text\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-book fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-github fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = {\n href: \"https://github.com/SamR1/FitTrackee\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-balance-scale fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://choosealicense.com/licenses/agpl-3.0/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}, \" AGPLv3 \", -1))\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-envelope-o fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\"href\"]\n\nimport { ComputedRef, computed, capitalize } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'About',\n setup(__props) {\n\n const store = useStore()\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('about.FITTRACKEE_DESCRIPTION')\n }, null, 8, _hoisted_2),\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", _hoisted_4, _toDisplayString(capitalize(_ctx.$t('common.DOCUMENTATION'))), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createElementVNode(\"a\", _hoisted_6, _toDisplayString(_ctx.$t('about.SOURCE_CODE')), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_7,\n _createVNode(_component_i18n_t, { keypath: \"about.FITTRACKEE_LICENSE\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n (_unref(appConfig).admin_contact)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(appConfig).admin_contact}`\n }, _toDisplayString(_ctx.$t('about.CONTACT_ADMIN')), 9, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./About.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./About.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./About.vue?vue&type=style&index=0&id=74257266&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74257266\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./BikePic.vue?vue&type=template&id=795f7f5f&scoped=true\"\nconst script = {}\n\nimport \"./BikePic.vue?vue&type=style&index=0&id=795f7f5f&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795f7f5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bffb50d0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"about\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub about-details\" }\n\nimport About from '@/components/About.vue'\n import BikePic from '@/components/BikePic.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AboutView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(About)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=bffb50d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bffb50d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c9d1f10c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"timeline-workout\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"workout-user-date\" }\nconst _hoisted_4 = { class: \"workout-user\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"no-map\"\n}\nconst _hoisted_8 = { class: \"img\" }\nconst _hoisted_9 = { class: \"data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"data elevation\"\n}\nconst _hoisted_15 = [\"alt\"]\nconst _hoisted_16 = { class: \"data-values\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"/ \")\nconst _hoisted_18 = {\n key: 1,\n class: \"data altitude\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_20 = { class: \"data-values\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\" +\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"/- \")\n\nimport { Locale, format, formatDistance } from 'date-fns'\n import { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import StaticMap from '@/components/Common/StaticMap.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n user: IUserProfile\n useImperialUnits: boolean\n workout?: IWorkout\n sport?: ISport\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCard',\n props: {\n user: null,\n useImperialUnits: { type: Boolean },\n workout: { default: () => ({} as IWorkout) },\n sport: { default: () => ({} as ISport) }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, useImperialUnits: boolean, workout: IWorkout, sport: ISport }\n\n \n\n const store = useStore()\n\n const { user, workout, sport, useImperialUnits } = toRefs(props)\n const locale: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n (_unref(user).username)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-user-name\",\n to: {\n name: 'User',\n params: { username: _unref(user).username },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(user).username), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-title\",\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(workout).title), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true),\n (_unref(workout).workout_date && _unref(user))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"workout-date\",\n title: \n _unref(format)(\n _unref(getDateWithTZ)(_unref(workout).workout_date, _unref(user).timezone),\n 'dd/MM/yyyy HH:mm'\n )\n \n }, _toDisplayString(_unref(formatDistance)(new Date(_unref(workout).workout_date), new Date(), {\n addSuffix: true,\n locale: _unref(locale),\n })), 9, _hoisted_5))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-map\", { 'no-cursor': !_unref(workout) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_unref(workout).with_gpx)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: _unref(workout)\n }, null, 8, [\"workout\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-data\", { 'without-gpx': _unref(workout) && !_unref(workout).with_gpx }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(sport).label)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_unref(workout).moving), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).distance,\n digits: 3,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_15),\n _createElementVNode(\"div\", _hoisted_16, [\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).min_alt,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_17,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).max_alt,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _hoisted_19,\n _createElementVNode(\"div\", _hoisted_20, [\n _hoisted_21,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).ascent,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_22,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCard.vue?vue&type=style&index=0&id=c9d1f10c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c9d1f10c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35567bf2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"timeline\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = {\n key: 1,\n class: \"more-workouts\"\n}\n\nimport { ComputedRef, computed, ref, onBeforeMount, toRefs } from 'vue'\n\n import WorkoutCard from '@/components/Workout/WorkoutCard.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Timeline',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n }\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const page = ref(1)\n const per_page = 5\n const initWorkoutsCount =\n props.user.nb_workouts >= per_page ? per_page : props.user.nb_workouts\n onBeforeMount(() => loadWorkouts())\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]\n )\n const moreWorkoutsExist: ComputedRef = computed(() =>\n workouts.value.length > 0\n ? workouts.value[workouts.value.length - 1].previous_workout !== null\n : false\n )\n\n function loadWorkouts() {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n function loadMoreWorkouts() {\n page.value += 1\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.LATEST_WORKOUTS')), 1),\n (_unref(user).nb_workouts > 0 && _unref(workouts).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList([...Array(_unref(initWorkoutsCount)).keys()], (index) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: index\n }, null, 8, [\"user\", \"useImperialUnits\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n workout: workout,\n sport: \n _unref(workouts).length > 0\n ? _unref(sports).filter((s) => s.id === workout.sport_id)[0]\n : null\n ,\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: workout.id\n }, null, 8, [\"workout\", \"sport\", \"user\", \"useImperialUnits\"]))\n }), 128)),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(moreWorkoutsExist))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", { onClick: loadMoreWorkouts }, _toDisplayString(_ctx.$t('workouts.LOAD_MORE_WORKOUT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}\n}\n\n})","import script from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Timeline.vue?vue&type=style&index=0&id=35567bf2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35567bf2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { toRefs } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n interface Props {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkout',\n props: {\n displayHARecord: { type: Boolean },\n workout: null,\n sportLabel: null,\n sportColor: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n\n \n\n const { displayHARecord, workout, sportLabel, sportColor } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-workout\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.$router.push({ name: 'Workout', params: { workoutId: _unref(workout).id } })\n ))\n }, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sportLabel),\n title: _unref(workout).title,\n color: _unref(sportColor)\n }, null, 8, [\"sport-label\", \"title\", \"color\"]),\n _createElementVNode(\"sup\", null, [\n (_unref(workout).records.length > 0)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\",\n title: \n _unref(workout).records\n .filter((record) =>\n _unref(displayHARecord) ? true : record.record_type !== 'HA'\n )\n .map((record) => ` ${_ctx.$t(`workouts.RECORD_${record.record_type}`)}`)\n \n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkout.vue?vue&type=style&index=0&id=331e1c8b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"donut-chart\" }\nconst _hoisted_2 = {\n height: \"34\",\n width: \"34\",\n viewBox: \"0 0 34 34\"\n}\nconst _hoisted_3 = [\"stroke\", \"stroke-dashoffset\", \"transform\"]\n\nimport { toRefs } from 'vue'\n\n interface Props {\n colors: Record\n datasets: Record>\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'DonutChart',\n props: {\n colors: null,\n datasets: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n }\n\n \n\n const { colors, datasets } = toRefs(props)\n let angleOffset = -90\n const cx = 16\n const cy = 16\n const radius = 14\n const circumference = 2 * Math.PI * radius\n\n function calculateStrokeDashOffset(\n percentage: number,\n circumference: number\n ): number {\n return circumference - percentage * circumference\n }\n function returnCircleTransformValue(\n index: number,\n percentage: number\n ): string {\n const rotation = `rotate(${angleOffset}, ${cx}, ${cy})`\n angleOffset = percentage * 360 + angleOffset\n return rotation\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries(_unref(datasets)), (data, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n _createElementVNode(\"circle\", {\n cx: cx,\n cy: cy,\n r: radius,\n fill: \"transparent\",\n stroke: _unref(colors)[+data[0]],\n \"stroke-dashoffset\": \n calculateStrokeDashOffset(data[1].percentage, circumference)\n ,\n \"stroke-dasharray\": circumference,\n \"stroke-width\": \"3\",\n \"stroke-opacity\": \"0.8\",\n transform: returnCircleTransformValue(index, data[1].percentage)\n }, null, 8, _hoisted_3)\n ]))\n }), 128))\n ]))\n ]))\n}\n}\n\n})","import script from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52d4310a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"calendar-workouts-chart\" }\nconst _hoisted_2 = { class: \"workouts-count\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-pane\"\n}\nconst _hoisted_4 = { class: \"more-workouts\" }\n\nimport { ref, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import DonutChart from '@/components/Dashboard/UserCalendar/DonutChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n\n interface Props {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkoutsChart',\n props: {\n colors: null,\n datasets: null,\n sports: null,\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n\n \n\n const { colors, datasets, sports, workouts } = toRefs(props)\n const isHidden = ref(true)\n\n function togglePane(event: Event & { target: HTMLElement }) {\n event.stopPropagation()\n isHidden.value = !isHidden.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"workouts-chart\",\n onClick: togglePane\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(workouts).length), 1),\n _createVNode(DonutChart, {\n datasets: _unref(datasets),\n colors: _unref(colors)\n }, null, 8, [\"datasets\", \"colors\"])\n ]),\n (!isHidden.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"i\", {\n class: \"fa fa-times calendar-more\",\n \"aria-hidden\": \"true\",\n onClick: togglePane\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ])), [\n [_directive_click_outside, togglePane]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkoutsChart.vue?vue&type=style&index=0&id=52d4310a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52d4310a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-workouts\" }\nconst _hoisted_2 = { class: \"desktop-display\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-display\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"donut-display\"\n}\nconst _hoisted_5 = { class: \"mobile-display\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"donut-display\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import CalendarWorkoutsChart from '@/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel, sportIdColors } from '@/utils/sports'\n import { getDonutDatasets } from '@/utils/workouts'\n\n interface Props {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkouts',\n props: {\n displayHARecord: { type: Boolean },\n workouts: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n\n \n\n const { displayHARecord, workouts, sports } = toRefs(props)\n const chartDatasets = computed(() => getDonutDatasets(props.workouts))\n const colors = computed(() => sportIdColors(props.sports))\n const displayedWorkoutCount = 6\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workouts).length <= displayedWorkoutCount)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts).slice(0, displayedWorkoutCount), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n displayHARecord: _unref(displayHARecord),\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"displayHARecord\", \"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkouts.vue?vue&type=style&index=0&id=5aab7455&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-cells\" }\nconst _hoisted_2 = { class: \"calendar-cell-day\" }\n\nimport { addDays, format, isSameDay, isSameMonth, isToday } from 'date-fns'\n import { Ref, ref, toRefs, watch, onMounted } from 'vue'\n\n import CalendarWorkouts from '@/components/Dashboard/UserCalendar/CalendarWorkouts.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarCells',\n props: {\n currentDay: null,\n displayHARecord: { type: Boolean },\n endDate: null,\n sports: null,\n startDate: null,\n timezone: null,\n weekStartingMonday: { type: Boolean },\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n\n \n\n const {\n currentDay,\n displayHARecord,\n endDate,\n sports,\n startDate,\n timezone,\n weekStartingMonday,\n workouts,\n } = toRefs(props)\n const rows: Ref = ref([])\n\n onMounted(() => getDays())\n\n function getDays() {\n rows.value = []\n let day = startDate.value\n while (day <= endDate.value) {\n const days: Date[] = []\n for (let i = 0; i < 7; i++) {\n days.push(day)\n day = addDays(day, 1)\n }\n rows.value.push(days)\n }\n }\n function isWeekEnd(day: number): boolean {\n return weekStartingMonday.value\n ? [5, 6].includes(day)\n : [0, 6].includes(day)\n }\n function filterWorkouts(day: Date, workouts: IWorkout[]) {\n if (workouts) {\n return workouts\n .filter((workout) =>\n isSameDay(getDateWithTZ(workout.workout_date, timezone.value), day)\n )\n .reverse()\n }\n return []\n }\n\n watch(\n () => props.currentDay,\n () => getDays()\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-row\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row, (day, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"calendar-cell\", {\n 'disabled-cell': !_unref(isSameMonth)(day, _unref(currentDay)),\n 'week-end': isWeekEnd(i),\n today: _unref(isToday)(day),\n }]),\n key: i\n }, [\n _createVNode(CalendarWorkouts, {\n workouts: filterWorkouts(day, _unref(workouts)),\n sports: _unref(sports),\n displayHARecord: _unref(displayHARecord)\n }, null, 8, [\"workouts\", \"sports\", \"displayHARecord\"]),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(format)(day, 'd')), 1)\n ], 2))\n }), 128))\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarCells.vue?vue&type=style&index=0&id=34b99f0e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-days\" }\n\nimport { Locale, format, addDays } from 'date-fns'\n\n interface Props {\n startDate: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarDays',\n props: {\n startDate: null,\n localeOptions: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n startDate: Date\n localeOptions: Locale\n }\n\n \n\n const days = []\n for (let i = 0; i < 7; i++) {\n days.push(addDays(props.startDate, i))\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(days, (day, index) => {\n return _createElementVNode(\"div\", {\n class: \"calendar-day\",\n key: index\n }, _toDisplayString(_unref(format)(day, 'EEE', { locale: __props.localeOptions })), 1)\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarDays.vue?vue&type=style&index=0&id=4f3dc99e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-header\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { class: \"calendar-month\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { Locale, format } from 'date-fns'\n import { toRefs } from 'vue'\n\n interface Props {\n day: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarHeader',\n props: {\n day: null,\n localeOptions: null\n },\n emits: ['displayNextMonth', 'displayPreviousMonth'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n day: Date\n localeOptions: Locale\n }\n\n \n\n \n\n const { day, localeOptions } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-left\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('displayPreviousMonth')))\n }, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(format)(_unref(day), 'MMM yyyy', { locale: _unref(localeOptions) })), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-right\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('displayNextMonth')))\n }, _hoisted_6)\n ]))\n}\n}\n\n})","import script from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarHeader.vue?vue&type=style&index=0&id=79a65a70&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-calendar\" }\nconst _hoisted_2 = { class: \"calendar-card box\" }\n\nimport { Locale, addMonths, format, subMonths } from 'date-fns'\n import { ComputedRef, computed, ref, toRefs, onBeforeMount } from 'vue'\n\n import CalendarCells from '@/components/Dashboard/UserCalendar/CalendarCells.vue'\n import CalendarDays from '@/components/Dashboard/UserCalendar/CalendarDays.vue'\n import CalendarHeader from '@/components/Dashboard/UserCalendar/CalendarHeader.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getCalendarStartAndEnd } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const dateFormat = 'yyyy-MM-dd'\n const day = ref(new Date())\n const calendarDates = ref(getCalendarStartAndEnd(day.value, props.user.weekm))\n const calendarWorkouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]\n )\n const localeOptions: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n onBeforeMount(() => getCalendarWorkouts())\n\n function getCalendarWorkouts() {\n calendarDates.value = getCalendarStartAndEnd(day.value, props.user.weekm)\n const apiParams: TWorkoutsPayload = {\n from: format(calendarDates.value.start, dateFormat),\n to: format(calendarDates.value.end, dateFormat),\n page: 1,\n per_page: 100,\n ...defaultOrder,\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS, apiParams)\n }\n function displayNextMonth() {\n day.value = addMonths(day.value, 1)\n getCalendarWorkouts()\n }\n function displayPreviousMonth() {\n day.value = subMonths(day.value, 1)\n getCalendarWorkouts()\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(CalendarHeader, {\n day: day.value,\n \"locale-options\": _unref(localeOptions),\n onDisplayNextMonth: displayNextMonth,\n onDisplayPreviousMonth: displayPreviousMonth\n }, null, 8, [\"day\", \"locale-options\"]),\n _createVNode(CalendarDays, {\n \"start-date\": calendarDates.value.start,\n \"locale-options\": _unref(localeOptions)\n }, null, 8, [\"start-date\", \"locale-options\"]),\n _createVNode(CalendarCells, {\n currentDay: day.value,\n displayHARecord: _unref(user).display_ascent,\n \"end-date\": calendarDates.value.end,\n sports: _unref(sports),\n \"start-date\": calendarDates.value.start,\n timezone: _unref(user).timezone,\n workouts: _unref(calendarWorkouts),\n weekStartingMonday: _unref(user).weekm\n }, null, 8, [\"currentDay\", \"displayHARecord\", \"end-date\", \"sports\", \"start-date\", \"timezone\", \"workouts\", \"weekStartingMonday\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3e7444d9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1bcddc12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-month-stats\" }\n\nimport { endOfMonth, startOfMonth } from 'date-fns'\n import { toRefs } from 'vue'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserMonthStats',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n }\n\n \n\n const { sports, user } = toRefs(props)\n const date = new Date()\n const chartParams = {\n duration: 'week',\n start: startOfMonth(date),\n end: endOfMonth(date),\n }\n const selectedSportIds = props.sports.map((sport) => sport.id)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.THIS_MONTH')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n \"chart-params\": chartParams,\n \"displayed-sport-ids\": _unref(selectedSportIds),\n \"hide-chart-if-no-data\": true\n }, null, 8, [\"sports\", \"user\", \"displayed-sport-ids\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserMonthStats.vue?vue&type=style&index=0&id=1bcddc12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bcddc12\"]])\n\nexport default __exports__","import { ITranslatedSport } from '@/types/sports'\nimport { TUnit } from '@/types/units'\nimport { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\nimport { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\nimport { convertDistance, units } from '@/utils/units'\n\nexport const formatRecord = (\n record: IRecord,\n tz: string,\n useImperialUnits: boolean\n): Record => {\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = useImperialUnits\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = useImperialUnits\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 2\n )} ${distanceUnitTo}/h`\n break\n case 'FD':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 3\n )} ${distanceUnitTo}`\n break\n case 'HA':\n value = `${convertDistance(\n +record.value,\n ascentUnitFrom,\n ascentUnitTo,\n 2\n )} ${ascentUnitTo}`\n break\n case 'LD':\n value = record.value\n break\n default:\n throw new Error(\n `Invalid record type, expected: \"AS\", \"FD\", \"HA\", \"LD\", \"MD\", got: \"${record.record_type}\"`\n )\n }\n return {\n workout_date: formatWorkoutDate(getDateWithTZ(record.workout_date, tz))\n .workout_date,\n workout_id: record.workout_id,\n id: record.id,\n record_type: record.record_type,\n value: value,\n }\n}\n\nexport const sortRecords = (a: ICardRecord, b: ICardRecord): number => {\n const recordALabel = a.label.toLowerCase()\n const recordBLabel = b.label.toLowerCase()\n return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0\n}\n\nexport const getRecordsBySports = (\n records: IRecord[],\n translatedSports: ITranslatedSport[],\n tz: string,\n useImperialUnits: boolean,\n display_ascent: boolean\n): IRecordsBySports =>\n records\n .filter((r) => (display_ascent ? true : r.record_type !== 'HA'))\n .reduce((sportList: IRecordsBySports, record) => {\n const sport = translatedSports.find((s) => s.id === record.sport_id)\n if (sport && sport.label) {\n if (sportList[sport.translatedLabel] === void 0) {\n sportList[sport.translatedLabel] = {\n label: sport.label,\n color: sport.color,\n records: [],\n }\n }\n sportList[sport.translatedLabel].records.push(\n formatRecord(record, tz, useImperialUnits)\n )\n }\n return sportList\n }, {})\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b5480ab0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"records-card\" }\nconst _hoisted_2 = { class: \"record-type\" }\nconst _hoisted_3 = { class: \"record-value\" }\nconst _hoisted_4 = { class: \"record-date\" }\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\n import { sortRecords } from '@/utils/records'\n\n interface Props {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'RecordsCard',\n props: {\n records: null,\n sportTranslatedLabel: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n\n \n\n const { records, sportTranslatedLabel } = toRefs(props)\n\n const { t } = useI18n()\n\n function getTranslatedRecords(records: IRecord[]): ICardRecord[] {\n const translatedRecords: ICardRecord[] = []\n records.map((record) => {\n translatedRecords.push({\n ...record,\n label: t(`workouts.RECORD_${record.record_type}`),\n })\n })\n return translatedRecords.sort(sortRecords)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(records).label,\n color: _unref(records).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(sportTranslatedLabel)), 1)\n ]),\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getTranslatedRecords(_unref(records).records), (record) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: record.id\n }, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(record.label), 1),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(record.value), 1),\n _createElementVNode(\"span\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: {\n name: 'Workout',\n params: { workoutId: record.workout_id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(record.workout_date), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]))\n }), 128))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RecordsCard.vue?vue&type=style&index=0&id=b5480ab0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b5480ab0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-27dfbb65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-records-section\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"user-records\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"no-records\"\n}\n\nimport { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { getRecordsBySports } from '@/utils/records'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n }\n\n \n\n const { t } = useI18n()\n\n const recordsBySport = computed(() =>\n getRecordsBySports(\n props.user.records,\n translateSports(props.sports, t),\n props.user.timezone,\n props.user.imperial_units,\n props.user.display_ascent\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.RECORD', 2)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (Object.keys(_unref(recordsBySport)).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_RECORDS')), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_unref(recordsBySport)).sort(), (sportTranslatedLabel) => {\n return (_openBlock(), _createBlock(RecordsCard, {\n sportTranslatedLabel: sportTranslatedLabel,\n records: _unref(recordsBySport)[sportTranslatedLabel],\n key: sportTranslatedLabel,\n useImperialUnits: __props.user.imperial_units\n }, null, 8, [\"sportTranslatedLabel\", \"records\", \"useImperialUnits\"]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=27dfbb65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-27dfbb65\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { ComputedRef, computed, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import { convertDistance, units } from '@/utils/units'\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const { t } = useI18n()\n\n const { user } = toRefs(props)\n const userTotalDuration: ComputedRef = computed(\n () => props.user.total_duration\n )\n const totalDuration = computed(() => get_duration(userTotalDuration))\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = user.value.imperial_units\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const totalDistance: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_distance, distanceUnitFrom, distanceUnitTo, 2)\n : parseFloat(user.value.total_distance.toFixed(2)))\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = user.value.imperial_units\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n const totalAscent: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_ascent, ascentUnitFrom, ascentUnitTo, 2)\n : parseFloat(user.value.total_ascent.toFixed(2)))\n\n\n function get_duration(total_duration: ComputedRef) {\n const duration = total_duration.value.match(/day/g)\n ? total_duration.value.split(', ')[1]\n : total_duration.value\n return {\n days: total_duration.value.match(/day/g)\n ? `${total_duration.value.split(' ')[0]} ${\n total_duration.value.match(/days/g)\n ? t('common.DAY', 2)\n : t('common.DAY', 1)\n }`\n : `0 ${t('common.DAY', 2)},`,\n duration: `${duration.split(':')[0]}h ${duration.split(':')[1]}min`,\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(user).nb_workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"road\",\n value: _unref(totalDistance),\n text: _unref(distanceUnitTo) === 'mi' ? 'miles' : _unref(distanceUnitTo)\n }, null, 8, [\"value\", \"text\"]),\n (_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 0,\n icon: \"location-arrow\",\n value: _unref(totalAscent),\n text: _unref(ascentUnitTo) === 'ft' ? 'feet' : _unref(ascentUnitTo)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(StatCard, {\n icon: \"clock-o\",\n value: _unref(totalDuration).days,\n text: _unref(totalDuration).duration\n }, null, 8, [\"value\", \"text\"]),\n (!_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 1,\n icon: \"tags\",\n value: _unref(user).nb_sports,\n text: _ctx.$t('workouts.SPORT', _unref(user).nb_sports)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=22dcb990&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4c0893c1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"dashboard\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container mobile-menu\" }\nconst _hoisted_3 = { class: \"box\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-calendar\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-bar-chart\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"container\" }\nconst _hoisted_13 = { class: \"container dashboard-container\" }\nconst _hoisted_14 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_15 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_17 = {\n key: 1,\n class: \"app-loading\"\n}\n\nimport { ComputedRef, Ref, computed, onBeforeMount, ref } from 'vue'\n\n import Timeline from '@/components/Dashboard/Timeline.vue'\n import UserCalendar from '@/components/Dashboard/UserCalendar/index.vue'\n import UserMonthStats from '@/components/Dashboard/UserMonthStats.vue'\n import UserRecords from '@/components/Dashboard/UserRecords/index.vue'\n import UserStatsCards from '@/components/Dashboard/UserStatsCards/index.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dashboard',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const isSelected: Ref = ref('calendar')\n\n onBeforeMount(() => store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE))\n\n function updateDisplayColumn(target: string) {\n isSelected.value = target\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n\n return (_unref(authUser).username && _unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'calendar' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateDisplayColumn('calendar')))\n }, _hoisted_5, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'chart' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayColumn('chart')))\n }, _hoisted_7, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'timeline' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayColumn('timeline')))\n }, _hoisted_9, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'records' }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateDisplayColumn('records')))\n }, _hoisted_11, 2)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(UserMonthStats, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'chart') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(UserRecords, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'records') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(UserCalendar, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'calendar') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(Timeline, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'timeline') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ])\n ]),\n _hoisted_16\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_Loader)\n ]))\n}\n}\n\n})","import script from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dashboard.vue?vue&type=style&index=0&id=4c0893c1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4c0893c1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"not-found view\" }\n\nimport NotFound from '@/components/Common/NotFound.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFoundView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(NotFound)\n ]))\n}\n}\n\n})","import script from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6a38125b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"loginOrRegister\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub\" }\n\nimport { toRefs } from 'vue'\n\n import BikePic from '@/components/BikePic.vue'\n import LoginOrRegisterForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoginOrRegister',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n }\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(LoginOrRegisterForm, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./LoginOrRegister.vue?vue&type=style&index=0&id=6a38125b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6a38125b\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport AddUserApp from '@/components/User/UserApps/AddUserApp.vue'\nimport AuthorizeUserApp from '@/components/User/UserApps/AuthorizeUserApp.vue'\nimport UserApps from '@/components/User/UserApps/index.vue'\nimport UserApp from '@/components/User/UserApps/UserApp.vue'\nimport UserAppsList from '@/components/User/UserApps/UserAppsList.vue'\nimport UserSportPreferences from '@/components/User/UserSportPreferences.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport AboutView from '@/views/AboutView.vue'\nimport Dashboard from '@/views/Dashboard.vue'\nimport NotFoundView from '@/views/NotFoundView.vue'\nimport LoginOrRegister from '@/views/user/LoginOrRegister.vue'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: Dashboard,\n },\n {\n path: '/login',\n name: 'Login',\n component: LoginOrRegister,\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: LoginOrRegister,\n props: { action: 'register' },\n },\n {\n path: '/account-confirmation',\n name: 'AccountConfirmation',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/AccountConfirmationView.vue'\n ),\n },\n {\n path: '/account-confirmation/resend',\n name: 'AccountConfirmationResend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'account-confirmation-resend' },\n },\n {\n path: '/account-confirmation/email-sent',\n name: 'AccountConfirmationEmailSend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'email-sent' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/email-update',\n name: 'EmailUpdate',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/EmailUpdateView.vue'\n ),\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n {\n path: 'sports',\n name: 'UserSportPreferences',\n component: UserSportPreferences,\n props: { isEdition: false },\n },\n {\n path: 'apps',\n name: 'UserApps',\n component: UserApps,\n children: [\n {\n path: '',\n name: 'UserAppsList',\n component: UserAppsList,\n },\n {\n path: ':id',\n name: 'UserApp',\n component: UserApp,\n },\n {\n path: ':id/created',\n name: 'CreatedUserApp',\n component: UserApp,\n props: { afterCreation: true },\n },\n {\n path: 'new',\n name: 'AddUserApp',\n component: AddUserApp,\n },\n {\n path: 'authorize',\n name: 'AuthorizeUserApp',\n component: AuthorizeUserApp,\n },\n ],\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'account',\n name: 'UserAccountEdition',\n component: UserAccountEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n {\n path: 'sports',\n name: 'UserSportPreferencesEdition',\n component: UserSportPreferences,\n props: { isEdition: true },\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'statistics' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users/:username',\n name: 'UserFromAdmin',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n props: { fromAdmin: true },\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/about',\n name: 'About',\n component: AboutView,\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: NotFoundView,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n '/account-confirmation',\n '/account-confirmation/resend',\n '/account-confirmation/email-sent',\n]\n\nconst pathsWithoutChecks = ['/email-update', '/about']\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (pathsWithoutChecks.includes(to.path)) {\n return next()\n }\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n }\n if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","export enum AuthUserActions {\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n CONFIRM_ACCOUNT = 'CONFIRM_ACCOUNT',\n CONFIRM_EMAIL = 'CONFIRM_EMAIL',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n RESEND_ACCOUNT_CONFIRMATION_EMAIL = 'RESEND_ACCOUNT_CONFIRMATION_EMAIL',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n RESET_USER_SPORT_PREFERENCES = 'RESET_USER_SPORT_PREFERENCES',\n UPDATE_USER_ACCOUNT = 'UPDATE_USER_ACCOUNT',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n IS_SUCCESS = 'IS_SUCCESS',\n IS_REGISTRATION_SUCCESS = 'IS_REGISTRATION_SUCCESS',\n USER_LOADING = 'USER_LOADING',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_IS_SUCCESS = 'UPDATE_USER_IS_SUCCESS',\n UPDATE_IS_REGISTRATION_SUCCESS = 'UPDATE_IS_REGISTRATION_SUCCESS',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n}\n","export enum OAuth2Actions {\n AUTHORIZE_CLIENT = 'AUTHORIZE_CLIENT',\n CREATE_CLIENT = 'CREATE_CLIENT',\n DELETE_CLIENT = 'DELETE_CLIENT',\n GET_CLIENTS = 'GET_CLIENTS',\n GET_CLIENT_BY_CLIENT_ID = 'GET_CLIENT_BY_CLIENT_ID',\n GET_CLIENT_BY_ID = 'GET_CLIENT_BY_ID',\n REVOKE_ALL_TOKENS = 'REVOKE_ALL_TOKENS',\n}\n\nexport enum OAuth2Getters {\n CLIENT = 'CLIENT',\n CLIENTS = 'CLIENTS',\n CLIENTS_PAGINATION = 'CLIENTS_PAGINATION',\n REVOCATION_SUCCESSFUL = 'REVOCATION_SUCCESSFUL',\n}\n\nexport enum OAuth2Mutations {\n EMPTY_CLIENT = 'EMPTY_CLIENT',\n SET_CLIENT = 'SET_CLIENT',\n SET_CLIENTS = 'SET_CLIENTS',\n SET_CLIENTS_PAGINATION = 'SET_CLIENTS_PAGINATION',\n SET_REVOCATION_SUCCESSFUL = 'SET_REVOCATION_SUCCESSFUL',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LANGUAGE = 'UPDATE_APPLICATION_LANGUAGE',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n DELETE_USER_ACCOUNT = 'DELETE_USER_ACCOUNT',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_IS_SUCCESS = 'USERS_IS_SUCCESS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n UPDATE_IS_SUCCESS = 'UPDATE_IS_SUCCESS',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n OAuth2Actions,\n OAuth2Getters,\n OAuth2Mutations,\n} from '@/store/modules/oauth2/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\nexport const OAUTH2_STORE = {\n ACTIONS: OAuth2Actions,\n GETTERS: OAuth2Getters,\n MUTATIONS: OAuth2Mutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\napi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n return config\n },\n (error) => Promise.reject(error)\n)\n\napi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload, IUserDeletionPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const deleteUserAccount = (\n context:\n | ActionContext\n | ActionContext,\n payload: IUserDeletionPayload\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n if (payload.fromAdmin) {\n router.push('/admin/users')\n } else {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n const data: Record = {}\n if (payload.admin !== undefined) {\n data.admin = payload.admin\n }\n if (payload.resetPassword) {\n data.reset_password = payload.resetPassword\n }\n if (payload.activate) {\n data.activate = payload.activate\n }\n if (payload.new_email !== undefined) {\n data.new_email = payload.new_email\n }\n authApi\n .patch(`users/${payload.username}`, data)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n if (payload.resetPassword || payload.new_email) {\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n }\n if (payload.activate || payload.new_email) {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, {\n username: payload.username,\n fromAdmin: true,\n })\n },\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { deleteUserAccount } from '@/store/modules/users/actions'\nimport {\n ILoginOrRegisterData,\n IUserAccountPayload,\n IUserDeletionPayload,\n IUserAccountUpdatePayload,\n IUserEmailPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n IUserSportPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n // after logout in another tab\n if (\n !window.localStorage.authToken &&\n context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n removeAuthUserData(context)\n }\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/confirm', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n api\n .post('/auth/email/update', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n if (payload.refreshUser) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => {\n return router.push('/profile/edit/account')\n })\n }\n router.push('/profile/edit/account')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (res.data.data.language) {\n context.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n if (error.message !== 'canceled') {\n handleError(context, error)\n removeAuthUserData(context)\n }\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n if (data.actionType === 'login') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n router\n .push('/login')\n .then(() =>\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n true\n )\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/logout')\n .then((res) => {\n if (res.data.status === 'success') {\n removeAuthUserData(context)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n authApi\n .patch('auth/profile/edit/account', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context\n .dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n .then(() => router.push('/profile/preferences'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES](\n context: ActionContext,\n sportId: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/profile/reset/sports/${sportId}`)\n .then((res) => {\n if (res.status === 204) {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](\n context: ActionContext,\n payload: IUserSportPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/sports', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, payload)\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/resend-confirmation', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/account-confirmation/email-sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]: (\n state: IAuthUserState\n ) => {\n return state.isRegistrationSuccess\n },\n [AUTH_USER_STORE.GETTERS.IS_SUCCESS]: (state: IAuthUserState) => {\n return state.isSuccess\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IAuthUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](\n state: IAuthUserState,\n isRegistrationSuccess: boolean\n ) {\n state.isRegistrationSuccess = isRegistrationSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IAuthUserState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n isSuccess: false,\n isRegistrationSuccess: false,\n loading: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\nimport { IOAuth2Actions, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IOauth2ClientsPayload,\n IOAuth2ClientPayload,\n IOAuth2ClientAuthorizePayload,\n} from '@/types/oauth'\nimport { handleError } from '@/utils'\n\nconst get_client = (\n context: ActionContext,\n url: string\n) => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(url)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENT, res.data.data.client)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IOAuth2Actions = {\n [OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientAuthorizePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n const form = new FormData()\n form.set('client_id', payload.client_id)\n form.set('response_type', payload.response_type)\n form.set('scope', payload.scope)\n form.set('confirm', 'true')\n if (payload.state) {\n form.set('state', payload.state)\n }\n if (payload.code_challenge) {\n form.set('code_challenge', payload.code_challenge)\n }\n if (payload.code_challenge_method) {\n form.set('code_challenge_method', payload.code_challenge_method)\n }\n\n authApi\n .post('oauth/authorize', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.status == 200 && res.data.redirect_url) {\n window.location.href = res.data.redirect_url\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.CREATE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('oauth/apps', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENT,\n res.data.data.client\n )\n router.push(`/profile/apps/${res.data.data.client.id}/created`)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.DELETE_CLIENT](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`oauth/apps/${id}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS)\n .then(() => router.push('/profile/apps'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID](\n context: ActionContext,\n client_id: string\n ): void {\n get_client(context, `oauth/apps/${client_id}`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID](\n context: ActionContext,\n id: number\n ): void {\n get_client(context, `oauth/apps/${id}/by_id`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENTS](\n context: ActionContext,\n payload: IOauth2ClientsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('oauth/apps', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS,\n res.data.data.clients\n )\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n authApi\n .post(`oauth/apps/${id}/revoke`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2Getters, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IOAuth2Getters = {\n [OAUTH2_STORE.GETTERS.CLIENT]: (state: IOAuth2State) => state.client,\n [OAUTH2_STORE.GETTERS.CLIENTS]: (state: IOAuth2State) => state.clients,\n [OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]: (state: IOAuth2State) =>\n state.pagination,\n [OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]: (state: IOAuth2State) =>\n state.revocationSuccessful,\n}\n","import { MutationTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2State, TOAuth2Mutations } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const mutations: MutationTree & TOAuth2Mutations = {\n [OAUTH2_STORE.MUTATIONS.SET_CLIENT](\n state: IOAuth2State,\n client: IOAuth2Client\n ) {\n state.client = client\n },\n [OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT](state: IOAuth2State) {\n state.client = {}\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS](\n state: IOAuth2State,\n clients: IOAuth2Client[]\n ) {\n state.clients = clients\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION](\n state: IOAuth2State,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL](\n state: IOAuth2State,\n revocationSuccessful: boolean\n ) {\n state.revocationSuccessful = revocationSuccessful\n },\n}\n","import { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const oAuth2State: IOAuth2State = {\n client: {},\n clients: [],\n pagination: {},\n revocationSuccessful: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/oauth2/actions'\nimport { getters } from '@/store/modules/oauth2/getters'\nimport { mutations } from '@/store/modules/oauth2/mutations'\nimport { oAuth2State } from '@/store/modules/oauth2/state'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst oauth2: Module = {\n state: oAuth2State,\n actions,\n getters,\n mutations,\n}\n\nexport default oauth2\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE](\n context: ActionContext,\n language: string\n ): void {\n document.querySelector('html')?.setAttribute('lang', language)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, language)\n locale.value = language\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {\n statistics: {\n sports: 0,\n uploads_dir_size: 0,\n users: 0,\n workouts: 0,\n },\n },\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_IS_SUCCESS]: (state: IUsersState) => {\n return state.isSuccess\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IUsersState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n isSuccess: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${payload.notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport oAuthModule from '@/store/modules/oauth2'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n oAuthModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n if (typeof locationQuery.q === 'string') {\n query.q = locationQuery.q\n } else {\n delete query.q\n }\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat),\n workout_time: format(dateTime, timeFormat),\n }\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n // if request is cancelled, no error to display\n if (error && error.message === 'canceled') {\n return\n }\n\n // if stored token is blacklisted, disconnect user\n if (\n error?.response?.status === 401 &&\n error.response.data.error === 'invalid_token'\n ) {\n localStorage.removeItem('authToken')\n context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n return\n }\n\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : error.response.data.message\n ? error.response.data.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n de: de,\n en: enUS,\n fr: fr,\n}\n\nexport const languageLabels: Record = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Français',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","import { ISport, ITranslatedSport, TActiveStatus } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Snowshoes: '#5780a8',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map(\n (sport) =>\n (colors[sport.id] = sport.color ? sport.color : sportColors[sport.label])\n )\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n activeStatus: TActiveStatus = 'all',\n sportsToInclude: number[] = []\n): ITranslatedSport[] =>\n sports\n .filter((sport) =>\n activeStatus === 'all'\n ? true\n : sportsToInclude.includes(sport.id) || sport[activeStatus]\n )\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n\nexport const getSportColor = (\n workout: IWorkout,\n sports: ISport[]\n): string | null => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.color)[0]\n}\n","import {\n addMonths,\n addWeeks,\n addYears,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\n\nimport { IChartDataset } from '@/types/chart'\nimport { ISport } from '@/types/sports'\nimport {\n IStatisticsChartData,\n IStatisticsDateParams,\n TStatisticsDatasetKeys,\n TStatisticsDatasets,\n TStatisticsFromApi,\n} from '@/types/statistics'\nimport { incrementDate, getStartDate } from '@/utils/dates'\nimport { sportColors } from '@/utils/sports'\nimport { convertStatsDistance } from '@/utils/units'\n\nconst dateFormats: Record> = {\n week: {\n api: 'yyyy-MM-dd',\n chart: 'dd/MM/yyyy',\n },\n month: {\n api: 'yyyy-MM',\n chart: 'MM/yyyy',\n },\n year: {\n api: 'yyyy',\n chart: 'yyyy',\n },\n}\n\nexport const datasetKeys: TStatisticsDatasetKeys[] = [\n 'average_speed',\n 'nb_workouts',\n 'total_duration',\n 'total_distance',\n 'total_ascent',\n 'total_descent',\n]\n\nexport const getDateKeys = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean\n): Date[] => {\n const days = []\n for (\n let day = getStartDate(params.duration, params.start, weekStartingMonday);\n day <= params.end;\n day = incrementDate(params.duration, day)\n ) {\n days.push(day)\n }\n return days\n}\n\nconst getStatisticsChartDataset = (\n sportLabel: string,\n color: string,\n isLineChart = false\n): IChartDataset => {\n const dataset: IChartDataset = {\n label: sportLabel,\n backgroundColor: [color],\n data: [],\n }\n if (isLineChart) {\n dataset.type = 'line'\n dataset.borderColor = [color]\n dataset.spanGaps = true\n }\n return dataset\n}\n\nexport const getDatasets = (displayedSports: ISport[]): TStatisticsDatasets => {\n const datasets: TStatisticsDatasets = {\n average_speed: [],\n nb_workouts: [],\n total_distance: [],\n total_duration: [],\n total_ascent: [],\n total_descent: [],\n }\n displayedSports.map((sport) => {\n const color = sport.color ? sport.color : sportColors[sport.label]\n datasets.average_speed.push(\n getStatisticsChartDataset(sport.label, color, true)\n )\n datasets.nb_workouts.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_distance.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_duration.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_ascent.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_descent.push(getStatisticsChartDataset(sport.label, color))\n })\n return datasets\n}\n\nexport const convertStatsValue = (\n datasetKey: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean\n): number => {\n switch (datasetKey) {\n case 'average_speed':\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return convertStatsDistance(\n ['average_speed', 'total_distance'].includes(datasetKey) ? 'km' : 'm',\n value,\n useImperialUnits\n )\n default:\n case 'nb_workouts':\n case 'total_duration':\n return value\n }\n}\n\nexport const formatStats = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean,\n sports: ISport[],\n displayedSportsId: number[],\n apiStats: TStatisticsFromApi,\n useImperialUnits: boolean\n): IStatisticsChartData => {\n const dayKeys = getDateKeys(params, weekStartingMonday)\n const dateFormat = dateFormats[params.duration]\n const displayedSports = sports.filter((sport) =>\n displayedSportsId.includes(sport.id)\n )\n const labels: string[] = []\n const datasets = getDatasets(displayedSports)\n const sportsId: Record = {}\n displayedSports.map(\n (displayedSport) => (sportsId[displayedSport.label] = displayedSport.id)\n )\n\n dayKeys.map((key) => {\n const date: string = format(key, dateFormat.api)\n const label: string = format(key, dateFormat.chart)\n labels.push(label)\n datasetKeys.map((datasetKey) => {\n datasets[datasetKey].map((dataset) => {\n dataset.data.push(\n date in apiStats && sportsId[dataset.label] in apiStats[date]\n ? convertStatsValue(\n datasetKey,\n apiStats[date][sportsId[dataset.label]][datasetKey],\n useImperialUnits\n )\n : datasetKey === 'average_speed'\n ? null\n : 0\n )\n })\n })\n })\n return {\n labels,\n datasets,\n }\n}\n\nexport const getStatsDateParams = (\n date: Date,\n timeFrame: string,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const weekStartsOn = weekStartingMonday ? 1 : 0\n const start =\n timeFrame === 'year'\n ? startOfYear(subYears(date, 9))\n : timeFrame === 'week'\n ? startOfWeek(subMonths(date, 2), { weekStartsOn })\n : startOfMonth(subMonths(date, 11)) // month\n const end =\n timeFrame === 'year'\n ? endOfYear(date)\n : timeFrame === 'week'\n ? endOfWeek(date, { weekStartsOn })\n : endOfMonth(date) // month\n return {\n duration: timeFrame,\n end,\n start,\n }\n}\n\nexport const updateChartParams = (\n chartParams: IStatisticsDateParams,\n backward: boolean,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const { duration, start, end } = chartParams\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n duration,\n end:\n duration === 'year'\n ? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {\n weekStartsOn,\n })\n : endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),\n start:\n duration === 'year'\n ? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {\n weekStartsOn,\n })\n : startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),\n }\n}\n","import { IUnit, TFactor, TUnit } from '@/types/units'\n\nexport const units: Record = {\n ft: {\n unit: 'ft',\n system: 'imperial',\n multiplier: 1,\n defaultTarget: 'm',\n },\n mi: {\n unit: 'mi',\n system: 'imperial',\n multiplier: 5280,\n defaultTarget: 'km',\n },\n m: {\n unit: 'm',\n system: 'metric',\n multiplier: 1,\n defaultTarget: 'ft',\n },\n km: {\n unit: 'm',\n system: 'metric',\n multiplier: 1000,\n defaultTarget: 'mi',\n },\n}\n\nconst factors: TFactor = {\n metric: {\n imperial: 3.280839895,\n metric: 1,\n },\n imperial: {\n metric: 1 / 3.280839895,\n imperial: 1,\n },\n}\n\nexport const convertDistance = (\n distance: number,\n from: TUnit,\n to: TUnit,\n digits: number | null = 3\n): number => {\n const unitFrom = units[from]\n const unitTo = units[to]\n const convertedDistance =\n (distance * unitFrom.multiplier * factors[unitFrom.system][unitTo.system]) /\n unitTo.multiplier\n if (digits !== null) {\n return parseFloat(convertedDistance.toFixed(digits))\n }\n return convertedDistance\n}\n\nexport const convertStatsDistance = (\n unitFrom: TUnit,\n value: number,\n useImperialUnits: boolean\n): number => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value\n}\n","import {\n IWorkout,\n IWorkoutApiChartData,\n IWorkoutChartData,\n TCoordinates,\n TWorkoutDatasets,\n} from '@/types/workouts'\nimport { convertStatsDistance } from '@/utils/units'\n\nexport const getDatasets = (\n chartData: IWorkoutApiChartData[],\n t: CallableFunction,\n useImperialUnits: boolean\n): IWorkoutChartData => {\n const datasets: TWorkoutDatasets = {\n speed: {\n label: t('workouts.SPEED'),\n backgroundColor: ['#FFFFFF'],\n borderColor: ['#8884d8'],\n borderWidth: 2,\n data: [],\n yAxisID: 'ySpeed',\n },\n elevation: {\n label: t('workouts.ELEVATION'),\n backgroundColor: ['#e5e5e5'],\n borderColor: ['#cccccc'],\n borderWidth: 1,\n fill: true,\n data: [],\n yAxisID: 'yElevation',\n },\n }\n const distance_labels: unknown[] = []\n const duration_labels: unknown[] = []\n const coordinates: TCoordinates[] = []\n\n chartData.map((data) => {\n distance_labels.push(data.distance)\n duration_labels.push(data.duration)\n datasets.speed.data.push(\n convertStatsDistance('km', data.speed, useImperialUnits)\n )\n datasets.elevation.data.push(\n convertStatsDistance('m', data.elevation, useImperialUnits)\n )\n coordinates.push({ latitude: data.latitude, longitude: data.longitude })\n })\n\n return { distance_labels, duration_labels, datasets, coordinates }\n}\n\nexport const getDonutDatasets = (\n workouts: IWorkout[]\n): Record> => {\n const total = workouts.length\n if (total === 0) {\n return {}\n }\n\n const datasets: Record> = {}\n workouts.map((workout) => {\n if (!datasets[workout.sport_id]) {\n datasets[workout.sport_id] = {\n count: 0,\n percentage: 0,\n }\n }\n datasets[workout.sport_id].count += 1\n datasets[workout.sport_id].percentage =\n datasets[workout.sport_id].count / total\n })\n\n return datasets\n}\n\nexport const defaultOrder = {\n order: 'desc',\n order_by: 'workout_date',\n}\n","\n\n\n","import { render } from \"./Card.vue?vue&type=template&id=ad374c24\"\nconst script = {}\n\nimport \"./Card.vue?vue&type=style&index=0&id=ad374c24&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72463173\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nimport { toRefs } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n interface Props {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilterSelects',\n props: {\n order_by: null,\n query: null,\n sort: null,\n message: null\n },\n emits: ['updateSelect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n\n \n\n \n\n const { order_by, query, sort, message } = toRefs(props)\n const perPage = [10, 25, 50, 100]\n\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _unref(query).order_by,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(order_by), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_unref(message)}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _unref(query).order,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sort), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _unref(query).per_page,\n onChange: onSelectUpdate\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(perPage, (nb) => {\n return _createElementVNode(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7)\n }), 64))\n ], 40, _hoisted_6)\n ])\n ]))\n}\n}\n\n})","import script from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=72463173&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72463173\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./ErrorImg.vue?vue&type=template&id=e620aed4\"\nimport script from \"./ErrorImg.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorImg.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b60bfa80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"error\" }\nconst _hoisted_2 = { class: \"error-content\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n title: string\n message: string\n buttonText: string\n path?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Error',\n props: {\n title: null,\n message: null,\n buttonText: null,\n path: { default: '/' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, message: string, buttonText: string, path: string }\n\n \n const { buttonText, title, message, path } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(title)), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_unref(message)), 1),\n (_unref(buttonText))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push(_unref(path)))),\n class: \"upper\"\n }, _toDisplayString(_unref(buttonText)), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Error.vue?vue&type=style&index=0&id=b60bfa80&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b60bfa80\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { Ref, onMounted, ref, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import Error from '@/components/Common/Error.vue'\n interface Props {\n target?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFound',\n props: {\n target: { default: 'PAGE' }\n },\n setup(__props: any) {\n\nconst props = __props as { target: string }\n\n \n const { target } = toRefs(props)\n const timer = ref()\n const errorDisplayed: Ref = ref(false)\n\n onMounted(() => displayError())\n\n function displayError() {\n timer.value = setTimeout(() => {\n errorDisplayed.value = true\n }, 500)\n }\n\n onUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value)\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (errorDisplayed.value)\n ? (_openBlock(), _createBlock(Error, {\n key: 0,\n title: \"404\",\n message: _ctx.$t(`error.NOT_FOUND.${_unref(target)}`),\n \"button-text\": _ctx.$t('common.HOME')\n }, null, 8, [\"message\", \"button-text\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a9a4a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { toRefs } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IOauth2ClientsPayload } from '@/types/oauth'\n import { TWorkoutsPayload } from '@/types/workouts'\n import { rangePagination } from '@/utils/api'\n\n interface Props {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Pagination',\n props: {\n pagination: null,\n path: null,\n query: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n\n \n\n const { pagination, path, query } = toRefs(props)\n\n function getQuery(\n page: number,\n cursor?: number\n ): TPaginationPayload | IOauth2ClientsPayload {\n const newQuery = Object.assign({}, query.value)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_unref(pagination).has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, -1) },\n disabled: !_unref(pagination).has_prev\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')) + \" \", 1),\n _hoisted_3\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(rangePagination)(_unref(pagination).pages, _unref(pagination).page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _unref(pagination).page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_unref(pagination).has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, 1) },\n disabled: !_unref(pagination).has_next\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=3a9a4a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a9a4a65\"]])\n\nexport default __exports__","import { zxcvbnOptions } from '@zxcvbn-ts/core'\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnEnPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-en'\n )\n const zxcvbnFrPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-fr'\n )\n const zxcvbnDePackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-de'\n )\n const zxcvbnLangPackages: Record = {\n de: zxcvbnDePackage,\n en: zxcvbnEnPackage,\n fr: zxcvbnFrPackage,\n }\n const zxcvbnPackage = zxcvbnLangPackages[language]\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnPackage.default.dictionary,\n },\n }\n zxcvbnOptions.setOptions(options)\n}\n\nexport const getPasswordStrength = (strength: number): string => {\n switch (strength) {\n case 2:\n return 'AVERAGE'\n case 3:\n return 'GOOD'\n case 4:\n return 'STRONG'\n default:\n return 'WEAK'\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e71df5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-strength\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"password-strength-details\"\n}\nconst _hoisted_4 = { class: \"password-strength-value\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"info-box\"\n}\nconst _hoisted_6 = { class: \"password-feedback\" }\n\nimport { zxcvbn } from '@zxcvbn-ts/core'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n onBeforeMount,\n toRefs,\n watch,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n import { getPasswordStrength, setZxcvbnOptions } from '@/utils/password'\n\n interface Props {\n password: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordStength',\n props: {\n password: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n password: string\n }\n\n \n const { password } = toRefs(props)\n\n const store = useStore()\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const passwordScore: Ref = ref(0)\n const passwordStrength: Ref = ref('')\n const passwordSuggestions: Ref = ref([])\n const backgroundSize = ref('0% 100%')\n\n onBeforeMount(async () => await setZxcvbnOptions(language.value))\n\n function calculatePasswordStrength(password: string) {\n const zxcvbnResult = zxcvbn(password)\n passwordScore.value = zxcvbnResult.score\n passwordStrength.value = getPasswordStrength(passwordScore.value)\n passwordSuggestions.value = zxcvbnResult.feedback.suggestions\n backgroundSize.value = (passwordScore.value * 100) / 4 + '% 100%'\n }\n\n watch(\n () => language.value,\n async (newLanguageValue) => {\n await setZxcvbnOptions(newLanguageValue)\n }\n )\n watch(\n () => password.value,\n async (newPassword) => {\n if (isSuccess.value) {\n passwordStrength.value = ''\n } else {\n calculatePasswordStrength(newPassword)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: _normalizeClass([\"password-slider\", `strength-${passwordScore.value}`]),\n style: _normalizeStyle({ backgroundSize: backgroundSize.value }),\n type: \"range\",\n value: passwordScore.value,\n min: \"0\",\n max: \"4\",\n step: \"1\"\n }, null, 14, _hoisted_2),\n (passwordStrength.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('user.PASSWORD_STRENGTH.LABEL')) + \": \" + _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.${passwordStrength.value}`)), 1),\n (passwordSuggestions.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"ul\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(passwordSuggestions.value, (suggestion) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: suggestion }, _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${suggestion}`)), 1))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordStength.vue?vue&type=style&index=0&id=74e71df5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e71df5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, vModelDynamic as _vModelDynamic, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a126514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-input\" }\nconst _hoisted_2 = [\"id\", \"disabled\", \"placeholder\", \"required\", \"type\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"form-info\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import PasswordStrength from '@/components/Common/PasswordStength.vue'\n\n interface Props {\n checkStrength?: boolean\n disabled?: boolean\n id?: string\n password?: string\n placeholder?: string\n required?: boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordInput',\n props: {\n checkStrength: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n id: { default: 'password' },\n password: { default: '' },\n placeholder: null,\n required: { type: Boolean, default: false }\n },\n emits: ['updatePassword', 'passwordError'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { checkStrength: boolean, disabled: boolean, id: string, password: string, placeholder?: string, required: boolean }\n\n \n const { checkStrength, disabled, id, password, placeholder, required } =\n toRefs(props)\n\n const showPassword: Ref = ref(false)\n const passwordValue: Ref = ref('')\n\n \n\n function togglePassword() {\n showPassword.value = !showPassword.value\n }\n function updatePassword(event: Event & { target: HTMLInputElement }) {\n emit('updatePassword', event.target.value)\n }\n function invalidPassword() {\n emit('passwordError')\n }\n\n watch(\n () => password.value,\n (newPassword) => {\n if (newPassword === '') {\n passwordValue.value = ''\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"input\", {\n id: _unref(id),\n disabled: _unref(disabled),\n placeholder: _unref(placeholder),\n required: _unref(required),\n type: showPassword.value ? 'text' : 'password',\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordValue).value = $event)),\n minlength: \"8\",\n onInput: updatePassword,\n onInvalid: invalidPassword\n }, null, 40, _hoisted_2), [\n [_vModelDynamic, passwordValue.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"show-password\",\n onClick: togglePassword\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.${showPassword.value ? 'HIDE' : 'SHOW'}_PASSWORD`)) + \" \", 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-eye${showPassword.value ? '-slash' : ''}`]),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n (_unref(checkStrength))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.PASSWORD_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(checkStrength))\n ? (_openBlock(), _createBlock(PasswordStrength, {\n key: 1,\n password: passwordValue.value\n }, null, 8, [\"password\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordInput.vue?vue&type=style&index=0&id=5a126514&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a126514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"map-attribution\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"map-attribution-text\" }, \"©\"),\n /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"map-attribution-text\",\n href: \"https://www.openstreetmap.org/copyright\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, \" OpenStreetMap \")\n], -1)\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workout: IWorkout\n displayHover?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticMap',\n props: {\n workout: null,\n displayHover: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { workout: IWorkout, displayHover: boolean }\n\n \n const { displayHover } = toRefs(props)\n const imageUrl = `${getApiUrl()}workouts/map/${props.workout.map}`\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"static-map\", { 'display-hover': _unref(displayHover) }])\n }, [\n (_unref(displayHover))\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: imageUrl,\n alt: \"\"\n }))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"bg-map-image\",\n style: _normalizeStyle({\n backgroundImage: `url(${imageUrl})`,\n })\n }, null, 4)),\n _hoisted_1\n ], 2))\n}\n}\n\n})","import script from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StaticMap.vue?vue&type=style&index=0&id=6b7e4baf&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58e4e79d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"start-chart\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"chart-radio\" }\nconst _hoisted_5 = [\"checked\"]\nconst _hoisted_6 = [\"checked\"]\nconst _hoisted_7 = [\"checked\"]\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = [\"checked\"]\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = [\"checked\"]\nconst _hoisted_12 = { key: 2 }\nconst _hoisted_13 = [\"checked\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.hideChartIfNoData && _ctx.emptyStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.NO_WORKOUTS')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_distance\",\n checked: _ctx.displayedData === 'total_distance',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_5),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_duration\",\n checked: _ctx.displayedData === 'total_duration',\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_6),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"nb_workouts\",\n checked: _ctx.displayedData === 'nb_workouts',\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_7),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', 2)), 1)\n ]),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_8, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"average_speed\",\n checked: _ctx.displayedData === 'average_speed',\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_ascent\",\n checked: _ctx.displayedData === 'total_ascent',\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_12, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_descent\",\n checked: _ctx.displayedData === 'total_descent',\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_13),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.labels.length > 0)\n ? (_openBlock(), _createBlock(_component_Chart, {\n key: 0,\n datasets: _ctx.datasets,\n labels: _ctx.labels,\n displayedData: _ctx.displayedData,\n displayedSportIds: _ctx.displayedSportIds,\n fullStats: _ctx.fullStats,\n useImperialUnits: _ctx.user.imperial_units\n }, null, 8, [\"datasets\", \"labels\", \"displayedData\", \"displayedSportIds\", \"fullStats\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}","import { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"chart\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BarChart = _resolveComponent(\"BarChart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BarChart, _mergeProps(_ctx.barChartProps, { class: \"bar-chart\" }), null, 16)\n ]))\n}","export const formatDuration = (\n totalSeconds: number,\n formatWithUnits = false\n): string => {\n let days = '0'\n if (formatWithUnits) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithUnits) {\n return `${days === '0' ? '' : `${days}d `}${\n hours === '00' ? '' : `${hours}h `\n }${minutes}m ${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n","import { TStatisticsDatasetKeys } from '@/types/statistics'\nimport { formatDuration } from '@/utils/duration'\nimport { units } from '@/utils/units'\n\nexport const formatTooltipValue = (\n displayedData: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean,\n formatWithUnits = true,\n unitFrom = 'km'\n): string => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n switch (displayedData) {\n case 'average_speed':\n return `${value.toFixed(2)} ${unitTo}/h`\n case 'total_duration':\n return formatDuration(value, formatWithUnits)\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return `${value.toFixed(2)} ${unitTo}`\n default:\n return value.toString()\n }\n}\n","\n import { ChartData, ChartOptions, LayoutItem } from 'chart.js'\n import { ComputedRef, PropType, computed, defineComponent } from 'vue'\n import { BarChart, useBarChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IChartDataset } from '@/types/chart'\n import { TStatisticsDatasetKeys } from '@/types/statistics'\n import { formatTooltipValue } from '@/utils/tooltip'\n\n export default defineComponent({\n name: 'Chart',\n components: {\n BarChart,\n },\n props: {\n datasets: {\n type: Object as PropType,\n required: true,\n },\n labels: {\n type: Object as PropType,\n required: true,\n },\n displayedData: {\n type: String as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n required: true,\n },\n fullStats: {\n type: Boolean,\n required: true,\n },\n useImperialUnits: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getNumber(value: any): number {\n return isNaN(value) ? 0 : +value\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getSum(total: any, value: any): number {\n return getNumber(total) + getNumber(value)\n }\n function getUnit(displayedData: string) {\n return ['total_ascent', 'total_descent'].includes(displayedData)\n ? 'm'\n : 'km'\n }\n const chartData: ComputedRef> = computed(() => ({\n labels: props.labels,\n // workaround to avoid dataset modification\n datasets: JSON.parse(JSON.stringify(props.datasets)),\n }))\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: props.fullStats ? 40 : 22,\n },\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n drawOnChartArea: false,\n },\n },\n y: {\n stacked: props.displayedData !== 'average_speed',\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n maxTicksLimit: 6,\n callback: function (value) {\n return formatTooltipValue(\n props.displayedData,\n +value,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n },\n },\n afterFit: function (scale: LayoutItem) {\n scale.width = props.fullStats ? 90 : 60\n },\n },\n },\n plugins: {\n datalabels: {\n anchor: 'end',\n align: 'end',\n color: function (context) {\n return props.displayedData === 'average_speed' &&\n context.dataset.backgroundColor\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n context.dataset.backgroundColor[0]\n : '#666666'\n },\n rotation: function (context) {\n return props.fullStats && context.chart.chartArea.width < 580\n ? 310\n : 0\n },\n display: function (context) {\n return props.fullStats && context.chart.chartArea.width < 300\n ? false\n : props.displayedData === 'average_speed'\n ? props.displayedSportIds.length == 1\n ? 'auto'\n : false\n : true\n },\n formatter: function (value, context) {\n if (props.displayedData === 'average_speed') {\n return formatTooltipValue(\n props.displayedData,\n value,\n props.useImperialUnits,\n false\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const total: number = context.chart.data.datasets\n .map((d) => d.data[context.dataIndex])\n .reduce((total, value) => getSum(total, value), 0)\n return context.datasetIndex ===\n props.displayedSportIds.length - 1 && total > 0\n ? formatTooltipValue(\n props.displayedData,\n total,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n : null\n }\n },\n },\n legend: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: true,\n mode: 'index',\n position:\n props.displayedData === 'average_speed' ? 'nearest' : 'average',\n },\n filter: function (tooltipItem) {\n return tooltipItem.formattedValue !== '0'\n },\n callbacks: {\n label: function (context) {\n let label = t(`sports.${context.dataset.label}.LABEL`) || ''\n if (label) {\n label += ': '\n }\n if (context.parsed.y !== null) {\n label += formatTooltipValue(\n props.displayedData,\n context.parsed.y,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n }\n return label\n },\n footer: function (tooltipItems) {\n if (props.displayedData === 'average_speed') {\n return ''\n }\n let sum = 0\n tooltipItems.map((tooltipItem) => {\n sum += tooltipItem.parsed.y\n })\n return (\n `${t('common.TOTAL')}: ` +\n formatTooltipValue(\n props.displayedData,\n sum,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n )\n },\n },\n },\n },\n }))\n const { barChartProps } = useBarChart({\n chartData,\n options,\n })\n return { barChartProps }\n },\n })\n","import { render } from \"./Chart.vue?vue&type=template&id=6c8b76cd&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n } from 'vue'\n\n import Chart from '@/components/Common/StatsChart/Chart.vue'\n import { STATS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import {\n IStatisticsChartData,\n TStatisticsDatasetKeys,\n IStatisticsDateParams,\n TStatisticsFromApi,\n IStatisticsParams,\n } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatStats } from '@/utils/statistics'\n\n export default defineComponent({\n name: 'UserMonthStats',\n components: {\n Chart,\n },\n props: {\n sports: {\n type: Object as PropType,\n required: true,\n },\n user: {\n type: Object as PropType,\n required: true,\n },\n chartParams: {\n type: Object as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n default: () => [],\n },\n fullStats: {\n type: Boolean,\n default: false,\n },\n hideChartIfNoData: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n const displayedData: Ref = ref('total_distance')\n const statistics: ComputedRef = computed(\n () => store.getters[STATS_STORE.GETTERS.USER_STATS]\n )\n const formattedStats: ComputedRef = computed(() =>\n formatStats(\n props.chartParams,\n props.user.weekm,\n props.sports,\n props.displayedSportIds,\n statistics.value,\n props.user.imperial_units\n )\n )\n\n onBeforeMount(() =>\n getStatistics(getApiParams(props.chartParams, props.user))\n )\n\n function getStatistics(apiParams: IStatisticsParams) {\n store.dispatch(STATS_STORE.ACTIONS.GET_USER_STATS, {\n username: props.user.username,\n filterType: 'by_time',\n params: apiParams,\n })\n }\n function updateDisplayData(\n event: Event & {\n target: HTMLInputElement & { name: TStatisticsDatasetKeys }\n }\n ) {\n displayedData.value = event.target.name\n }\n function getApiParams(\n chartParams: IStatisticsDateParams,\n user: IAuthUserProfile\n ): IStatisticsParams {\n return {\n from: format(chartParams.start, 'yyyy-MM-dd'),\n to: format(chartParams.end, 'yyyy-MM-dd'),\n time:\n chartParams.duration === 'week'\n ? `week${user.weekm ? 'm' : ''}`\n : chartParams.duration,\n }\n }\n\n watch(\n () => props.chartParams,\n async (newParams) => {\n getStatistics(getApiParams(newParams, props.user))\n }\n )\n\n return {\n datasets: computed(\n () => formattedStats.value.datasets[displayedData.value]\n ),\n labels: computed(() => formattedStats.value.labels),\n emptyStats: computed(() => Object.keys(statistics.value).length === 0),\n displayedData,\n updateDisplayData,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=58e4e79d&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=58e4e79d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58e4e79d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20291951\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-label\" }\nconst _hoisted_10 = { class: \"user-stat hide-small\" }\nconst _hoisted_11 = { class: \"stat-number\" }\nconst _hoisted_12 = { class: \"stat-label\" }\n\nimport { computed, ComputedRef, toRefs } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserHeader',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const { user } = toRefs(props)\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(user).username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(user).nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Distance, {\n distance: _unref(user).total_distance,\n unitFrom: \"km\",\n digits: 0,\n displayUnit: false,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(authUser).imperial_units ? 'miles' : 'km'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_unref(user).nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.SPORT', _unref(user).nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=20291951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-20291951\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-794e58e7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = {\n key: 4,\n class: \"email-form form-box\"\n}\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = { class: \"form-buttons\" }\nconst _hoisted_7 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { key: 5 }\nconst _hoisted_10 = { class: \"user-bio\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n withDefaults,\n watch,\n onUnmounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n fromAdmin?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfos',\n props: {\n user: null,\n fromAdmin: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, fromAdmin: boolean }\n\n \n\n const store = useStore()\n\n const { user, fromAdmin } = toRefs(props)\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(new Date(props.user.birth_date), 'dd/MM/yyyy')\n : ''\n )\n const isSuccess = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_IS_SUCCESS]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const displayModal: Ref = ref('')\n const formErrors = ref(false)\n const displayUserEmailForm: Ref = ref(false)\n const newUserEmail: Ref = ref('')\n const currentAction: Ref = ref('')\n\n function updateDisplayModal(value: string) {\n displayModal.value = value\n if (value !== '') {\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n }\n }\n function deleteUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT, { username })\n }\n function resetUserPassword(username: string) {\n currentAction.value = 'password-reset'\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n resetPassword: true,\n })\n }\n function confirmUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n activate: true,\n })\n }\n function displayEmailForm() {\n resetErrorsAndSuccess()\n newUserEmail.value = user.value.email_to_confirm\n ? user.value.email_to_confirm\n : ''\n displayUserEmailForm.value = true\n currentAction.value = 'email-update'\n }\n function hideEmailForm() {\n newUserEmail.value = ''\n displayUserEmailForm.value = false\n }\n function updateUserEmail(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n new_email: newUserEmail.value,\n })\n }\n function resetErrorsAndSuccess() {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n currentAction.value = ''\n }\n\n onUnmounted(() => resetErrorsAndSuccess())\n\n watch(\n () => isSuccess.value,\n (newIsSuccess) => {\n if (newIsSuccess) {\n updateDisplayModal('')\n hideEmailForm()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \n displayModal.value === 'delete'\n ? 'admin.CONFIRM_USER_ACCOUNT_DELETION'\n : 'admin.CONFIRM_USER_PASSWORD_RESET'\n ,\n strongMessage: _unref(user).username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (\n displayModal.value === 'delete'\n ? deleteUserAccount(_unref(user).username)\n : resetUserPassword(_unref(user).username)\n )),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal('')))\n }, null, 8, [\"title\", \"message\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `admin.${\n currentAction.value === 'password-reset'\n ? 'PASSWORD_RESET'\n : 'USER_EMAIL_UPDATE'\n }_SUCCESSFUL`\n )), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 2,\n message: \"user.THIS_USER_ACCOUNT_IS_INACTIVE\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 3,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (displayUserEmailForm.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateUserEmail(_unref(user).username)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.CURRENT_EMAIL')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_unref(user).email) = $event)),\n disabled: \"\"\n }, null, 512), [\n [_vModelText, _unref(user).email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.NEW_EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"new-email\",\n type: \"email\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newUserEmail).value = $event))\n }, null, 512), [\n [_vModelText, newUserEmail.value]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", _hoisted_7, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(hideEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_8)\n ])\n ], 34)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(registrationDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(birthDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_10, _toDisplayString(_unref(user).bio), 1)\n ]),\n (_unref(fromAdmin))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (updateDisplayModal('delete')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (confirmUserAccount(_unref(user).username)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.ACTIVATE_USER_ACCOUNT')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _withModifiers(displayEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('admin.UPDATE_USER_EMAIL')), 9, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (\n _unref(authUser).username !== _unref(user).username &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (updateDisplayModal('reset')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.RESET_USER_PASSWORD')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=794e58e7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-794e58e7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b3c885de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-form\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\", \"placeholder\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"form-info\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\"disabled\", \"placeholder\"]\nconst _hoisted_8 = {\n key: 3,\n class: \"form-info\"\n}\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { key: 3 }\nconst _hoisted_12 = { key: 0 }\nconst _hoisted_13 = { key: 4 }\nconst _hoisted_14 = { class: \"account\" }\nconst _hoisted_15 = { key: 5 }\n\nimport {\n ComputedRef,\n computed,\n onUnmounted,\n reactive,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ILoginRegisterFormData } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAuthForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string }\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { action } = toRefs(props)\n const formData: ILoginRegisterFormData = reactive({\n username: '',\n email: '',\n password: '',\n })\n const buttonText: ComputedRef = computed(() =>\n getButtonText(props.action)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const isRegistrationSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const registration_disabled: ComputedRef = computed(\n () =>\n props.action === 'register' && !appConfig.value.is_registration_enabled\n )\n const sendingEmailDisabled: ComputedRef = computed(\n () =>\n ['reset-request', 'account-confirmation-resend'].includes(props.action) &&\n !appConfig.value.is_email_sending_enabled\n )\n const formErrors = ref(false)\n\n function getButtonText(action: string): string {\n switch (action) {\n case 'reset-request':\n case 'reset':\n return 'buttons.SUBMIT'\n default:\n return `buttons.${props.action.toUpperCase()}`\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n function updatePassword(password: string) {\n formData.password = password\n }\n function onSubmit(actionType: string) {\n switch (actionType) {\n case 'reset':\n if (!props.token) {\n return store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n 'user.INVALID_TOKEN'\n )\n }\n return store.dispatch(AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD, {\n password: formData.password,\n token: props.token,\n })\n case 'reset-request':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST,\n {\n email: formData.email,\n }\n )\n case 'account-confirmation-resend':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,\n {\n email: formData.email,\n }\n )\n default:\n formData['language'] = language.value\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER, {\n actionType,\n formData,\n redirectUrl: route.query.from,\n })\n }\n }\n function resetFormData() {\n formData.username = ''\n formData.email = ''\n formData.password = ''\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => route.path,\n async () => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n formErrors.value = false\n resetFormData()\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"user-auth-form\",\n class: _normalizeClass(`${\n ['reset', 'reset-request'].includes(_unref(action)) ? _unref(action) : 'user-form'\n }`)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"form-box\", {\n disabled: _unref(registration_disabled),\n }])\n }, [\n (_unref(registration_disabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 0,\n message: \"user.REGISTER_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(sendingEmailDisabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 1,\n message: \"admin.EMAIL_SENDING_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess) || _unref(isRegistrationSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n _unref(isRegistrationSuccess)\n ? `REGISTRATION${\n _unref(appConfig).is_email_sending_enabled ? '_WITH_EMAIL' : ''\n }`\n : 'UPDATE'\n }`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (onSubmit(_unref(action))), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(action) === 'register')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: \"username\",\n disabled: _unref(registration_disabled),\n required: \"\",\n pattern: \"[a-zA-Z0-9_]+\",\n minlength: \"3\",\n maxlength: \"30\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData.username) = $event)),\n placeholder: _ctx.$t('user.USERNAME')\n }, null, 40, _hoisted_4)), [\n [_vModelText, formData.username]\n ])\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.USERNAME_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) !== 'reset')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 2,\n id: \"email\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled),\n required: \"\",\n onInvalid: invalidateForm,\n type: \"email\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData.email) = $event)),\n placeholder: _ctx.$t('user.EMAIL')\n }, null, 40, _hoisted_7)), [\n [_vModelText, formData.email]\n ])\n : _createCommentVNode(\"\", true),\n (\n [\n 'reset-request',\n 'register',\n 'account-confirmation-resend',\n ].includes(_unref(action))\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EMAIL_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (\n !['account-confirmation-resend', 'reset-request'].includes(\n _unref(action)\n )\n )\n ? (_openBlock(), _createBlock(PasswordInput, {\n key: 4,\n disabled: _unref(registration_disabled),\n required: true,\n placeholder: \n _unref(action) === 'reset'\n ? _ctx.$t('user.ENTER_PASSWORD')\n : _ctx.$t('user.PASSWORD')\n ,\n password: formData.password,\n checkStrength: ['reset', 'register'].includes(_unref(action)),\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"placeholder\", \"password\", \"checkStrength\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled)\n }, _toDisplayString(_ctx.$t(_unref(buttonText))), 9, _hoisted_10)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/register\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"links\",\n to: \"/password-reset/request\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_FORGOTTEN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.ALREADY_HAVE_ACCOUNT')), 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/login\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (\n ['login', 'register'].includes(_unref(action)) &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_NOT_RECEIVED')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 6,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ], 2))\n}\n}\n\n})","import script from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAuthForm.vue?vue&type=style&index=0&id=b3c885de&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b3c885de\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { computed } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPicture',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const authUserPictureUrl = computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture?${Date.now()}`\n : ''\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUserPictureUrl) !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _unref(authUserPictureUrl)\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}\n}\n\n})","import script from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=26bea286&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./NoWorkouts.vue?vue&type=template&id=4b4d15fb&scoped=true\"\nconst script = {}\n\nimport \"./NoWorkouts.vue?vue&type=style&index=0&id=4b4d15fb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4d15fb\"]])\n\nexport default __exports__","var map = {\n\t\"./de/de.ts\": 9923,\n\t\"./en/en.ts\": 8757,\n\t\"./fr/fr.ts\": 6625\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4612;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\",\"881\":\"password\"}[chunkId] || chunkId) + \".\" + {\"24\":\"987a4de8\",\"93\":\"97ccdf6e\",\"193\":\"61163b0e\",\"243\":\"27c8fef5\",\"328\":\"ab9e5f5f\",\"401\":\"39602236\",\"431\":\"5976068e\",\"633\":\"9a092c9a\",\"845\":\"dd30724d\",\"858\":\"0441e3cc\",\"881\":\"c426a91d\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\"}[chunkId] + \".\" + {\"24\":\"e2527ec6\",\"193\":\"40e24e75\",\"328\":\"73df498d\",\"401\":\"dd7c6bdb\",\"845\":\"203e78e2\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"fittrackee_client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"24\":1,\"193\":1,\"328\":1,\"401\":1,\"845\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfittrackee_client\"] = self[\"webpackChunkfittrackee_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(6331); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["authApi","axios","baseURL","getApiUrl","interceptors","request","use","config","controller","AbortController","signal","requestKey","removeRequestIfPending","pendingRequests","authToken","store","AUTH_USER_STORE","auth","headers","Authorization","error","Promise","reject","response","message","Map","generateRequestKey","method","url","params","data","JSON","stringify","join","has","get","abort","delete","loadLocaleMessages","locales","require","messages","keys","forEach","key","matched","match","length","locale","default","createI18n","legacy","fallbackLocale","globalInjection","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","about","AboutTranslations","admin","AdministrationTranslations","api","ApiTranslations","buttons","ButtonsTranslations","common","CommonTranslations","dashboard","DashboardTranslations","ErrorTranslations","oauth2","OAuth2Translations","sports","SportsTranslations","statistics","StatisticsTranslations","user","UserTranslations","workouts","WorkoutsTranslations","register","ready","console","log","registered","cached","updatefound","updated","offline","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","_hoisted_2","class","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","href","target","rel","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","__exports__","emits","emit","useStore","authUser","computed","getters","isAuthenticated","language","ROOT_STORE","isMenuOpen","ref","openMenu","value","closeMenu","updateLanguage","option","dispatch","toString","logout","_component_Dropdown","onClick","$event","$router","push","_normalizeClass","capitalize","_createBlock","UserPicture","username","availableLanguages","options","selected","onSelected","ErrorImg","innerHTML","appConfig","appLoading","hideScrollBar","displayScrollButton","updateHideScrollBar","isScrolledToBottom","element","getBoundingClientRect","top","window","innerHeight","bottom","scroll","onscroll","document","querySelector","scrollToTop","scrollTo","behavior","setTimeout","initLanguage","navigatorLanguage","navigator","split","localeFromLanguage","e","onBeforeMount","onMounted","_component_Loader","_component_router_view","_Fragment","NavBar","onMenuInteraction","NoConfig","Footer","admin_contact","name","charLimit","disabled","type","Boolean","input","text","updateText","event","watch","_withDirectives","maxLenght","onInput","_vModelText","distance","unitFrom","useImperialUnits","digits","displayUnit","speed","strong","unitTo","units","defaultTarget","convertedDistance","convertDistance","parseFloat","toFixed","route","useRoute","isOpen","dropdownOptions","map","toggleDropdown","updateSelected","path","_renderSlot","$slots","_renderList","index","label","Array","isArray","subMessage","xmlns","x","y","viewBox","style","d","render","_hoisted_20","cx","cy","r","sportLabel","color","title","sportColors","inject","_normalizeStyle","fill","CyclingSport","CyclingTransport","Hiking","MountainBiking","MountainBikingElectric","Rowing","Running","SkiingAlpine","SkiingCrossCountry","Snowshoes","Trail","Walking","script","strongMessage","errorMessages","onUnmounted","commit","_component_i18n_t","_component_ErrorMessage","_component_Card","content","keypath","customComponents","AlertMessage","Card","CustomTextArea","Distance","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","undefined","Chart","BarElement","LineElement","PointElement","Legend","Title","Tooltip","Filler","BarController","CategoryScale","LineController","LinearScale","ChartDataLabels","app","createApp","App","provide","i18n","router","VueFullscreen","directive","component","mount","for","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","edition","useRouter","appData","reactive","max_users","max_single_file_size","max_zip_file_size","gpx_limit_import","updateForm","Object","includes","getFileSizeInMB","onCancel","onSubmit","formData","assign","_withModifiers","min","step","icon","appStatistics","uploadDirSize","getReadableFileSize","uploads_dir_size","StatCard","users","size","suffix","AppStatsCards","is_registration_enabled","is_email_sending_enabled","t","useI18n","translatedSports","translateSports","SPORTS_STORE","updateSportStatus","isActive","_component_SportImage","sport","translatedLabel","is_active","danger","has_workouts","query","q","searchUsers","resetFilter","onKeyup","_withKeys","placeholder","trim","orderByList","defaultOrderBy","getQuery","USERS_STORE","pagination","loadUsers","queryParams","reloadUsers","updateUser","queryParam","queryValue","page","newQuery","UsersNameFilter","onFilterOnUsername","FilterSelects","sort","sortList","order_by","onUpdateSelect","email","format","getDateWithTZ","created_at","timezone","nb_workouts","Pagination","tabs","selectedTab","getPath","tab","toLocaleLowerCase","checked","UserHeader","UserProfileTabs","languageLabels","fistDayOfWeek","weekm","display_ascent","imperial_units","loading","userForm","password","new_password","isSuccess","emailUpdate","formErrors","displayModal","invalidateForm","updateUserForm","updatePassword","updateNewPassword","updateProfile","payload","updateDisplayModal","deleteAccount","async","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","first_name","last_name","birth_date","location","bio","registrationDate","Date","updateBio","_component_CustomTextArea","onUpdateValue","fileSizeLimit","pictureFile","deleteUserPicture","updatePictureFile","files","updateUserPicture","picture","accept","timeZones","tzList","focusItemIndex","matchTimezone","toLowerCase","onMouseOver","onUpdateTimezone","onEnter","preventDefault","firstElementChild","openDropdown","onKeydown","ref_key","filter","tz","focus","onMouseover","autofocus","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","weekStart","imperialUnits","ascentData","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","start","unit","status","oauth2_scopes","admin_oauth2_scopes","appForm","client_name","client_uri","client_description","redirect_uri","scopes","filtered_scopes","getScopes","redirect_uris","scope","OAUTH2_STORE","updateDescription","updateScopes","indexOf","splice","admin_scopes","description","onChange","client","loadApp","client_id","authorizeApp","response_type","state","code_challenge","code_challenge_method","afterCreation","revocationSuccessful","messageToDisplay","idCopied","secretCopied","clipboardSupport","loadClient","updateMessageToDisplay","forDelete","confirmAction","clientId","copyIdToClipboard","clipboard","writeText","copySecretToClipboard","client_secret","newValue","issued_at","website","clients","getClientsQuery","clientsQuery","getNumberQueryValue","defaultPage","loadClients","_hoisted_25","_hoisted_26","_hoisted_27","isEdition","defaultColor","sports_list","sportPayload","sport_id","stopped_speed_threshold","updateSportInEdition","is_active_for_user","resetSportPayload","isSportInEdition","sportId","updateColor","updateThreshold","updateIsActive","updateSport","resetSport","newIsLoading","src","alt","BikePic","About","workout","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","ascent","descent","per_page","initWorkoutsCount","loadWorkouts","WORKOUTS_STORE","moreWorkoutsExist","previous_workout","defaultOrder","loadMoreWorkouts","WorkoutCard","s","NoWorkouts","displayHARecord","sportColor","records","record","record_type","height","width","colors","datasets","angleOffset","radius","circumference","Math","PI","calculateStrokeDashOffset","percentage","returnCircleTransformValue","rotation","entries","stroke","transform","isHidden","togglePane","stopPropagation","_directive_click_outside","_resolveDirective","DonutChart","CalendarWorkout","getSportLabel","getSportColor","chartDatasets","getDonutDatasets","sportIdColors","displayedWorkoutCount","slice","CalendarWorkoutsChart","currentDay","endDate","startDate","weekStartingMonday","rows","getDays","day","days","i","addDays","isWeekEnd","filterWorkouts","isSameDay","reverse","row","isSameMonth","today","isToday","CalendarWorkouts","localeOptions","dateFormat","calendarDates","getCalendarStartAndEnd","calendarWorkouts","getCalendarWorkouts","apiParams","from","end","displayNextMonth","addMonths","displayPreviousMonth","subMonths","CalendarHeader","onDisplayNextMonth","onDisplayPreviousMonth","CalendarDays","CalendarCells","date","chartParams","duration","startOfMonth","endOfMonth","selectedSportIds","StatChart","formatRecord","distanceUnitFrom","distanceUnitTo","ascentUnitFrom","ascentUnitTo","Error","formatWorkoutDate","workout_id","sortRecords","a","b","recordALabel","recordBLabel","getRecordsBySports","reduce","sportList","find","sportTranslatedLabel","getTranslatedRecords","translatedRecords","recordsBySport","RecordsCard","userTotalDuration","total_duration","totalDuration","get_duration","totalDistance","total_distance","totalAscent","total_ascent","nb_sports","isSelected","updateDisplayColumn","UserStatsCards","UserMonthStats","UserRecords","UserCalendar","Timeline","NotFound","action","LoginOrRegisterForm","getTabFromPath","regex","tag","replace","toUpperCase","routes","Dashboard","LoginOrRegister","children","Profile","UserInfos","UserPreferences","UserSportPreferences","UserApps","UserAppsList","UserApp","AddUserApp","AuthorizeUserApp","ProfileEdition","UserInfosEdition","UserAccountEdition","UserPictureEdition","UserPreferencesEdition","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","then","fullPath","catch","AuthUserActions","AuthUserGetters","AuthUserMutations","OAuth2Actions","OAuth2Getters","OAuth2Mutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ACTIONS","GETTERS","MUTATIONS","STATS_STORE","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","deleteUserAccount","context","res","handleError","actions","finally","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","setAttribute","application","root","enUS","sportsState","filterType","statisticsState","updatedUser","usersState","getWorkouts","segmentUrl","segmentId","segments","chart_data","gpx","file","notes","calendar_workouts","timeline_workouts","user_workouts","workoutData","concat","chartData","workoutsState","modules","authUserModule","oAuthModule","sportsModule","statsModule","usersModule","workoutsModule","createStore","VuexStore","defaultPerPage","defaultValue","getStringQueryValue","availableValues","locationQuery","queryOptions","defaultSort","order","workoutsPayloadKeys","getRange","stop","rangePagination","pages","currentPage","getStartDate","startOfWeek","weekStartsOn","startOfYear","incrementDate","addYears","dateInUTC","utcToZonedTime","monthStart","monthEnd","endOfWeek","dateTime","timeFormat","workout_time","suffixes","fileSize","asText","floor","pow","msg","m","de","en","fr","availableLocales","l","sortSports","sportATranslatedLabel","sportBTranslatedLabel","activeStatus","sportsToInclude","dateFormats","week","chart","month","year","datasetKeys","getDateKeys","getStatisticsChartDataset","isLineChart","dataset","backgroundColor","borderColor","spanGaps","getDatasets","displayedSports","average_speed","total_descent","convertStatsValue","datasetKey","convertStatsDistance","formatStats","displayedSportsId","apiStats","dayKeys","labels","sportsId","displayedSport","getStatsDateParams","timeFrame","subYears","endOfYear","updateChartParams","backward","subWeeks","addWeeks","ft","system","multiplier","mi","km","factors","metric","imperial","borderWidth","yAxisID","elevation","distance_labels","duration_labels","coordinates","latitude","longitude","total","count","perPage","onSelectUpdate","nb","buttonText","timer","errorDisplayed","displayError","clearTimeout","cursor","has_prev","navigate","has_next","active","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnEnPackage","zxcvbnFrPackage","zxcvbnDePackage","zxcvbnLangPackages","zxcvbnPackage","graphs","adjacencyGraphs","dictionary","zxcvbnOptions","getPasswordStrength","strength","passwordScore","passwordStrength","passwordSuggestions","backgroundSize","calculatePasswordStrength","zxcvbnResult","zxcvbn","score","feedback","suggestions","newLanguageValue","newPassword","max","suggestion","showPassword","passwordValue","togglePassword","invalidPassword","minlength","_vModelDynamic","PasswordStrength","displayHover","imageUrl","backgroundImage","$props","$setup","$data","$options","_component_Chart","hideChartIfNoData","emptyStats","displayedData","args","updateDisplayData","fullStats","displayedSportIds","_component_BarChart","_mergeProps","barChartProps","formatDuration","totalSeconds","formatWithUnits","String","hours","padStart","minutes","seconds","formatTooltipValue","defineComponent","components","BarChart","getNumber","isNaN","getSum","getUnit","parse","responsive","maintainAspectRatio","animation","layout","padding","scales","stacked","grid","drawOnChartArea","ticks","maxTicksLimit","callback","afterFit","scale","plugins","datalabels","anchor","align","chartArea","display","formatter","dataIndex","datasetIndex","legend","tooltip","interaction","intersect","mode","position","tooltipItem","formattedValue","callbacks","parsed","footer","tooltipItems","sum","useBarChart","formattedStats","getStatistics","getApiParams","time","newParams","birthDate","displayUserEmailForm","newUserEmail","currentAction","resetUserPassword","confirmUserAccount","displayEmailForm","resetErrorsAndSuccess","email_to_confirm","hideEmailForm","updateUserEmail","newIsSuccess","_component_AlertMessage","go","getButtonText","registration_disabled","sendingEmailDisabled","resetFormData","pattern","maxlength","authUserPictureUrl","now","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","this","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","onLinkComplete","errorType","realHref","err","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/app.66d3a1a4.js","mappings":"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AG,gCAAiC,EAAG5B,KAC/DwB,EAAAA,EAAAA,IAAOnD,GAAMiZ,UACTlW,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACL0D,MAAO,SACP2D,QAAS8T,IACR3V,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gCAAiC,KAC7DE,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,eACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iCAAkC,MAE/D,GAAIlC,OAzCX,CA6CD,ICtHD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCRO,MAAM8X,GAAY,CACvB,iBACA,eACA,iBACA,gBACA,eACA,oBACA,eACA,kBACA,sBACA,cACA,kBACA,eACA,gBACA,kBACA,iBACA,kBACA,kBACA,iBACA,eACA,kBACA,eACA,oBACA,oBACA,iCACA,8BACA,4BACA,0BACA,6BACA,4BACA,iCACA,0BACA,6BACA,6BACA,4BACA,4BACA,mBACA,mBACA,gBACA,yBACA,mBACA,gBACA,iBACA,uBACA,oBACA,iBACA,gBACA,wBACA,uBACA,iBACA,kBACA,kBACA,kBACA,oBACA,qBACA,kBACA,iBACA,kBACA,uBACA,iBACA,uBACA,iBACA,kBACA,mBACA,mBACA,sBACA,oBACA,sBACA,oBACA,kBACA,oBACA,qBACA,oBACA,oBACA,iBACA,kBACA,iBACA,qBACA,+BACA,uBACA,0BACA,6BACA,4BACA,wBACA,4BACA,0BACA,iBACA,kBACA,kBACA,iBACA,8BACA,8BACA,iBACA,eACA,sBACA,iBACA,kBACA,iBACA,qBACA,oBACA,mBACA,oBACA,iBACA,qBACA,sBACA,mBACA,kBACA,oBACA,qBACA,iBACA,mBACA,kBACA,eACA,kBACA,8BACA,8BACA,iCACA,kBACA,iBACA,sBACA,qBACA,kBACA,yBACA,wBACA,sBACA,sBACA,uBACA,sBACA,uBACA,iBACA,iBACA,mBACA,qBACA,mBACA,mBACA,wBACA,oBACA,uBACA,gBACA,mBACA,wBACA,sBACA,gBACA,sBACA,kBACA,kBACA,oBACA,qBACA,mBACA,kBACA,sBACA,mBACA,mBACA,4BACA,uBACA,oBACA,oBACA,qBACA,mBACA,mBACA,oBACA,cACA,aACA,cACA,aACA,cACA,gBACA,cACA,eACA,YACA,eACA,eACA,cACA,eACA,cACA,aACA,kBACA,eACA,gBACA,aACA,YACA,aACA,gBACA,iBACA,YACA,cACA,mBACA,iBACA,YACA,eACA,eACA,gBACA,iBACA,aACA,iBACA,eACA,iBACA,gBACA,eACA,mBACA,oBACA,eACA,aACA,eACA,gBACA,cACA,eACA,oBACA,mBACA,YACA,YACA,iBACA,iBACA,aACA,gBACA,iBACA,cACA,gBACA,iBACA,aACA,gBACA,iBACA,qBACA,cACA,gBACA,eACA,cACA,eACA,aACA,aACA,mBACA,cACA,gBACA,mBACA,eACA,cACA,qBACA,eACA,kBACA,mBACA,kBACA,sBACA,iBACA,mBACA,qBACA,yBACA,mBACA,qBACA,qBACA,wBACA,mBACA,mBACA,kBACA,mBACA,qBACA,sBACA,sBACA,kBACA,mBACA,mBACA,iBACA,mBACA,gBACA,kBACA,gBACA,kBACA,mBACA,kBACA,kBACA,oBACA,gBACA,mBACA,kBACA,kBACA,qBACA,cACA,eACA,gBACA,gBACA,oBACA,gBACA,eACA,eACA,gBACA,gBACA,cACA,eACA,gBACA,cACA,cACA,gBACA,iBACA,oBACA,eACA,mBACA,iBACA,gBACA,mBACA,kBACA,gBACA,iBACA,mBACA,gBACA,oBACA,gBACA,gBACA,mBACA,eACA,mBACA,cACA,kBACA,mBACA,iBACA,eACA,mBACA,uBACA,kBACA,gBACA,iBACA,gBACA,oBACA,kBACA,eACA,mBACA,oBACA,kBACA,sBACA,eACA,mBACA,qBACA,iBACA,oBACA,iBACA,oBACA,gBACA,eACA,kBACA,iBACA,oBACA,gBACA,mBACA,kBACA,uBACA,oBACA,iBACA,iBACA,oBACA,eACA,kBCxVIlY,GAAa,CAAEC,GAAI,eACnBC,GAAa,CAAC,QAAS,WAAY,aACnCE,GAAa,CAAC,UAAW,cAAe,aAW9C,QAA4Bc,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,mBACRC,MAAO,CACLkG,MAAO,KACPH,SAAU,CAAEC,KAAMC,QAASvK,SAAS,IAEtC4F,MAAO,CAAC,kBACRnB,MAAMC,GAAc,KAAEmB,IAExB,MAAMvB,EAAQI,GAMN,MAAE8F,EAAF,SAASH,IAAa1F,EAAAA,EAAAA,IAAOL,GAC7BgT,GAAwBhR,EAAAA,EAAAA,IAAIhC,EAAMkG,OAClCyB,GAAuB3F,EAAAA,EAAAA,KAAI,GAC3B+U,GAAuC/U,EAAAA,EAAAA,IAAI,MAC3CgV,GAA8BhV,EAAAA,EAAAA,IAAI,GAExC,SAASiV,EAAc9G,GACrB,OAAOA,EAAE+G,cAAc3b,MAAMyX,EAAS9Q,MAAMgV,cAC7C,CACD,SAASC,EAAY/O,GACnB4O,EAAe9U,MAAQkG,CACxB,CACD,SAASgP,EAAiBlV,GACxB8Q,EAAS9Q,MAAQA,EACjByF,EAAOzF,OAAQ,EACfX,EAAK,iBAAkBW,EACxB,CACD,SAASmV,EAAQhR,GACfA,EAAMiR,iBACFP,EAAO7U,OAAOqV,mBAAmB/T,WACnC4T,EAAiBL,EAAO7U,OAAOqV,mBAAmB/T,UAErD,CACD,SAASgU,EAAanR,GACpBA,EAAMiR,iBACN3P,EAAOzF,OAAQ,EACf8Q,EAAS9Q,MAAQmE,EAAMzG,OAAOsC,MAAMqP,MACrC,CASH,OAPEjL,EAAAA,EAAAA,KACE,IAAMtG,EAAMkG,QACXhE,IACC8Q,EAAS9Q,MAAQA,CAAjB,IAIC,CAAC5B,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,QAAS,CAC3BH,MAAO,oBACPF,GAAI,WACJgH,KAAM,WACN3D,MAAO8Q,EAAS9Q,MAChB6D,UAAUjF,EAAAA,EAAAA,IAAOiF,GACjBuP,SAAU,GACVmC,UAAW,CACTlX,EAAO,KAAOA,EAAO,IAAK8Q,EAAAA,EAAAA,KAAW1O,GAAiByU,GAAiBtW,EAAAA,EAAAA,IAAOoF,KAAU,CAAC,UACzFmL,EAAAA,EAAAA,IAAUgG,EAAS,CAAC,WAEtB5Q,QAAS+Q,GACR,KAAM,GAAI1Y,IACZ6I,EAAOzF,QACHxB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM,CACvCtF,IAAK,EACL0D,MAAO,mBACP2Y,QAAS,SACT1V,IAAK+U,GACJ,GACArW,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOgW,IAAWa,QAAQxH,GAAM8G,EAAc9G,MAAK,CAACyH,EAAIxP,MAClH1H,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM,CAC9CtF,IAAKuc,EACL7Y,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,mBAAoB,CAAE+U,MAAOzP,IAAU4O,EAAe9U,SAC9EQ,QAAUC,GAAiByU,EAAiBQ,GAC5CE,YAAcnV,GAAiBwU,EAAY/O,GAC3C2P,UAAW3P,IAAU4O,EAAe9U,QACnCrB,EAAAA,EAAAA,IAAiB+W,GAAK,GAAI5Y,OAC3B,OACH,OACHoC,EAAAA,EAAAA,IAAoB,IAAI,KAG/B,ICjGD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MACMxC,GAAa,CAAEC,GAAI,4BACnBC,GAAa,CAAEC,MAAO,yBACtBC,GAAa,CAAC,YACdC,GAAa,CAAEF,MAAO,cACtBI,GAAa,CAAC,YACdC,GAAa,CAAC,SACdC,GAAa,CAAEN,MAAO,cACtBO,GAAa,CAAEP,MAAO,8BACtBQ,GAAa,CAAER,MAAO,oBACtBS,GAAc,CAAET,MAAO,cACvBU,GAAc,CAAC,KAAM,OAAQ,UAAW,WAAY,WACpDC,GAAc,CAAEX,MAAO,kBACvB8O,GAAc,CAAE9O,MAAO,8BACvB+O,GAAc,CAAE/O,MAAO,oBACvBgP,GAAc,CAAEhP,MAAO,cACvBiP,GAAc,CAAC,KAAM,OAAQ,UAAW,WAAY,WACpDC,GAAc,CAAElP,MAAO,kBACvBmP,GAAc,CAAEnP,MAAO,8BACvBoP,GAAc,CAAEpP,MAAO,oBACvBiK,GAAc,CAAEjK,MAAO,cACvBiZ,GAAc,CAAC,KAAM,OAAQ,UAAW,WAAY,WACpDC,GAAc,CAAElZ,MAAO,kBACvBmZ,GAAc,CAAEnZ,MAAO,gBACvBoZ,GAAc,CAClBpZ,MAAO,UACPiH,KAAM,UAeR,QAA4BlG,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,yBACRC,MAAO,CACLrC,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,EAMN5G,GAAQgI,EAAAA,EAAAA,KAERyS,GAAoC1F,EAAAA,EAAAA,IAAS,CACjDuF,gBAAgB,EAChBC,gBAAgB,EAChBlS,SAAU,GACVmR,SAAU,eACVa,OAAO,IAEHuE,EAAY,CAChB,CACE/P,MAAO,SACPnG,OAAO,GAET,CACEmG,MAAO,SACPnG,OAAO,IAGLmW,EAAgB,CACpB,CACEhQ,MAAO,SACPnG,OAAO,GAET,CACEmG,MAAO,WACPnG,OAAO,IAGLoW,EAAa,CACjB,CACEjQ,MAAO,YACPnG,OAAO,GAET,CACEmG,MAAO,SACPnG,OAAO,IAGL8R,GAAUtS,EAAAA,EAAAA,KACd,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,gBAEhBgR,GAAuD/I,EAAAA,EAAAA,KAC3D,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,kBAStB,SAAS2S,EAAe9W,GACtBsW,EAASH,eAAiBnW,EAAKmW,eAC/BG,EAASF,iBAAiBpW,EAAKoW,gBAAiBpW,EAAKoW,eACrDE,EAASpS,SAAWlE,EAAKkE,SAAWlE,EAAKkE,SAAW,KACpDoS,EAASjB,SAAWrV,EAAKqV,SAAWrV,EAAKqV,SAAW,eACpDiB,EAASJ,QAAQlW,EAAKkW,OAAQlW,EAAKkW,KACpC,CACD,SAASe,IACPpb,EAAM8I,SAAS7I,EAAAA,GAAAA,QAAAA,wBAAiDwa,EACjE,CACD,SAASsE,EAASrW,GAChB+R,EAASjB,SAAW9Q,CACrB,CACD,SAASsW,EAAoBtW,GAC3B+R,EAASH,eAAiB5R,CAC3B,CACD,SAASuW,EAAmBvW,GAC1B+R,EAASF,eAAiB7R,CAC3B,CACD,SAASwW,EAAYxW,GACnB+R,EAASJ,MAAQ3R,CAClB,CAMH,OAjCEkD,EAAAA,EAAAA,KAAU,KACJpF,EAAMrC,MACR8W,EAAezU,EAAMrC,KACtB,KA0BH+M,EAAAA,EAAAA,KAAY,KACVlR,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,qBAAb,IAGG,CAACxB,EAAUC,KAChB,MAAMsK,GAA0BpK,EAAAA,EAAAA,IAAkB,gBAElD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACpCgC,EAAAA,EAAAA,IAAO2J,KACH/J,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa6H,EAAyB,CACnDxP,IAAK,EACLpB,SAAS6G,EAAAA,EAAAA,IAAO2J,IACf,KAAM,EAAG,CAAC,cACbrJ,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,OAAQ,CAC1B+P,UAAUG,EAAAA,EAAAA,IAAewF,EAAe,CAAC,aACxC,EACD1V,EAAAA,EAAAA,GAAoB,QAASD,GAAY,EACvC2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,0BAA4B,IAAK,IAC3EqF,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,SAAU,CAC5CL,GAAI,WACJ,sBAAuB0B,EAAO,KAAOA,EAAO,GAAMoC,GAAkBsR,EAASpS,SAAYc,GACzFoD,UAAUjF,EAAAA,EAAAA,IAAOkT,IAChB,GACAtT,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOqC,GAAAA,KAAsBwV,KACvFjY,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAClDuB,MAAOyW,EAAKzW,MACZ7G,IAAKsd,EAAKzW,QACTrB,EAAAA,EAAAA,IAAiB8X,EAAKtQ,OAAQ,EAAGjJ,OAClC,OACH,EAAGD,IAAa,CACjB,CAACyZ,EAAAA,GAAe3E,EAASpS,eAG7B3C,EAAAA,EAAAA,GAAoB,QAASG,GAAY,EACvCuB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,0BAA4B,IAAK,IAC3EH,EAAAA,EAAAA,IAAa8X,GAAkB,CAC7B3S,MAAO+N,EAASjB,SAChBjN,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBoD,iBAAkBmB,GACjB,KAAM,EAAG,CAAC,QAAS,gBAExBrZ,EAAAA,EAAAA,GAAoB,MAAOI,GAAY,EACrCJ,EAAAA,EAAAA,GAAoB,OAAQK,IAAYsB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mCAAoC,IACrGhC,EAAAA,EAAAA,GAAoB,MAAOM,GAAa,GACrCkB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAYiQ,GAAYU,IACnE5Z,EAAAA,EAAAA,GAAoB,QAAS,CAClC7D,IAAKyd,EAAMzQ,OACV,EACDnJ,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNnH,GAAIia,EAAMzQ,MACVxC,KAAMiT,EAAMzQ,MACZmL,QAASsF,EAAM5W,QAAU+R,EAASJ,MAClC9N,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBvN,QAAU9D,GAAiB+V,EAAYI,EAAM5W,QAC5C,KAAM,GAAIzC,KACbP,EAAAA,EAAAA,GAAoB,OAAQQ,IAAamB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gBAAgB4X,EAAMzQ,UAAW,OAEnG,UAGRnJ,EAAAA,EAAAA,GAAoB,MAAO2O,GAAa,EACtC3O,EAAAA,EAAAA,GAAoB,OAAQ4O,IAAajN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,IAChGhC,EAAAA,EAAAA,GAAoB,MAAO6O,GAAa,GACrCrN,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAYkQ,GAAgBU,IACvE7Z,EAAAA,EAAAA,GAAoB,QAAS,CAClC7D,IAAK0d,EAAK1Q,OACT,EACDnJ,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNnH,GAAIka,EAAK1Q,MACTxC,KAAMkT,EAAK1Q,MACXmL,QAASuF,EAAK7W,QAAU+R,EAASF,eACjChO,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBvN,QAAU9D,GAAiB8V,EAAmBM,EAAK7W,QAClD,KAAM,GAAI8L,KACb9O,EAAAA,EAAAA,GAAoB,OAAQ+O,IAAapN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAsB6X,EAAK1Q,UAAW,OAExG,UAGRnJ,EAAAA,EAAAA,GAAoB,MAAOgP,GAAa,EACtChP,EAAAA,EAAAA,GAAoB,OAAQiP,IAAatN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,IAChGhC,EAAAA,EAAAA,GAAoB,MAAO8J,GAAa,GACrCtI,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAYmQ,GAAaU,IACpE9Z,EAAAA,EAAAA,GAAoB,QAAS,CAClC7D,IAAK2d,EAAO3Q,OACX,EACDnJ,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNnH,GAAIma,EAAO3Q,MACXxC,KAAMmT,EAAO3Q,MACbmL,QAASwF,EAAO9W,QAAU+R,EAASH,eACnC/N,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBvN,QAAU9D,GAAiB6V,EAAoBQ,EAAO9W,QACrD,KAAM,GAAI8V,KACb9Y,EAAAA,EAAAA,GAAoB,OAAQ+Y,IAAapX,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,UAAU8X,EAAO3Q,UAAW,OAE9F,UAGRnJ,EAAAA,EAAAA,GAAoB,MAAOgZ,GAAa,EACtChZ,EAAAA,EAAAA,GAAoB,SAAUiZ,IAAatX,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,IACxFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBrC,EAAKsC,QAAQC,KAAK,yBAA0B,CAAC,eAChHhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,MAEjD,GAAIlC,OAvGX,CA2GD,IChPD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCRO,MAAMia,GAAgB,CAC3B,eACA,gBACA,aACA,cACA,gBACA,kBAGWC,GAAsB,CAAC,qBCL9Bta,GAAa,CAAEC,GAAI,kBACnBC,GAAa,CAAED,GAAI,oBACnBG,GAAa,CAAEH,GAAI,aACnBI,GAAa,CAAC,YACdE,GAAa,CAAEJ,MAAO,cACtBK,GAAa,CAAEL,MAAO,aACtBM,GAAa,CAAEuO,IAAK,YACpBtO,GAAa,CAAEP,MAAO,aACtBQ,GAAa,CAAEqO,IAAK,mBACpBpO,GAAc,CAAET,MAAO,aACvBU,GAAc,CAAEmO,IAAK,WACrBlO,GAAc,CAAEX,MAAO,aACvB8O,GAAc,CAAED,IAAK,oBACrBE,GAAc,CAAE/O,MAAO,mBACvBgP,GAAc,CAAEhP,MAAO,yBACvBiP,GAAc,CAAEjP,MAAO,eACvBkP,GAAc,CAAC,OAAQ,UAAW,YAClCC,GAAc,CAAC,aACfC,GAAc,CAAEpP,MAAO,gBACvBiK,GAAc,CAAC,YAcrB,QAA4BlJ,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,aACRC,MAAO,CACLyB,SAAU,MAEZtB,MAAMC,GAER,MAAMJ,EAAQI,EAMN5G,GAAQgI,EAAAA,EAAAA,KACR2X,GAAU5K,EAAAA,EAAAA,IAAS,CACvB6K,YAAa,GACbC,WAAY,GACZC,mBAAoB,GACpBC,aAAc,KAEVC,GAAmBjL,EAAAA,EAAAA,IAAS,IAC5BkL,GAAkB/X,EAAAA,EAAAA,KAAS,IAC/BgY,EAAU1Z,EAAMyB,SAAUyX,GAAqBD,MAGjD,SAAS9L,IACP,MAAM0H,EAAgC,CACpCuE,YAAaD,EAAQC,YACrBE,mBAAoBH,EAAQG,mBAC5BD,WAAYF,EAAQE,WACpBM,cAAe,CAACR,EAAQI,cACxBK,MAAOJ,EAAOhH,OAAO9X,KAAK,MAE5BlB,EAAM8I,SAASuX,EAAAA,GAAAA,QAAAA,cAAoChF,EACpD,CACD,SAASiF,EAAkB5X,GACzBiX,EAAQG,mBAAqBpX,CAC9B,CACD,SAAS6X,EAAaH,GACpB,MAAMxR,EAAQoR,EAAOQ,QAAQJ,GACzBxR,GAAS,EACXoR,EAAOS,OAAO7R,EAAO,GAErBoR,EAAO3W,KAAK+W,EAEf,CACD,SAASF,EACPjY,EACAyY,EACAV,GAEA,MAAMC,EAAkB,IAAID,GAI5B,OAHI/X,EAAS/E,OACX+c,EAAgB5W,QAAQqX,GAEnBT,EAAgBjH,MACxB,CAEH,MAAO,CAAClS,EAAUC,KAChB,MAAM6V,GAA4B3V,EAAAA,EAAAA,IAAkB,kBAEpD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,KAAMJ,IAAY+B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yBAA0B,IACzFhC,EAAAA,EAAAA,GAAoB,MAAOF,GAAY,EACrCE,EAAAA,EAAAA,GAAoB,OAAQ,CAC1B+P,UAAUG,EAAAA,EAAAA,IAAejC,EAAW,CAAC,aACpC,EACDjO,EAAAA,EAAAA,GAAoB,MAAOC,GAAY,EACrCD,EAAAA,EAAAA,GAAoB,MAAOE,GAAY,EACrCF,EAAAA,EAAAA,GAAoB,QAASG,IAAYwB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAsB,IAAK,IAC7FqF,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,QAAS,CAC3CL,GAAI,WACJmH,KAAM,OACNsP,SAAU,GACV,sBAAuB/U,EAAO,KAAOA,EAAO,GAAMoC,GAAkBwW,EAAQC,YAAezW,IAC1F,KAAM,KAAM,CACb,CAAC+D,EAAAA,GAAayS,EAAQC,kBAG1Bla,EAAAA,EAAAA,GAAoB,MAAOI,GAAY,EACrCJ,EAAAA,EAAAA,GAAoB,QAASK,IAAYsB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2BAA4B,IAC9FH,EAAAA,EAAAA,IAAaqV,EAA2B,CACtCvQ,KAAM,kBACNC,UAAW,IACXI,MAAOiT,EAAQgB,YACf9D,cAAeyD,GACd,KAAM,EAAG,CAAC,aAEf5a,EAAAA,EAAAA,GAAoB,MAAOM,GAAa,EACtCN,EAAAA,EAAAA,GAAoB,QAASO,IAAaoB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAqB,IAAK,IAC7FqF,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,QAAS,CAC3CL,GAAI,UACJmH,KAAM,OACNsP,SAAU,GACV,sBAAuB/U,EAAO,KAAOA,EAAO,GAAMoC,GAAkBwW,EAAQE,WAAc1W,IACzF,KAAM,KAAM,CACb,CAAC+D,EAAAA,GAAayS,EAAQE,iBAG1Bna,EAAAA,EAAAA,GAAoB,MAAOQ,GAAa,EACtCR,EAAAA,EAAAA,GAAoB,QAAS2O,IAAahN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA8B,KAAM,IACvGqF,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,QAAS,CAC3CL,GAAI,mBACJmH,KAAM,OACNsP,SAAU,GACV,sBAAuB/U,EAAO,KAAOA,EAAO,GAAMoC,GAAkBwW,EAAQI,aAAgB5W,IAC3F,KAAM,KAAM,CACb,CAAC+D,EAAAA,GAAayS,EAAQI,mBAG1Bra,EAAAA,EAAAA,GAAoB,MAAO4O,GAAa,EACtC5O,EAAAA,EAAAA,GAAoB,MAAO6O,IAAalN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2BAA6B,KAAM,KACnGR,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAO2Y,IAAmBG,KACpFlZ,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C5B,MAAO,6BACP1D,IAAKue,GACJ,EACD1a,EAAAA,EAAAA,GAAoB,QAAS8O,GAAa,EACxC9O,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,WACNH,KAAM+T,EACNpG,QAASgG,EAAO1K,SAAS8K,GACzBQ,SAAWzX,GAAiBoX,EAAaH,IACxC,KAAM,GAAI3L,KACb/O,EAAAA,EAAAA,GAAoB,OAAQ,MAAM2B,EAAAA,EAAAA,IAAiB+Y,GAAQ,MAE7D1a,EAAAA,EAAAA,GAAoB,IAAK,CACvBH,MAAO,oBACPyE,UAAWlD,EAAKY,GAAG,oBAAoB0Y,kBACtC,KAAM,EAAG1L,SAEZ,WAGRhP,EAAAA,EAAAA,GAAoB,MAAOiP,GAAa,EACtCjP,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,UACPiH,KAAM,SACND,SAA4B,IAAlByT,EAAOhe,SAChBqF,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,EAAG8H,KACnD9J,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAe,IAAM9O,EAAKsC,QAAQC,KAAK,kBAAkB,CAAC,eAC5FhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,MAEjD,GAAIjC,OApFX,CAwFD,ICpLD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MACML,GAAa,CAAEC,GAAI,wBACnBC,GAAa,CAAEzD,IAAK,GACpB2D,GAAa,CAAEH,GAAI,0BACnBI,GAAa,CAAEF,MAAO,kCACtBI,GAAa,CAAEJ,MAAO,gBACtBK,GAAa,CAAC,aACdC,GAAa,CAAEN,MAAO,4BACtBO,GAAa,CAAEjE,IAAK,GACpBkE,GAAa,CAAER,MAAO,UAU5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,mBACRI,MAAMC,GAEN,MAAMqH,GAAQC,EAAAA,EAAAA,MACRlO,GAAQgI,EAAAA,EAAAA,KAER6Y,GAAqC3Y,EAAAA,EAAAA,KACzC,IAAMlI,EAAMmI,QAAQkY,EAAAA,GAAAA,QAAAA,UAEhBpP,GAAuD/I,EAAAA,EAAAA,KAC3D,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,kBAKtB,SAASwY,IACH7S,EAAMuJ,MAAMuJ,WAA8C,kBAA1B9S,EAAMuJ,MAAMuJ,WAC9C/gB,EAAM8I,SACJuX,EAAAA,GAAAA,QAAAA,wBACApS,EAAMuJ,MAAMuJ,UAGjB,CAED,SAASC,IACPhhB,EAAM8I,SAASuX,EAAAA,GAAAA,QAAAA,iBAAuC,CACpDU,UAAW,GAAG9S,EAAMuJ,MAAMuJ,YAC1BhB,aAAc,GAAG9R,EAAMuJ,MAAMuI,eAC7BkB,cAAe,GAAGhT,EAAMuJ,MAAMyJ,gBAC9Bb,MAAO,GAAGnS,EAAMuJ,MAAM4I,QACtBc,MAAO,GAAGjT,EAAMuJ,MAAM0J,MAAQjT,EAAMuJ,MAAM0J,MAAQ,KAClDC,eAAgB,GACdlT,EAAMuJ,MAAM2J,eAAiBlT,EAAMuJ,MAAM2J,eAAiB,KAE5DC,sBAAuB,GACrBnT,EAAMuJ,MAAM4J,sBACRnT,EAAMuJ,MAAM4J,sBACZ,MAGT,CAEH,OA7BEzV,EAAAA,EAAAA,KAAc,IAAMmV,MA6Bf,CAACha,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAC3CmK,GAAoBnK,EAAAA,EAAAA,IAAkB,UACtCoK,GAA0BpK,EAAAA,EAAAA,IAAkB,gBAElD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC1DkC,EAAAA,EAAAA,IAAOuZ,GAAQE,YACX7Z,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY,EACpDI,EAAAA,EAAAA,GAAoB,KAAMF,GAAY,EACpC+B,EAAAA,EAAAA,IAAa6J,EAAmB,CAAEI,QAAS,wBAA0B,CACnEtP,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBF,EAAAA,EAAAA,IAAaP,EAAwB,CACnCQ,GAAI,CAAE6E,KAAM,UAAWvL,OAAQ,CAAEuE,IAAIiC,EAAAA,EAAAA,IAAOuZ,GAAQxb,MACnD,CACDnD,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQxU,MAAO,MAE1D1E,EAAG,GACF,EAAG,CAAC,UAETA,EAAG,OAGNL,EAAAA,EAAAA,IAAO2J,KACH/J,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa6H,EAAyB,CACnDxP,IAAK,EACLpB,SAAS6G,EAAAA,EAAAA,IAAO2J,IACf,KAAM,EAAG,CAAC,cACbrJ,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,MAAOD,GAAY,EACrCC,EAAAA,EAAAA,GAAoB,IAAK,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iCAAkC,IAC1FhC,EAAAA,EAAAA,GAAoB,KAAM,KAAM,GAC7BwB,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOuZ,GAAQT,MAAM5U,MAAM,MAAO4U,KAC5FlZ,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,CAAElK,IAAKue,GAAS,EACnE1a,EAAAA,EAAAA,GAAoB,KAAMC,GAAY,EACpCD,EAAAA,EAAAA,GAAoB,OAAQ,MAAM2B,EAAAA,EAAAA,IAAiB+Y,GAAQ,MAE7D1a,EAAAA,EAAAA,GAAoB,KAAM,CACxBsE,UAAWlD,EAAKY,GAAG,oBAAoB0Y,kBACtC,KAAM,EAAGxa,KACX,OACD,SAENF,EAAAA,EAAAA,GAAoB,MAAOG,GAAY,EACrCH,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAAS8X,IACR3Z,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,IACnDhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,oBACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,YAIrDR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOrB,GAAY,EACpDJ,EAAAA,EAAAA,GAAoB,IAAKK,IAAYsB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kBAAmB,IACjFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,oBACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,OAtDtD,CA0DD,IC1HD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MAAMtC,GAAa,CAAEC,GAAI,eAYzB,QAA4BiB,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLrC,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,EAMN5G,GAAQgI,EAAAA,EAAAA,MAER,KAAE7D,IAAS0C,EAAAA,EAAAA,IAAOL,GAO1B,OALE0K,EAAAA,EAAAA,KAAY,KACVlR,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,sBACbtI,EAAMmR,OAAOkP,EAAAA,GAAAA,UAAAA,YAAoC,GAAjD,IAGG,CAACvZ,EAAUC,KAChB,MAAM+E,GAAyB7E,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DmC,EAAAA,EAAAA,IAAauE,EAAwB,CAAE7D,UAAUX,EAAAA,EAAAA,IAAOnD,IAAS,KAAM,EAAG,CAAC,cAD7E,CAID,ICzCD,MAAM,GAAc,GAEpB,UCFA,MACMiB,GAAa,CACjBC,GAAI,aACJE,MAAO,oBAEHD,GAAa,CAAEzD,IAAK,GACpB2D,GAAa,CACjB3D,IAAK,EACL0D,MAAO,4BAEHE,GAAa,CAAC,SACdE,GAAa,CAAE9D,IAAK,GACpB+D,GAAa,CACjB/D,IAAK,EACL0D,MAAO,cAEHM,GAAa,CAAC,SACdC,GAAa,CAAEP,MAAO,iBACtBQ,GAAa,CAAER,MAAO,eACtBS,GAAc,CAAEnE,IAAK,GACrBoE,GAAc,CAAEV,MAAO,UA4B7B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,UACRC,MAAO,CACLyB,SAAU,KACVoZ,cAAe,CAAE7U,KAAMC,QAASvK,SAAS,IAE3CyE,MAAMC,GAER,MAAMJ,EAAQI,EAGNqH,GAAQC,EAAAA,EAAAA,MACRlO,GAAQgI,EAAAA,EAAAA,MAER,cAAEqZ,EAAF,SAAiBpZ,IAAapB,EAAAA,EAAAA,IAAOL,GACrCqa,GAAqC3Y,EAAAA,EAAAA,KACzC,IAAMlI,EAAMmI,QAAQkY,EAAAA,GAAAA,QAAAA,UAEhBiB,GAA6CpZ,EAAAA,EAAAA,KACjD,IAAMlI,EAAMmI,QAAQkY,EAAAA,GAAAA,QAAAA,yBAEhBtF,GAA6BvS,EAAAA,EAAAA,KAAI,GACjC+Y,GAAuC/Y,EAAAA,EAAAA,IAAI,MAC3CgZ,GAAyBhZ,EAAAA,EAAAA,KAAI,GAC7BiZ,GAA6BjZ,EAAAA,EAAAA,KAAI,GACjCkZ,GAAiClZ,EAAAA,EAAAA,KAAI,GAS3C,SAASmZ,KAGJN,EAAc3Y,OACfuF,EAAMnN,OAAOuE,IACc,kBAApB4I,EAAMnN,OAAOuE,IAEpBrF,EAAM8I,SAASuX,EAAAA,GAAAA,QAAAA,kBAAwCpS,EAAMnN,OAAOuE,GAEvE,CACD,SAASuc,EAAuBC,GAC9BN,EAAiB7Y,MAAQmZ,EACrB,mCACA,wCACJvG,GAAmB,EACpB,CACD,SAASA,EAAmB5S,GAC1BqS,EAAarS,MAAQA,EAChBA,IACH6Y,EAAiB7Y,MAAQ,KAE5B,CACD,SAASoZ,EAAcC,GACU,qCAA3BR,EAAiB7Y,MACnB1I,EAAM8I,SAASuX,EAAAA,GAAAA,QAAAA,cAAoC0B,GAEnD/hB,EAAM8I,SAASuX,EAAAA,GAAAA,QAAAA,kBAAwC0B,EAE1D,CACD,SAASC,IACPzW,UAAU0W,UAAUC,UAAUrB,EAAOnY,MAAMqY,WAC3CS,EAAS9Y,OAAQ,EACjB+Y,EAAa/Y,OAAQ,EACrB0C,YAAW,KACToW,EAAS9Y,OAAQ,CAAjB,GACC,IACJ,CACD,SAASyZ,IACHtB,EAAOnY,MAAM0Z,gBACf7W,UAAU0W,UAAUC,UAAUrB,EAAOnY,MAAM0Z,eAC3CX,EAAa/Y,OAAQ,EACrB8Y,EAAS9Y,OAAQ,EACjB0C,YAAW,KACTqW,EAAa/Y,OAAQ,CAArB,GACC,KAEN,CAgBH,OArEEiD,EAAAA,EAAAA,KAAc,KACZgW,IACIpW,UAAU0W,YACZP,EAAiBhZ,OAAQ,EAC1B,KAkDHwI,EAAAA,EAAAA,KAAY,KACVlR,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,sBACbtI,EAAMmR,OAAOkP,EAAAA,GAAAA,UAAAA,cACbrgB,EAAMmR,OAAOkP,EAAAA,GAAAA,UAAAA,2BAAkD,EAA/D,KAGFvT,EAAAA,EAAAA,KACE,IAAMwU,EAAqB5Y,QAC1B2Z,IACKA,GACF/G,GAAmB,EACpB,IAIA,CAACxU,EAAUC,KAChB,MAAM2U,GAAmBzU,EAAAA,EAAAA,IAAkB,SAE3C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,CAC1D2V,EAAarS,QACTxB,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAakS,EAAkB,CAC5C7Z,IAAK,EACLiO,MAAOhJ,EAAKY,GAAG,uBACfjH,QAASqG,EAAKY,GAAG6Z,EAAiB7Y,OAClCiT,gBAAiB5U,EAAO,KAAOA,EAAO,GAAMoC,GAAiB2Y,GAAcxa,EAAAA,EAAAA,IAAOuZ,GAAQxb,KAC1FuW,eAAgB7U,EAAO,KAAOA,EAAO,GAAMoC,GAAiBmS,GAAmB,KAC9E,KAAM,EAAG,CAAC,QAAS,cACtB1T,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOuZ,KAAWvZ,EAAAA,EAAAA,IAAOuZ,GAAQE,YAC7B7Z,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY,EACnDgC,EAAAA,EAAAA,IAAO+Z,KAAkB/Z,EAAAA,EAAAA,IAAOga,KAC5Bpa,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,IAAY6B,EAAAA,EAAAA,IAAiBP,EAAKY,IAC9EJ,EAAAA,EAAAA,IAAO+Z,GACH,kCACA,0BACF,KACAzZ,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,KAAM,KAAM,EAC9BA,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yBAA2B,IAAK,IACzFhC,EAAAA,EAAAA,GAAoB,KAAM,KAAM,EAC9B0B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQE,WAAa,IAAK,IAClEzZ,EAAAA,EAAAA,IAAO+Z,IAAkBK,EAAiBhZ,QACtCxB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,IAAK,CACtCtF,IAAK,EACL0D,OAAO+D,EAAAA,EAAAA,IAAgB,UAASkY,EAAS9Y,MAAQ,QAAU,SAC3D,cAAe,OACfoH,MAAOhJ,EAAKY,GAAG,4BACfwB,QAAS8Y,GACR,KAAM,GAAIvc,MACbmC,EAAAA,EAAAA,IAAoB,IAAI,MAE7BN,EAAAA,EAAAA,IAAO+Z,KAAkB/Z,EAAAA,EAAAA,IAAOuZ,GAAQuB,gBACpClb,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAMxB,IAAY0B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA+B,KAAM,KACnHE,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAO+Z,KAAkB/Z,EAAAA,EAAAA,IAAOuZ,GAAQuB,gBACpClb,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAMvB,GAAY,EACnDwB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQuB,eAAiB,IAAK,GACtEV,EAAiBhZ,QACbxB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,IAAK,CACtCtF,IAAK,EACL0D,OAAO+D,EAAAA,EAAAA,IAAgB,UAASmY,EAAa/Y,MAAQ,QAAU,SAC/D,cAAe,OACfoH,MAAOhJ,EAAKY,GAAG,4BACfwB,QAASiZ,GACR,KAAM,GAAItc,MACb+B,EAAAA,EAAAA,IAAoB,IAAI,OAE9BA,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBkC,EAAAA,EAAAA,IAAWzC,EAAKY,GAAG,yBAA2B,IAAK,IACpGhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAO+R,GAAAA,EAAP/R,EAC/CA,EAAAA,EAAAA,IAAOgS,GAAAA,GAAPhS,EAAsBA,EAAAA,EAAAA,IAAOuZ,GAAQyB,WAAWhb,EAAAA,EAAAA,IAAOW,GAAUuR,UACjE,qBACE,IACJ9T,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAsB,IAAK,IACpFhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQxU,MAAO,IACvE3G,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2BAA6B,IAAK,IAC3FhC,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAE,mBAAmBhC,EAAAA,EAAAA,IAAOuZ,GAAQf,uBAC1DzY,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQf,oBAC/BxY,EAAAA,EAAAA,IAAOuZ,GAAQf,mBACfhZ,EAAKY,GAAG,0BAA2B,IACvChC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAqB,IAAK,IACnFhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQ0B,SAAU,IAC1E7c,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA8B,IAAK,IAC5FhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOuZ,GAAQV,cAAcne,OAAS,GAAIsF,EAAAA,EAAAA,IAAOuZ,GAAQV,cAAc,GAAK,IAAK,IAClIza,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2BAA6B,IAAK,IAC3FhC,EAAAA,EAAAA,GAAoB,KAAMI,GAAY,GACnCoB,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOuZ,GAAQT,MAAM5U,MAAM,MAAO4U,KAC5FlZ,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,OAAQ,CAChD5B,MAAO,eACP1D,IAAKue,GACJ,EACD1a,EAAAA,EAAAA,GAAoB,OAAQ,MAAM2B,EAAAA,EAAAA,IAAiB+Y,GAAQ,QAE3D,WAGR1a,EAAAA,EAAAA,GAAoB,MAAOK,GAAY,EACrCL,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiByY,GAAuB,MAC3Eva,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,IAC1DhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiByY,GAAuB,MAC3Eva,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,IACnDhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,oBACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,UAGjDR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOnB,GAAa,EACrDN,EAAAA,EAAAA,GAAoB,IAAKO,IAAaoB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kBAAmB,IAClFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,oBACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,OAjGtD,CAqGD,ICrPD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MACMtC,GAAa,CAAEC,GAAI,oBACnBC,GAAa,CAAEC,MAAO,aACtBC,GAAa,CAAE3D,IAAK,GACpB4D,GAAa,CAAEF,MAAO,iBACtBI,GAAa,CACjB9D,IAAK,EACL0D,MAAO,WAEHK,GAAa,CAAEL,MAAO,oBAmB5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,eACRC,MAAO,CACLyB,SAAU,MAEZtB,MAAMC,GAER,MAAMJ,EAAQI,EAMN5G,GAAQgI,EAAAA,EAAAA,KACRiG,GAAQC,EAAAA,EAAAA,OAER,SAAEjG,IAAapB,EAAAA,EAAAA,IAAOL,GACtBgc,GAAwCta,EAAAA,EAAAA,KAC5C,IAAMlI,EAAMmI,QAAQkY,EAAAA,GAAAA,QAAAA,WAGhBjI,GAAuClQ,EAAAA,EAAAA,KAC3C,IAAMlI,EAAMmI,QAAQkY,EAAAA,GAAAA,QAAAA,sBAEtB,IAAI7I,EAA+BiL,EAAgBxU,EAAMuJ,OAMzD,SAASiL,EAAgB7J,GACvB,MAAM8J,EAAsC,CAAC,EAI7C,OAHI9J,EAASD,OACX+J,EAAa/J,MAAOgK,EAAAA,GAAAA,IAAoB/J,EAASD,KAAMiK,GAAAA,KAElDF,CACR,CACD,SAASG,EAAYxH,GACnBrb,EAAM8I,SAASuX,EAAAA,GAAAA,QAAAA,YAAkChF,EAClD,CAUH,OAvBE1P,EAAAA,EAAAA,KAAc,KACZkX,EAAYrL,EAAZ,KAcF1K,EAAAA,EAAAA,KACE,IAAMmB,EAAMuJ,QACZgE,UACEhE,EAAQiL,EAAgB7J,GACxBiK,EAAYrL,EAAZ,IAIC,CAAC1Q,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,IAAKJ,IAAY+B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,qBAAsB,IACnFJ,EAAAA,EAAAA,IAAOkb,GAASxgB,OAAS,IACrBkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM3B,GAAY,GAClD0B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOkb,IAAW3B,KAC5E3Z,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM,CAC9CtF,IAAKgf,EAAOE,WACX,EACDxZ,EAAAA,EAAAA,IAAaP,EAAwB,CACnCQ,GAAI,CAAE6E,KAAM,UAAWvL,OAAQ,CAAEuE,GAAIwb,EAAOxb,MAC3C,CACDnD,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBwZ,EAAOxU,MAAO,MAElD1E,EAAG,GACF,KAAM,CAAC,QACVjC,EAAAA,EAAAA,GAAoB,OAAQD,IAAY4B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,wBAA0B,KAAML,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAO+R,GAAAA,EAAP/R,EAClHA,EAAAA,EAAAA,IAAOgS,GAAAA,GAAPhS,CAAsBuZ,EAAOyB,WAAWhb,EAAAA,EAAAA,IAAOW,GAAUuR,UACzD,qBACE,QAEF,WAELtS,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOxB,IAAY0B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,KACtGJ,EAAAA,EAAAA,IAAOkb,GAASxgB,OAAS,IACrBkF,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAakQ,GAAAA,EAAY,CACtC7X,IAAK,EACLuW,YAAY9Q,EAAAA,EAAAA,IAAO8Q,GACnB5J,KAAM,gBACNgJ,OAAOlQ,EAAAA,EAAAA,IAAOkQ,IACb,KAAM,EAAG,CAAC,aAAc,YAC3B5P,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,MAAOE,GAAY,EACrCF,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,wBACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,IAChDhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,QACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gBAAiB,MAtCjD,CA0CD,ICvHD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MACMtC,GAAa,CAAEC,GAAI,0BACnBC,GAAa,CACjBzD,IAAK,EACL0D,MAAO,oBAEHC,GAAa,CAAED,MAAO,kBACtBE,GAAa,CACjB5D,IAAK,EACL0D,MAAO,kCAEHI,GAAa,CACjB9D,IAAK,EACL0D,MAAO,mBAEHK,GAAa,CAAEL,MAAO,aACtBM,GAAa,CAAEhE,IAAK,GACpBiE,GAAa,CAAEP,MAAO,gBACtBQ,GAAa,CAAC,SACdC,GAAc,CAAET,MAAO,gBACvBU,GAAc,CAClBpE,IAAK,EACL0D,MAAO,oBAEHW,GAAc,CAClBrE,IAAK,EACL0D,MAAO,+BAEH8O,GAAc,CAAE9O,MAAO,gBACvB+O,GAAc,CAAE/O,MAAO,gBACvBgP,GAAc,CAAC,WACfC,GAAc,CAAEjP,MAAO,gBACvBkP,GAAc,CAAC,SACfC,GAAc,CAAE7S,IAAK,GACrB8S,GAAc,CAClB9S,IAAK,EACL0D,MAAO,kBAEHiK,GAAc,CAAEjK,MAAO,gBACvBiZ,GAAc,CAAC,WACfC,GAAc,CAClB5c,IAAK,EACL0D,MAAO,mBAEHmZ,GAAc,CAAC,YACfC,GAAc,CAAC,WAAY,WAC3BmE,GAAc,CAAC,YACfC,GAAc,CAClBlhB,IAAK,EACL0D,MAAO,mBAEHyd,GAAc,CAClBnhB,IAAK,EACL0D,MAAO,mBAiBT,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,uBACRC,MAAO,CACLrC,KAAM,KACN8e,UAAW,CAAEzW,KAAMC,UAErB9F,MAAMC,GAER,MAAMJ,EAAQI,EAON5G,GAAQgI,EAAAA,EAAAA,MACR,EAAE2O,IAAMC,EAAAA,GAAAA,OAER,UAAEqM,EAAF,KAAa9e,IAAS0C,EAAAA,EAAAA,IAAOL,GAC7B0c,EAAe,UACfnT,GAAkDC,EAAAA,EAAAA,IAAO,eACzDjM,GAAgCmE,EAAAA,EAAAA,KACpC,IAAMlI,EAAMmI,QAAQ4O,EAAAA,GAAAA,QAAAA,UAEhBF,GAAoD3O,EAAAA,EAAAA,KAAS,KACjE4O,EAAAA,GAAAA,IAAgB/S,EAAO2E,MAAOiO,EAAG,YAAaxS,EAAKuE,MAAMya,eAErD3I,GAAUtS,EAAAA,EAAAA,KACd,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,gBAEhBgR,GAAuD/I,EAAAA,EAAAA,KAC3D,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,kBAEhB8a,GAA6CrO,EAAAA,EAAAA,IAAS,CAC1DsO,SAAU,EACVxT,MAAO,KACPwH,WAAW,EACXiM,wBAAyB,IAG3B,SAASC,EAAqBpM,GACd,OAAVA,GACFiM,EAAaC,SAAWlM,EAAM9R,GAC9B+d,EAAavT,MAAQsH,EAAMtH,MACvBsH,EAAMtH,MACNE,EACAA,EAAYoH,EAAMtI,OAClBqU,EACJE,EAAa/L,UAAYF,EAAMqM,mBAC/BJ,EAAaE,wBAA0BnM,EAAMmM,yBAE7CG,GAEH,CACD,SAASC,EAAiBC,GACxB,OAAOP,EAAaC,WAAaM,CAClC,CACD,SAASC,EAAY/W,GACnBuW,EAAavT,MAAQhD,EAAMzG,OAAOsC,KACnC,CACD,SAASmb,EAAgBhX,GACvBuW,EAAaE,wBAA0BvV,WAAWlB,EAAMzG,OAAOsC,MAChE,CACD,SAASob,EAAejX,GACtBuW,EAAa/L,UAAYxK,EAAMzG,OAAO4T,OACvC,CACD,SAASyJ,IACPL,EAAaC,SAAW,EACxBD,EAAavT,MAAQ,KACrBuT,EAAa/L,WAAY,EACzB+L,EAAaE,wBAA0B,EACvCtjB,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,qBACd,CACD,SAASyb,EAAYlX,GACnBA,EAAMiR,iBACN9d,EAAM8I,SACJ7I,EAAAA,GAAAA,QAAAA,8BACAmjB,EAEH,CACD,SAASY,EAAWnX,EAAc8W,GAChC9W,EAAMiR,iBACN9d,EAAM8I,SACJ7I,EAAAA,GAAAA,QAAAA,6BACA0jB,EAEH,CAWH,OATE7W,EAAAA,EAAAA,KACE,IAAM0N,EAAQ9R,QACbub,IACMA,GAAiBhT,EAAcvI,OAClC+a,GACD,IAIA,CAAC3c,EAAUC,KAChB,MAAMmQ,GAAwBjQ,EAAAA,EAAAA,IAAkB,cAC1CoK,GAA0BpK,EAAAA,EAAAA,IAAkB,gBAElD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC1DkC,EAAAA,EAAAA,IAAOvD,GAAQ/B,OAAS,IACpBkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY,EACpDI,EAAAA,EAAAA,GAAoB,MAAOF,GAAY,EACpC8B,EAAAA,EAAAA,IAAO2b,KACH/b,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO1B,GAAY,EACpDC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBrC,EAAKsC,QAAQC,KAAK,oBAAqB,CAAC,eAC3GhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,QAE/CR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOxB,GAAY,EACpDD,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,2BACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yCAA0C,IACtEhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,QACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gBAAiB,SAGrDhC,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjCA,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjCA,EAAAA,EAAAA,GAAoB,KAAM,KAAM,EAC9BA,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,IACvFhC,EAAAA,EAAAA,GAAoB,KAAME,IAAYyB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,IAAK,IACtFhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,IAAK,IAClFhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iCAAkC,IAC3FhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,+CAAgD,IACxGJ,EAAAA,EAAAA,IAAO2b,KACH/b,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAMtB,IAAYwB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,8BAA+B,KAC7GE,EAAAA,EAAAA,IAAoB,IAAI,QAGhClC,EAAAA,EAAAA,GAAoB,QAAS,KAAM,GAChCwB,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOuP,IAAoBM,KACrFjQ,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM,CAC9CtF,IAAKsV,EAAM9R,IACV,EACDK,EAAAA,EAAAA,GAAoB,KAAM,KAAM,EAC9BA,EAAAA,EAAAA,GAAoB,OAAQI,IAAYuB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,GAC9Fgc,EAAiBvM,EAAM9R,MACnB6B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAAS,CAC1CtF,IAAK,EACL0D,MAAO,cACPiH,KAAM,QACN9D,MAAO0a,EAAavT,MACpB5C,QAAS2W,GACR,KAAM,GAAI7d,OACZmB,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa0N,EAAuB,CACjDrV,IAAK,EACLiO,MAAOqH,EAAMC,gBACb,cAAeD,EAAMtI,MACrBgB,MAAOsH,EAAMtH,MAAQsH,EAAMtH,OAAQvI,EAAAA,EAAAA,IAAOyI,GAAaoH,EAAMtI,QAC5D,KAAM,EAAG,CAAC,QAAS,cAAe,cAE3CnJ,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,cAAe,CAAE,kBAAmB6N,EAAME,cACjE,EACD3R,EAAAA,EAAAA,GAAoB,OAAQM,IAAaqB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,IAChGN,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiB8P,EAAMC,iBAAmB,IAAK,GACpED,EAAME,WAEJzP,EAAAA,EAAAA,IAAoB,IAAI,KADvBV,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,OAAQlB,GAAa,MAAOoB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yCAA2C,KAAM,KAE5IJ,EAAAA,EAAAA,IAAOkT,IAAYkJ,EAAiBvM,EAAM9R,MACtC6B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,IAAKjB,MACxC0B,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAO2J,IAAkBmS,EAAaC,WAAalM,EAAM9R,KACrD6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa6H,EAAyB,CACnDxP,IAAK,EACLpB,SAAS6G,EAAAA,EAAAA,IAAO2J,IACf,KAAM,EAAG,CAAC,cACbrJ,EAAAA,EAAAA,IAAoB,IAAI,IAC3B,IACHlC,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,cAAe,CAAE,kBAAmB6N,EAAME,cACjE,EACD3R,EAAAA,EAAAA,GAAoB,OAAQ2O,IAAahN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,IAAK,IAC3FhC,EAAAA,EAAAA,GAAoB,IAAK,CACvBH,OAAO+D,EAAAA,EAAAA,IAAgB,UAC3BhC,EAAAA,EAAAA,IAAOnD,GAAMgf,YAAY7N,SAAS6B,EAAM9R,IAAM,SAAW,KAErD,cAAe,QACd,KAAM,IACR,IACHK,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,cAAe,CAAE,kBAAmB6N,EAAME,cACjE,EACD3R,EAAAA,EAAAA,GAAoB,OAAQ4O,IAAajN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iCAAkC,GACnGgc,EAAiBvM,EAAM9R,KAAO8R,EAAME,YAChCnQ,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAAS,CAC1CtF,IAAK,EACL2K,KAAM,WACNwN,QAAS7C,EAAMqM,mBACf5C,SAAUkD,GACT,KAAM,GAAIvP,OACZrN,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,IAAK,CACtCtF,IAAK,EACL0D,OAAO+D,EAAAA,EAAAA,IAAgB,SAAQ6N,EAAMqM,mBAAqB,SAAW,KACrE,cAAe,QACd,KAAM,KACZ,IACH9d,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,cAAe,CAAE,kBAAmB6N,EAAME,cACjE,EACD3R,EAAAA,EAAAA,GAAoB,OAAQ8O,IAAanN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,+CAAgD,GACjHgc,EAAiBvM,EAAM9R,KAAO8R,EAAME,YAChCnQ,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAAS,CAC1CtF,IAAK,EACL0D,MAAO,kBACPiH,KAAM,SACNqJ,IAAK,IACLC,KAAM,MACNpN,MAAO0a,EAAaE,wBACpBrW,QAAS4W,GACR,KAAM,GAAIpP,OACZvN,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,OAAQuN,IAAarN,EAAAA,EAAAA,IAAiB8P,EAAMmM,yBAA0B,KAC5G,IACFhc,EAAAA,EAAAA,IAAO2b,KACH/b,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAMwN,GAAa,EACpDjP,EAAAA,EAAAA,GAAoB,OAAQ8J,IAAanI,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,8BAA+B,GACtE,IAA1B0b,EAAaC,WACTnc,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACLqH,QAAUC,GAAiBoa,EAAqBpM,KAC/C9P,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,EAAG8W,MACjD5W,EAAAA,EAAAA,IAAoB,IAAI,GAC3B8b,EAAiBvM,EAAM9R,MACnB6B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOsX,GAAa,EACrD/Y,EAAAA,EAAAA,GAAoB,SAAU,CAC5B6G,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBtR,QAAS6a,IACR1c,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,EAAGgX,KACnDhZ,EAAAA,EAAAA,GAAoB,SAAU,CAC5B6G,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBtR,QAAUwC,GAAMsY,EAAWtY,EAAGyL,EAAM9R,MACnCgC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kBAAmB,EAAGiX,KAClDjZ,EAAAA,EAAAA,GAAoB,SAAU,CAC5B6G,UAAUjF,EAAAA,EAAAA,IAAOkT,GACjBtR,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBoa,EAAqB,SACzElc,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,EAAGob,QAErDlb,EAAAA,EAAAA,IAAoB,IAAI,OAE9BA,EAAAA,EAAAA,IAAoB,IAAI,QAE5B,WAGPN,EAAAA,EAAAA,IAAO2b,KACH/b,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO4b,GAAa,EACrDrd,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBrC,EAAKsC,QAAQC,KAAK,oBAAqB,CAAC,eAC3GhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,QAE/CR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO6b,GAAa,EACrDtd,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,2BACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yCAA0C,IACtEhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,QACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gBAAiB,UAGrDE,EAAAA,EAAAA,IAAoB,IAAI,IApK9B,CAuKD,IC/UD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,WCLA,MAAM5C,GAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,GAAa,CAAEG,MAAO,cACtBD,GAAa,CAAC,aACdE,GAA2BR,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,wBACP,cAAe,QACd,MAAO,KACJE,GAAa,CACjBU,KAAM,sCACNC,OAAQ,SACRC,IAAK,uBAEDV,GAA2BX,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,0BACP,cAAe,QACd,MAAO,KACJK,GAAa,CACjBO,KAAM,sCACNC,OAAQ,SACRC,IAAK,uBAEDR,GAA2Bb,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,iCACP,cAAe,QACd,MAAO,KACJO,GAA2Bd,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFS,KAAM,gDACNC,OAAQ,SACRC,IAAK,uBACJ,YAAa,KACVN,GAAa,CAAElE,IAAK,GACpBmE,GAA4BhB,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACzFH,MAAO,8BACP,cAAe,QACd,MAAO,KACJU,GAAc,CAAC,QASrB,QAA4BK,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,QACRI,MAAMC,GAEN,MAAM5G,GAAQgI,EAAAA,EAAAA,KACRiC,GAAqC/B,EAAAA,EAAAA,KACzC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,cAGxB,MAAO,CAACxB,EAAUC,KAChB,MAAMqK,GAAoBnK,EAAAA,EAAAA,IAAkB,UAE5C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAO,KAAM,EAC/BA,EAAAA,EAAAA,GAAoB,IAAK,CACvBH,MAAO,gBACPyE,UAAWlD,EAAKY,GAAG,iCAClB,KAAM,EAAGpC,KACZI,EAAAA,EAAAA,GAAoB,IAAK,KAAM,CAC7BF,IACAE,EAAAA,EAAAA,GAAoB,IAAKD,IAAY4B,EAAAA,EAAAA,KAAiBkC,EAAAA,EAAAA,IAAWzC,EAAKY,GAAG,0BAA2B,MAEtGhC,EAAAA,EAAAA,GAAoB,IAAK,KAAM,CAC7BC,IACAD,EAAAA,EAAAA,GAAoB,IAAKE,IAAYyB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,MAEvFhC,EAAAA,EAAAA,GAAoB,IAAK,KAAM,CAC7BG,IACA0B,EAAAA,EAAAA,IAAa6J,EAAmB,CAAEI,QAAS,4BAA8B,CACvEtP,SAASuF,EAAAA,EAAAA,KAAS,IAAM,CACtB3B,MAEF6B,EAAG,OAGNL,EAAAA,EAAAA,IAAO2C,GAAWmC,gBACdlF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOpB,GAAY,CACpDC,IACAN,EAAAA,EAAAA,GAAoB,IAAK,CACvBS,KAAM,WAAUmB,EAAAA,EAAAA,IAAO2C,GAAWmC,kBACjC/E,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,wBAAyB,EAAGzB,QAE1D2B,EAAAA,EAAAA,IAAoB,IAAI,MA9BhC,CAkCD,ICvFD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,UCPOvC,GAAG,Q,8CAAR8B,EAAAA,EAAAA,IAEM,MAFN,GAEM,EADJzB,EAAAA,EAAAA,GAAmE,OAA9DH,MAAM,WAAY2e,IAAK,gBAAiBC,IAAI,iBAAjD,Y,CCDJ,MAAMpT,GAAS,CAAC,EAKV,IAA2B,OAAgBA,GAAQ,CAAC,CAAC,SAASxB,IAAQ,CAAC,YAAY,qBAEzF,UCLA,MACMnK,GAAa,CACjBC,GAAI,QACJE,MAAO,QAEHD,GAAa,CAAEC,MAAO,aACtBC,GAAa,CAAED,MAAO,iBACtBE,GAAa,CAAEF,MAAO,+BAK5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRI,MAAMC,GAGR,MAAO,CAACE,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACrCI,EAAAA,EAAAA,GAAoB,MAAOF,GAAY,EACrC+B,EAAAA,EAAAA,IAAa6c,OAEf1e,EAAAA,EAAAA,GAAoB,MAAOD,GAAY,EACrC8B,EAAAA,EAAAA,IAAa8c,UAKpB,IC1BD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,sBCLA,MAAMrf,GAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,GAAa,CAAEG,MAAO,oBACtBD,GAAa,CAAEC,MAAO,OACtBC,GAAa,CAAED,MAAO,qBACtBE,GAAa,CAAEF,MAAO,gBACtBI,GAAa,CAAC,SACdC,GAAa,CAAE/D,IAAK,GACpBgE,GAAa,CACjBhE,IAAK,EACL0D,MAAO,UAEHO,GAAa,CAAEP,MAAO,OACtBQ,GAAa,CAAER,MAAO,QACtBS,GAA4BhB,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACzFH,MAAO,gBACP,cAAe,QACd,MAAO,KACJU,GAAc,CAAEpE,IAAK,GACrBqE,GAAc,CAAEX,MAAO,QACvB8O,GAA4BrP,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACzFH,MAAO,aACP,cAAe,QACd,MAAO,KACJ+O,GAAc,CAClBzS,IAAK,EACL0D,MAAO,kBAEHgP,GAAc,CAAC,OACfC,GAAc,CAAEjP,MAAO,eACvBkP,IAA2BrN,EAAAA,EAAAA,IAAiB,MAC5CsN,GAAc,CAClB7S,IAAK,EACL0D,MAAO,iBAEHoP,GAA4B3P,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACzFH,MAAO,uBACP,cAAe,QACd,MAAO,KACJiK,GAAc,CAAEjK,MAAO,eACvBiZ,IAA2BpX,EAAAA,EAAAA,IAAiB,MAC5CqX,IAA2BrX,EAAAA,EAAAA,IAAiB,OAqBlD,QAA4Bd,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,cACRC,MAAO,CACLrC,KAAM,KACNkJ,iBAAkB,CAAEb,KAAMC,SAC1B6X,QAAS,CAAEpiB,QAAS,KAAM,CAAN,IACpBiV,MAAO,CAAEjV,QAAS,KAAM,CAAN,KAEpByE,MAAMC,GAER,MAAMJ,EAAQI,EAIN5G,GAAQgI,EAAAA,EAAAA,MAER,KAAE7D,EAAF,QAAQmgB,EAAR,MAAiBnN,EAAjB,iBAAwB9J,IAAqBxG,EAAAA,EAAAA,IAAOL,GACpDvE,GAA8BiG,EAAAA,EAAAA,KAClC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,UAGxB,MAAO,CAACxB,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAC3CiQ,GAAwBjQ,EAAAA,EAAAA,IAAkB,cAC1Csd,GAAsBtd,EAAAA,EAAAA,IAAkB,YAE9C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACrCI,EAAAA,EAAAA,GAAoB,MAAOF,GAAY,EACrCE,EAAAA,EAAAA,GAAoB,MAAOD,GAAY,EACrC8B,EAAAA,EAAAA,IAAakC,GAAAA,EAAa,CAAEtF,MAAMmD,EAAAA,EAAAA,IAAOnD,IAAS,KAAM,EAAG,CAAC,UAC3DmD,EAAAA,EAAAA,IAAOnD,GAAMuF,WACTxC,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaxC,EAAwB,CAClDnF,IAAK,EACL0D,MAAO,oBACPiC,GAAI,CACN6E,KAAM,OACNvL,OAAQ,CAAE4I,UAAUpC,EAAAA,EAAAA,IAAOnD,GAAMuF,YAE9B,CACDxH,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMuF,UAAW,MAE5D/B,EAAG,GACF,EAAG,CAAC,SACPC,EAAAA,EAAAA,IAAoB,IAAI,MAE7BN,EAAAA,EAAAA,IAAOgd,GAASjf,KACZ6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaxC,EAAwB,CAClDnF,IAAK,EACL0D,MAAO,gBACPiC,GAAI,CACN6E,KAAM,UACNvL,OAAQ,CAAE0jB,WAAWld,EAAAA,EAAAA,IAAOgd,GAASjf,MAElC,CACDnD,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOgd,GAASxU,OAAQ,MAE5DnI,EAAG,GACF,EAAG,CAAC,SACPC,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOgd,GAASG,eAAgBnd,EAAAA,EAAAA,IAAOnD,KACnC+C,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CACxCtF,IAAK,EACL0D,MAAO,eACPuK,OACFxI,EAAAA,EAAAA,IAAO+R,GAAAA,EAAP/R,EACEA,EAAAA,EAAAA,IAAOgS,GAAAA,GAAPhS,EAAsBA,EAAAA,EAAAA,IAAOgd,GAASG,cAAcnd,EAAAA,EAAAA,IAAOnD,GAAMqV,UACjE,sBAGCnS,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOod,GAAAA,EAAPpd,CAAuB,IAAIoV,MAAKpV,EAAAA,EAAAA,IAAOgd,GAASG,cAAe,IAAI/H,KAAQ,CAC7FiI,WAAW,EACX1iB,QAAQqF,EAAAA,EAAAA,IAAOrF,MACZ,EAAG0D,MACRiC,EAAAA,EAAAA,IAAoB,IAAI,MAE9BlC,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,cAAe,CAAE,cAAchC,EAAAA,EAAAA,IAAOgd,MAC9Dpb,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,IAClC7B,EAAAA,EAAAA,IAAOgd,GAASjf,GACZyB,EAAKsC,QAAQC,KAAK,CAChBgD,KAAM,UACNvL,OAAQ,CAAE0jB,WAAWld,EAAAA,EAAAA,IAAOgd,GAASjf,MAEvC,OAEL,EACAiC,EAAAA,EAAAA,IAAOgd,KACHpd,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOvB,GAAY,EACnD0B,EAAAA,EAAAA,IAAOgd,GAASM,WACZ1d,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaqb,GAAAA,EAAW,CACrChjB,IAAK,EACLyiB,SAAShd,EAAAA,EAAAA,IAAOgd,IACf,KAAM,EAAG,CAAC,eACZpd,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOtB,IAAYwB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAqB,QAE1GE,EAAAA,EAAAA,IAAoB,IAAI,IAC3B,IACHlC,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,eAAgB,CAAE,eAAehC,EAAAA,EAAAA,IAAOgd,MAAahd,EAAAA,EAAAA,IAAOgd,GAASM,YAC7F1b,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,IAClC7B,EAAAA,EAAAA,IAAOgd,GAASjf,GACZyB,EAAKsC,QAAQC,KAAK,CAChBgD,KAAM,UACNvL,OAAQ,CAAE0jB,WAAWld,EAAAA,EAAAA,IAAOgd,GAASjf,MAEvC,OAEL,EACDK,EAAAA,EAAAA,GAAoB,MAAOI,GAAY,EACpCwB,EAAAA,EAAAA,IAAO6P,GAAOtI,QACV3H,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa0N,EAAuB,CACjDrV,IAAK,EACL,eAAeyF,EAAAA,EAAAA,IAAO6P,GAAOtI,MAC7BgB,OAAOvI,EAAAA,EAAAA,IAAO6P,GAAOtH,OACpB,KAAM,EAAG,CAAC,cAAe,YAC5BjI,EAAAA,EAAAA,IAAoB,IAAI,MAE9BlC,EAAAA,EAAAA,GAAoB,MAAOK,GAAY,CACrCC,IACCsB,EAAAA,EAAAA,IAAOgd,KACHpd,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,OAAQlB,IAAaoB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOgd,GAASQ,QAAS,KAClGld,EAAAA,EAAAA,IAAoB,IAAI,MAE9BlC,EAAAA,EAAAA,GAAoB,MAAOQ,GAAa,CACtCmO,IACC/M,EAAAA,EAAAA,IAAOgd,GAASjf,KACZ6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa+a,EAAqB,CAC/C1iB,IAAK,EACLsL,UAAU7F,EAAAA,EAAAA,IAAOgd,GAASnX,SAC1BG,OAAQ,EACRF,SAAU,KACVC,kBAAkB/F,EAAAA,EAAAA,IAAO+F,IACxB,KAAM,EAAG,CAAC,WAAY,uBACzBzF,EAAAA,EAAAA,IAAoB,IAAI,MAE7BN,EAAAA,EAAAA,IAAOgd,KAAYhd,EAAAA,EAAAA,IAAOgd,GAASM,WAC/B1d,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOmN,GAAa,EACrD5O,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,MAAO,YACP2e,IAAK,8BACLC,IAAKrd,EAAKY,GAAG,uBACZ,KAAM,EAAG6M,KACZ7O,EAAAA,EAAAA,GAAoB,MAAO8O,GAAa,EACrClN,EAAAA,EAAAA,IAAOgd,GAASjf,KACZ6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa+a,EAAqB,CAC/C1iB,IAAK,EACLsL,UAAU7F,EAAAA,EAAAA,IAAOgd,GAASS,QAC1B3X,SAAU,IACVG,aAAa,EACbF,kBAAkB/F,EAAAA,EAAAA,IAAO+F,IACxB,KAAM,EAAG,CAAC,WAAY,uBACzBzF,EAAAA,EAAAA,IAAoB,IAAI,GAC5B6M,IACCnN,EAAAA,EAAAA,IAAOgd,GAASjf,KACZ6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa+a,EAAqB,CAC/C1iB,IAAK,EACLsL,UAAU7F,EAAAA,EAAAA,IAAOgd,GAASU,QAC1B5X,SAAU,IACVC,kBAAkB/F,EAAAA,EAAAA,IAAO+F,IACxB,KAAM,EAAG,CAAC,WAAY,uBACzBzF,EAAAA,EAAAA,IAAoB,IAAI,SAGhCA,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOgd,KAAYhd,EAAAA,EAAAA,IAAOgd,GAASM,WAC/B1d,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOuN,GAAa,CACrDC,IACAjP,EAAAA,EAAAA,GAAoB,MAAO8J,GAAa,CACtCgP,IACClX,EAAAA,EAAAA,IAAOgd,GAASjf,KACZ6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa+a,EAAqB,CAC/C1iB,IAAK,EACLsL,UAAU7F,EAAAA,EAAAA,IAAOgd,GAASW,OAC1B7X,SAAU,IACVG,aAAa,EACbF,kBAAkB/F,EAAAA,EAAAA,IAAO+F,IACxB,KAAM,EAAG,CAAC,WAAY,uBACzBzF,EAAAA,EAAAA,IAAoB,IAAI,GAC5B6W,IACCnX,EAAAA,EAAAA,IAAOgd,GAASjf,KACZ6B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa+a,EAAqB,CAC/C1iB,IAAK,EACLsL,UAAU7F,EAAAA,EAAAA,IAAOgd,GAASY,QAC1B9X,SAAU,IACVC,kBAAkB/F,EAAAA,EAAAA,IAAO+F,IACxB,KAAM,EAAG,CAAC,WAAY,uBACzBzF,EAAAA,EAAAA,IAAoB,IAAI,SAGhCA,EAAAA,EAAAA,IAAoB,IAAI,IAC3B,MAvKP,CA2KD,IC/PD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,sBCLA,MACMxC,GAAa,CAAEC,GAAI,YACnBC,GAAa,CAAEC,MAAO,iBACtBC,GAAa,CAAE3D,IAAK,GACpB4D,GAAa,CAAE5D,IAAK,GACpB8D,GAAa,CACjB9D,IAAK,EACL0D,MAAO,iBAmBT,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,WACRC,MAAO,CACLzC,OAAQ,KACRI,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,EAON5G,GAAQgI,EAAAA,EAAAA,MAER,OAAEjE,EAAF,KAAUI,IAAS0C,EAAAA,EAAAA,IAAOL,GAC1BmS,GAAOnQ,EAAAA,EAAAA,IAAI,GACX2c,EAAW,EACXC,EACJ5e,EAAMrC,KAAKsV,aAAe0L,EAAWA,EAAW3e,EAAMrC,KAAKsV,aAC7D9N,EAAAA,EAAAA,KAAc,IAAM0Z,MACpB,MAAMhhB,GAAoC6D,EAAAA,EAAAA,KACxC,IAAMlI,EAAMmI,QAAQmd,EAAAA,GAAAA,QAAAA,qBAEhBC,GAA0Crd,EAAAA,EAAAA,KAAS,IACvD7D,EAASqE,MAAM1G,OAAS,GAC2C,OAA/DqC,EAASqE,MAAMrE,EAASqE,MAAM1G,OAAS,GAAGwjB,mBAIhD,SAASH,IACPrlB,EAAM8I,SAASwc,EAAAA,GAAAA,QAAAA,sBAA8C,CAC3D3M,KAAMA,EAAKjQ,MACXyc,cACGM,GAAAA,IAEN,CACD,SAASC,IACP/M,EAAKjQ,OAAS,EACd1I,EAAM8I,SAASwc,EAAAA,GAAAA,QAAAA,2BAAmD,CAChE3M,KAAMA,EAAKjQ,MACXyc,cACGM,GAAAA,IAEN,CAEH,MAAO,CAAC3e,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,IAAY+B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,6BAA8B,IAC7FJ,EAAAA,EAAAA,IAAOnD,GAAMsV,YAAc,GAAiC,KAA5BnS,EAAAA,EAAAA,IAAOjD,GAAUrC,SAC7CkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,GAAY,GACnD0B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAY,IAAIG,OAAMxH,EAAAA,EAAAA,IAAO8d,IAAoBzjB,SAAUiN,KACzG1H,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAamc,GAAa,CAC9CxhB,MAAMmD,EAAAA,EAAAA,IAAOnD,GACbkJ,kBAAkB/F,EAAAA,EAAAA,IAAOnD,GAAMoW,eAC/B1Y,IAAK+M,GACJ,KAAM,EAAG,CAAC,OAAQ,wBACnB,WAEL1H,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO1B,GAAY,GACnDyB,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOjD,IAAYigB,KAC7Epd,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAamc,GAAa,CAC9CrB,QAASA,EACTnN,OACJ7P,EAAAA,EAAAA,IAAOjD,GAAUrC,OAAS,GACtBsF,EAAAA,EAAAA,IAAOvD,GAAQoa,QAAQyH,GAAMA,EAAEvgB,KAAOif,EAAQjB,WAAU,GACxD,KAEAlf,MAAMmD,EAAAA,EAAAA,IAAOnD,GACbkJ,kBAAkB/F,EAAAA,EAAAA,IAAOnD,GAAMoW,eAC/B1Y,IAAKyiB,EAAQjf,IACZ,KAAM,EAAG,CAAC,UAAW,QAAS,OAAQ,wBACvC,MACyB,KAA5BiC,EAAAA,EAAAA,IAAOjD,GAAUrC,SACbkF,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaqc,GAAAA,EAAY,CAAEhkB,IAAK,MAC/C+F,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOie,KACHre,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOxB,GAAY,EACpDD,EAAAA,EAAAA,GAAoB,SAAU,CAAEwD,QAASwc,IAAoBre,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,+BAAgC,OAExHE,EAAAA,EAAAA,IAAoB,IAAI,QAIrC,IC7GD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,kECLA,MAAMxC,GAAa,CAAC,SAYpB,QAA4BkB,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,kBACRC,MAAO,CACLsf,gBAAiB,CAAEtZ,KAAMC,SACzB6X,QAAS,KACT1U,WAAY,KACZmW,WAAY,MAEdpf,MAAMC,GAER,MAAMJ,EAAQI,GASN,gBAAEkf,EAAF,QAAmBxB,EAAnB,WAA4B1U,EAA5B,WAAwCmW,IAAelf,EAAAA,EAAAA,IAAOL,GAEtE,MAAO,CAACM,EAAUC,KAChB,MAAMmQ,GAAwBjQ,EAAAA,EAAAA,IAAkB,cAEhD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C5B,MAAO,mBACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAClCrC,EAAKsC,QAAQC,KAAK,CAAEgD,KAAM,UAAWvL,OAAQ,CAAE0jB,WAAWld,EAAAA,EAAAA,IAAOgd,GAASjf,QAE3E,EACDkC,EAAAA,EAAAA,IAAa2P,EAAuB,CAClC,eAAe5P,EAAAA,EAAAA,IAAOsI,GACtBE,OAAOxI,EAAAA,EAAAA,IAAOgd,GAASxU,MACvBD,OAAOvI,EAAAA,EAAAA,IAAOye,IACb,KAAM,EAAG,CAAC,cAAe,QAAS,WACrCrgB,EAAAA,EAAAA,GAAoB,MAAO,KAAM,EAC9B4B,EAAAA,EAAAA,IAAOgd,GAAS0B,QAAQhkB,OAAS,IAC7BkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,IAAK,CACtCtF,IAAK,EACL0D,MAAO,+BACP,cAAe,OACfuK,OACFxI,EAAAA,EAAAA,IAAOgd,GAAS0B,QACb7H,QAAQ8H,MACP3e,EAAAA,EAAAA,IAAOwe,IAAiD,OAAvBG,EAAOC,cAEzC7X,KAAK4X,GAAW,IAAInf,EAAKY,GAAG,mBAAmBue,EAAOC,oBAEtD,KAAM,EAAG9gB,MACZwC,EAAAA,EAAAA,IAAoB,IAAI,MAzBhC,CA6BD,IC/DD,MAAM,GAAc,GAEpB,UCJA,MAAMxC,GAAa,CAAEG,MAAO,eACtBD,GAAa,CACjB6gB,OAAQ,KACRC,MAAO,KACPhX,QAAS,aAEL5J,GAAa,CAAC,SAAU,oBAAqB,aASnD,QAA4Bc,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,aACRC,MAAO,CACL6f,OAAQ,KACRC,SAAU,MAEZ3f,MAAMC,GAER,MAAMJ,EAAQI,GAON,OAAEyf,EAAF,SAAUC,IAAazf,EAAAA,EAAAA,IAAOL,GACpC,IAAI+f,GAAe,GACnB,MAAM9W,EAAK,GACLC,EAAK,GACL8W,EAAS,GACTC,EAAgB,EAAIC,KAAKC,GAAKH,EAEpC,SAASI,EACPC,EACAJ,GAEA,OAAOA,EAAgBI,EAAaJ,CACrC,CACD,SAASK,EACPlY,EACAiY,GAEA,MAAME,EAAW,UAAUR,MAAgB9W,MAAOC,KAElD,OADA6W,EAA2B,IAAbM,EAAmBN,EAC1BQ,CACR,CAEH,MAAO,CAACjgB,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,GAC1D8B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY,GACnD4B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAY0G,OAAO2R,SAAQ1f,EAAAA,EAAAA,IAAOgf,KAAY,CAACvlB,EAAM6N,MACnG1H,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,IAAK,CAAEtF,IAAK+M,GAAS,EAC7DlJ,EAAAA,EAAAA,GAAoB,SAAU,CAC5B+J,GAAIA,EACJC,GAAIA,EACJC,EAAG6W,EACHtW,KAAM,cACN+W,QAAQ3f,EAAAA,EAAAA,IAAO+e,IAAStlB,EAAK,IAC7B,oBACA6lB,EAA0B7lB,EAAK,GAAG8lB,WAAYJ,GAE9C,mBAAoBA,EACpB,eAAgB,IAChB,iBAAkB,MAClBS,UAAWJ,EAA2BlY,EAAO7N,EAAK,GAAG8lB,aACpD,KAAM,EAAGrhB,SAEZ,WAIT,IC5ED,MAAM,GAAc,GAEpB,UCFA,MACMJ,GAAa,CAAEG,MAAO,2BACtBD,GAAa,CAAEC,MAAO,kBACtBC,GAAa,CACjB3D,IAAK,EACL0D,MAAO,iBAEHE,GAAa,CAAEF,MAAO,iBAiB5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,wBACRC,MAAO,CACL6f,OAAQ,KACRC,SAAU,KACVviB,OAAQ,KACRM,SAAU,MAEZsC,MAAMC,GAER,MAAMJ,EAAQI,GASN,OAAEyf,EAAF,SAAUC,EAAV,OAAoBviB,EAApB,SAA4BM,IAAawC,EAAAA,EAAAA,IAAOL,GAChD2gB,GAAW3e,EAAAA,EAAAA,KAAI,GAErB,SAAS4e,EAAWva,GAClBA,EAAMwa,kBACNF,EAASze,OAASye,EAASze,KAC5B,CAEH,MAAO,CAAC5B,EAAUC,KAChB,MAAMugB,GAA2BC,EAAAA,EAAAA,IAAkB,iBAEnD,OAAQrgB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,MAAO,iBACP2D,QAASke,GACR,EACD1hB,EAAAA,EAAAA,GAAoB,MAAOJ,IAAY+B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOjD,GAAUrC,QAAS,IAClFuF,EAAAA,EAAAA,IAAaigB,GAAY,CACvBlB,UAAUhf,EAAAA,EAAAA,IAAOgf,GACjBD,QAAQ/e,EAAAA,EAAAA,IAAO+e,IACd,KAAM,EAAG,CAAC,WAAY,aAEzBc,EAASze,OAoBPd,EAAAA,EAAAA,IAAoB,IAAI,KAnBvBV,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,GAAY,EACpDuH,EAAAA,EAAAA,MAAiB7F,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO1B,GAAY,EACpEC,EAAAA,EAAAA,GAAoB,IAAK,CACvBH,MAAO,4BACP,cAAe,OACf2D,QAASke,MAEVlgB,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOjD,IAAW,CAACigB,EAAS1V,MACtF1H,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaie,GAAiB,CAClD5lB,IAAK+M,EACL0V,QAASA,EACT1U,YAAYtI,EAAAA,EAAAA,IAAOogB,GAAAA,GAAPpgB,CAAsBgd,GAAShd,EAAAA,EAAAA,IAAOvD,IAClDgiB,YAAYze,EAAAA,EAAAA,IAAOqgB,GAAAA,GAAPrgB,CAAsBgd,GAAShd,EAAAA,EAAAA,IAAOvD,KACjD,KAAM,EAAG,CAAC,UAAW,aAAc,kBACpC,SACD,CACH,CAACujB,EAA0BF,SA5BrC,CAkCD,ICrFD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MAAMhiB,GAAa,CAAEG,MAAO,qBACtBD,GAAa,CAAEC,MAAO,mBACtBC,GAAa,CACjB3D,IAAK,EACL0D,MAAO,oBAEHE,GAAa,CACjB5D,IAAK,EACL0D,MAAO,iBAEHI,GAAa,CAAEJ,MAAO,kBACtBK,GAAa,CACjB/D,IAAK,EACL0D,MAAO,iBAkBT,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,mBACRC,MAAO,CACLsf,gBAAiB,CAAEtZ,KAAMC,SACzBpI,SAAU,KACVN,OAAQ,MAEV4C,MAAMC,GAER,MAAMJ,EAAQI,GAQN,gBAAEkf,EAAF,SAAmBzhB,EAAnB,OAA6BN,IAAW8C,EAAAA,EAAAA,IAAOL,GAC/CohB,GAAgB1f,EAAAA,EAAAA,KAAS,KAAM2f,EAAAA,GAAAA,IAAiBrhB,EAAMnC,YACtDgiB,GAASne,EAAAA,EAAAA,KAAS,KAAM4f,EAAAA,GAAAA,IAActhB,EAAMzC,UAC5CgkB,EAAwB,EAEhC,MAAO,CAACjhB,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACpCgC,EAAAA,EAAAA,IAAOjD,GAAUrC,QAAU+lB,IACvB7gB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,GAAY,GACnD0B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAOjD,GAAU2jB,MAAM,EAAGD,IAAwB,CAACzD,EAAS1V,MACtH1H,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaie,GAAiB,CAClD5lB,IAAK+M,EACLkX,iBAAiBxe,EAAAA,EAAAA,IAAOwe,GACxBxB,QAASA,EACT1U,YAAYtI,EAAAA,EAAAA,IAAOogB,GAAAA,GAAPpgB,CAAsBgd,GAAShd,EAAAA,EAAAA,IAAOvD,IAClDgiB,YAAYze,EAAAA,EAAAA,IAAOqgB,GAAAA,GAAPrgB,CAAsBgd,GAAShd,EAAAA,EAAAA,IAAOvD,KACjD,KAAM,EAAG,CAAC,kBAAmB,UAAW,aAAc,kBACvD,WAELmD,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO1B,GAAY,EACpD8B,EAAAA,EAAAA,IAAa0gB,GAAuB,CAClC5jB,UAAUiD,EAAAA,EAAAA,IAAOjD,GACjBN,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfuiB,UAAUhf,EAAAA,EAAAA,IAAOsgB,GACjBvB,QAAQ/e,EAAAA,EAAAA,IAAO+e,IACd,KAAM,EAAG,CAAC,WAAY,SAAU,WAAY,iBAGvD3gB,EAAAA,EAAAA,GAAoB,MAAOC,GAAY,EACpC2B,EAAAA,EAAAA,IAAOjD,GAAUrC,OAAS,IACtBkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOvB,GAAY,EACpD2B,EAAAA,EAAAA,IAAa0gB,GAAuB,CAClC5jB,UAAUiD,EAAAA,EAAAA,IAAOjD,GACjBN,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfuiB,UAAUhf,EAAAA,EAAAA,IAAOsgB,GACjBvB,QAAQ/e,EAAAA,EAAAA,IAAO+e,IACd,KAAM,EAAG,CAAC,WAAY,SAAU,WAAY,eAEjDze,EAAAA,EAAAA,IAAoB,IAAI,OAIjC,ICzFD,MAAM,GAAc,GAEpB,UCJA,MAAMxC,GAAa,CAAEG,MAAO,kBACtBD,GAAa,CAAEC,MAAO,qBAqB5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,gBACRC,MAAO,CACL0hB,WAAY,KACZpC,gBAAiB,CAAEtZ,KAAMC,SACzB0b,QAAS,KACTpkB,OAAQ,KACRqkB,UAAW,KACX5O,SAAU,KACV6O,mBAAoB,CAAE7b,KAAMC,SAC5BpI,SAAU,MAEZsC,MAAMC,GAER,MAAMJ,EAAQI,GAaN,WACJshB,EADI,gBAEJpC,EAFI,QAGJqC,EAHI,OAIJpkB,EAJI,UAKJqkB,EALI,SAMJ5O,EANI,mBAOJ6O,EAPI,SAQJhkB,IACEwC,EAAAA,EAAAA,IAAOL,GACL8hB,GAAsB9f,EAAAA,EAAAA,IAAI,IAIhC,SAAS+f,IACPD,EAAK5f,MAAQ,GACb,IAAI8f,EAAMJ,EAAU1f,MACpB,MAAO8f,GAAOL,EAAQzf,MAAO,CAC3B,MAAM+f,EAAe,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAGA,IACrBD,EAAKpf,KAAKmf,GACVA,GAAMG,EAAAA,GAAAA,GAAQH,EAAK,GAErBF,EAAK5f,MAAMW,KAAKof,EACjB,CACF,CACD,SAASG,EAAUJ,GACjB,OAAOH,EAAmB3f,MACtB,CAAC,EAAG,GAAG4M,SAASkT,GAChB,CAAC,EAAG,GAAGlT,SAASkT,EACrB,CACD,SAASK,EAAeL,EAAWnkB,GACjC,OAAIA,EACKA,EACJ8Z,QAAQmG,IACPwE,EAAAA,GAAAA,IAAUxP,EAAAA,GAAAA,IAAcgL,EAAQG,aAAcjL,EAAS9Q,OAAQ8f,KAEhEO,UAEE,EACR,CAOH,OAnCEnd,EAAAA,EAAAA,KAAU,IAAM2c,OA8BhBzb,EAAAA,EAAAA,KACE,IAAMtG,EAAM0hB,aACZ,IAAMK,MAGH,CAACzhB,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,GAC1D8B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAY2Z,EAAK5f,OAAO,CAACsgB,EAAKpa,MAC5E1H,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C5B,MAAO,eACP1D,IAAK+M,GACJ,GACA1H,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAYqa,GAAK,CAACR,EAAKE,MACrExhB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C5B,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,gBAAiB,CAC3C,kBAAkBhC,EAAAA,EAAAA,IAAO2hB,GAAAA,EAAP3hB,CAAoBkhB,GAAKlhB,EAAAA,EAAAA,IAAO4gB,IAClD,WAAYU,EAAUF,GACtBQ,OAAO5hB,EAAAA,EAAAA,IAAO6hB,GAAAA,EAAP7hB,CAAgBkhB,MAErB3mB,IAAK6mB,GACJ,EACDnhB,EAAAA,EAAAA,IAAa6hB,GAAkB,CAC7B/kB,SAAUwkB,EAAeL,GAAKlhB,EAAAA,EAAAA,IAAOjD,IACrCN,QAAQuD,EAAAA,EAAAA,IAAOvD,GACf+hB,iBAAiBxe,EAAAA,EAAAA,IAAOwe,IACvB,KAAM,EAAG,CAAC,WAAY,SAAU,qBACnCpgB,EAAAA,EAAAA,GAAoB,MAAOJ,IAAY+B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAO+R,GAAAA,EAAP/R,CAAekhB,EAAK,MAAO,IAClF,MACD,WAEJ,QAGP,IC1HD,MAAM,GAAc,GAEpB,UCJA,MAAMpjB,GAAa,CAAEG,MAAO,iBAS5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,eACRC,MAAO,CACL4hB,UAAW,KACXiB,cAAe,MAEjB1iB,MAAMC,GAER,MAAMJ,EAAQI,EAON6hB,EAAO,GACb,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAGA,IACrBD,EAAKpf,MAAKsf,EAAAA,GAAAA,GAAQniB,EAAM4hB,UAAWM,IAGvC,MAAO,CAAC5hB,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,GAC1D8B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAY8Z,GAAM,CAACD,EAAK5Z,KACnElJ,EAAAA,EAAAA,GAAoB,MAAO,CAChCH,MAAO,eACP1D,IAAK+M,IACJvH,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAO+R,GAAAA,EAAP/R,CAAekhB,EAAK,MAAO,CAAEvmB,OAAQ2E,EAAQyiB,iBAAmB,KAClF,OAGP,ICrCD,MAAM,GAAc,GAEpB,UCJA,MAAMjkB,GAAa,CAAEG,MAAO,mBACtBD,IAA0BI,EAAAA,EAAAA,GAAoB,IAAK,CACvDH,MAAO,qBACP,cAAe,QACd,MAAO,GACJC,GAAa,CACjBF,IAEIG,GAAa,CAAEF,MAAO,kBACtBI,IAA0BD,EAAAA,EAAAA,GAAoB,IAAK,CACvDH,MAAO,sBACP,cAAe,QACd,MAAO,GACJK,GAAa,CACjBD,IAWF,QAA4BW,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,iBACRC,MAAO,CACLgiB,IAAK,KACLa,cAAe,MAEjBvhB,MAAO,CAAC,mBAAoB,wBAC5BnB,MAAMC,GAAc,KAAEmB,IAExB,MAAMvB,EAAQI,GASN,IAAE4hB,EAAF,cAAOa,IAAkBxiB,EAAAA,EAAAA,IAAOL,GAExC,MAAO,CAACM,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,MAAO,qCACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBpB,EAAK,0BACzDvC,KACHE,EAAAA,EAAAA,GAAoB,MAAOD,GAAY,EACrCC,EAAAA,EAAAA,GAAoB,OAAQ,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAO+R,GAAAA,EAAP/R,EAAeA,EAAAA,EAAAA,IAAOkhB,GAAM,WAAY,CAAEvmB,QAAQqF,EAAAA,EAAAA,IAAO+hB,MAAoB,MAElI3jB,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,MAAO,sCACP2D,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBpB,EAAK,sBACzDnC,MAGN,IC1DD,MAAM,GAAc,GAEpB,UCJA,MAAMR,GAAa,CAAEC,GAAI,iBACnBC,GAAa,CAAEC,MAAO,qBAqB5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLzC,OAAQ,KACRI,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,EAON5G,GAAQgI,EAAAA,EAAAA,MAER,OAAEjE,EAAF,KAAUI,IAAS0C,EAAAA,EAAAA,IAAOL,GAC1B8iB,EAAa,aACbd,GAAMhgB,EAAAA,EAAAA,IAAI,IAAIkU,MACd6M,GAAgB/gB,EAAAA,EAAAA,KAAIghB,EAAAA,GAAAA,IAAuBhB,EAAI9f,MAAOlC,EAAMrC,KAAKkW,QACjEoP,GAA4CvhB,EAAAA,EAAAA,KAChD,IAAMlI,EAAMmI,QAAQmd,EAAAA,GAAAA,QAAAA,qBAEhB+D,GAAqCnhB,EAAAA,EAAAA,KACzC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,UAKtB,SAASohB,IACPH,EAAc7gB,OAAQ8gB,EAAAA,GAAAA,IAAuBhB,EAAI9f,MAAOlC,EAAMrC,KAAKkW,OACnE,MAAMsP,EAA8B,CAClCC,MAAMvQ,EAAAA,GAAAA,GAAOkQ,EAAc7gB,MAAM4W,MAAOgK,GACxC9hB,IAAI6R,EAAAA,GAAAA,GAAOkQ,EAAc7gB,MAAMmhB,IAAKP,GACpC3Q,KAAM,EACNwM,SAAU,OACPM,GAAAA,IAELzlB,EAAM8I,SAASwc,EAAAA,GAAAA,QAAAA,sBAA8CqE,EAC9D,CACD,SAASG,IACPtB,EAAI9f,OAAQqhB,EAAAA,GAAAA,GAAUvB,EAAI9f,MAAO,GACjCghB,GACD,CACD,SAASM,IACPxB,EAAI9f,OAAQuhB,EAAAA,GAAAA,GAAUzB,EAAI9f,MAAO,GACjCghB,GACD,CAEH,OAtBE/d,EAAAA,EAAAA,KAAc,IAAM+d,MAsBf,CAAC5iB,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACrCiC,EAAAA,EAAAA,IAAa2iB,GAAgB,CAC3B1B,IAAKA,EAAI9f,MACT,kBAAkBpB,EAAAA,EAAAA,IAAO+hB,GACzBc,mBAAoBL,EACpBM,uBAAwBJ,GACvB,KAAM,EAAG,CAAC,MAAO,oBACpBziB,EAAAA,EAAAA,IAAa8iB,GAAc,CACzB,aAAcd,EAAc7gB,MAAM4W,MAClC,kBAAkBhY,EAAAA,EAAAA,IAAO+hB,IACxB,KAAM,EAAG,CAAC,aAAc,oBAC3B9hB,EAAAA,EAAAA,IAAa+iB,GAAe,CAC1BpC,WAAYM,EAAI9f,MAChBod,iBAAiBxe,EAAAA,EAAAA,IAAOnD,GAAMmW,eAC9B,WAAYiP,EAAc7gB,MAAMmhB,IAChC9lB,QAAQuD,EAAAA,EAAAA,IAAOvD,GACf,aAAcwlB,EAAc7gB,MAAM4W,MAClC9F,UAAUlS,EAAAA,EAAAA,IAAOnD,GAAMqV,SACvBnV,UAAUiD,EAAAA,EAAAA,IAAOmiB,GACjBpB,oBAAoB/gB,EAAAA,EAAAA,IAAOnD,GAAMkW,OAChC,KAAM,EAAG,CAAC,aAAc,kBAAmB,WAAY,SAAU,aAAc,WAAY,WAAY,2BAI/G,IChGD,MAAM,GAAc,GAEpB,U,iCCJA,MACMjV,GAAa,CAAEG,MAAO,oBAc5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,iBACRC,MAAO,CACLzC,OAAQ,KACRI,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,GAON,OAAE7C,EAAF,KAAUI,IAAS0C,EAAAA,EAAAA,IAAOL,GAC1B+jB,EAAO,IAAI7N,KACX8N,EAAc,CAClBC,SAAU,OACVnL,OAAOoL,EAAAA,GAAAA,GAAaH,GACpBV,KAAKc,EAAAA,GAAAA,GAAWJ,IAEZK,EAAmBpkB,EAAMzC,OAAOsK,KAAK8I,GAAUA,EAAM9R,KAE7D,MAAO,CAACyB,EAAUC,KAChB,MAAMuK,GAAkBrK,EAAAA,EAAAA,IAAkB,QAE1C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DmC,EAAAA,EAAAA,IAAa+J,EAAiB,KAAM,CAClCxB,OAAOrI,EAAAA,EAAAA,KAAS,IAAM,EACpBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yBAA0B,MAEtE6J,SAAS9J,EAAAA,EAAAA,KAAS,IAAM,EACtBF,EAAAA,EAAAA,IAAasjB,GAAAA,EAAW,CACtB9mB,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfI,MAAMmD,EAAAA,EAAAA,IAAOnD,GACb,eAAgBqmB,EAChB,uBAAuBljB,EAAAA,EAAAA,IAAOsjB,GAC9B,yBAAyB,GACxB,KAAM,EAAG,CAAC,SAAU,OAAQ,2BAEjCjjB,EAAG,KAdP,CAkBD,ICzDD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,qBCFO,MAAMmjB,GAAe,CAC1B7E,EACA7H,EACA/Q,KAEA,MAAM0d,EAA0B,KAC1BC,EAAwB3d,EAC1BM,GAAAA,GAAMod,GAAkBnd,cACxBmd,EACEE,EAAwB,IACxBC,EAAsB7d,EACxBM,GAAAA,GAAMsd,GAAgBrd,cACtBqd,EACJ,IAAIviB,EACJ,OAAQud,EAAOC,aACb,IAAK,KACL,IAAK,KACHxd,EAAQ,IAAGoF,EAAAA,GAAAA,KACRmY,EAAOvd,MACRqiB,EACAC,EACA,MACGA,MACL,MACF,IAAK,KACHtiB,EAAQ,IAAGoF,EAAAA,GAAAA,KACRmY,EAAOvd,MACRqiB,EACAC,EACA,MACGA,IACL,MACF,IAAK,KACHtiB,EAAQ,IAAGoF,EAAAA,GAAAA,KACRmY,EAAOvd,MACRuiB,EACAC,EACA,MACGA,IACL,MACF,IAAK,KACHxiB,EAAQud,EAAOvd,MACf,MACF,QACE,MAAM,IAAIyiB,MACR,sEAAsElF,EAAOC,gBAGnF,MAAO,CACLzB,cAAc2G,EAAAA,GAAAA,KAAkB9R,EAAAA,GAAAA,IAAc2M,EAAOxB,aAAcrG,IAChEqG,aACH4G,WAAYpF,EAAOoF,WACnBhmB,GAAI4gB,EAAO5gB,GACX6gB,YAAaD,EAAOC,YACpBxd,MAAOA,EANT,EAUW4iB,GAAc,CAACC,EAAgBC,KAC1C,MAAMC,EAAeF,EAAE1c,MAAM6O,cACvBgO,EAAeF,EAAE3c,MAAM6O,cAC7B,OAAO+N,EAAeC,EAAe,EAAID,EAAeC,GAAgB,EAAI,CAA5E,EAGWC,GAAqB,CAChC3F,EACAnP,EACAuH,EACA/Q,EACAiN,IAEA0L,EACG7H,QAAQxO,KAAO2K,GAA0C,OAAlB3K,EAAEuW,cACzC0F,QAAO,CAACC,EAA6B5F,KACpC,MAAM9O,EAAQN,EAAiBiV,MAAMlG,GAAMA,EAAEvgB,KAAO4gB,EAAO5C,WAa3D,OAZIlM,GAASA,EAAMtI,aACwB,IAArCgd,EAAU1U,EAAMC,mBAClByU,EAAU1U,EAAMC,iBAAmB,CACjCvI,MAAOsI,EAAMtI,MACbgB,MAAOsH,EAAMtH,MACbmW,QAAS,KAGb6F,EAAU1U,EAAMC,iBAAiB4O,QAAQ3c,KACvCyhB,GAAa7E,EAAQ7H,EAAI/Q,KAGtBwe,CAAP,GACC,CAAC,GC1FFzmB,GAAa,CAAEG,MAAO,gBACtBD,GAAa,CAAEC,MAAO,eACtBC,GAAa,CAAED,MAAO,gBACtBE,GAAa,CAAEF,MAAO,eAa5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,cACRC,MAAO,CACLwf,QAAS,KACT+F,qBAAsB,MAExBplB,MAAMC,GAER,MAAMJ,EAAQI,GAON,QAAEof,EAAF,qBAAW+F,IAAyBllB,EAAAA,EAAAA,IAAOL,IAE3C,EAAEmQ,IAAMC,EAAAA,GAAAA,MAEd,SAASoV,EAAqBhG,GAC5B,MAAMiG,EAAmC,GAOzC,OANAjG,EAAQ3X,KAAK4X,IACXgG,EAAkB5iB,KAAK,IAClB4c,EACHpX,MAAO8H,EAAE,mBAAmBsP,EAAOC,gBAFrC,IAKK+F,EAAkBjT,KAAKsS,GAC/B,CAEH,MAAO,CAACxkB,EAAUC,KAChB,MAAMmQ,GAAwBjQ,EAAAA,EAAAA,IAAkB,cAC1CD,GAAyBC,EAAAA,EAAAA,IAAkB,eAC3CqK,GAAkBrK,EAAAA,EAAAA,IAAkB,QAE1C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DmC,EAAAA,EAAAA,IAAa+J,EAAiB,KAAM,CAClCxB,OAAOrI,EAAAA,EAAAA,KAAS,IAAM,EACpBF,EAAAA,EAAAA,IAAa2P,EAAuB,CAClC,eAAe5P,EAAAA,EAAAA,IAAO0e,GAASnX,MAC/BgB,OAAOvI,EAAAA,EAAAA,IAAO0e,GAASnW,OACtB,KAAM,EAAG,CAAC,cAAe,WAC5BzI,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOykB,IAAwB,MAEzExa,SAAS9J,EAAAA,EAAAA,KAAS,IAAM,GACrBP,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAYqd,GAAqB1kB,EAAAA,EAAAA,IAAO0e,GAASA,UAAWC,KAC1G/e,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C5B,MAAO,SACP1D,IAAKokB,EAAO5gB,IACX,EACDK,EAAAA,EAAAA,GAAoB,OAAQJ,IAAY+B,EAAAA,EAAAA,IAAiB4e,EAAOpX,OAAQ,IACxEnJ,EAAAA,EAAAA,GAAoB,OAAQF,IAAY6B,EAAAA,EAAAA,IAAiB4e,EAAOvd,OAAQ,IACxEhD,EAAAA,EAAAA,GAAoB,OAAQD,GAAY,EACtC8B,EAAAA,EAAAA,IAAaP,EAAwB,CACnCQ,GAAI,CACJ6E,KAAM,UACNvL,OAAQ,CAAE0jB,UAAWyB,EAAOoF,cAE3B,CACDnpB,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiB4e,EAAOxB,cAAe,MAE1D9c,EAAG,GACF,KAAM,CAAC,cAGZ,SAENA,EAAG,KAjCP,CAqCD,ICtFD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MAAM3C,GAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,GAAa,CAAEG,MAAO,wBACtBD,GAAa,CAAEC,MAAO,iBACtBC,GAA2BR,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,+BACP,cAAe,QACd,MAAO,KACJE,GAAa,CAAEF,MAAO,gBACtBI,GAAa,CACjB9D,IAAK,EACL0D,MAAO,cAiBT,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLzC,OAAQ,KACRI,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,GAON,EAAE+P,IAAMC,EAAAA,GAAAA,MAERsV,GAAiBhkB,EAAAA,EAAAA,KAAS,IAC9ByjB,GACEnlB,EAAMrC,KAAK6hB,SACXlP,EAAAA,GAAAA,IAAgBtQ,EAAMzC,OAAQ4S,GAC9BnQ,EAAMrC,KAAKqV,SACXhT,EAAMrC,KAAKoW,eACX/T,EAAMrC,KAAKmW,kBAIjB,MAAO,CAACxT,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,CACrCE,IACA4B,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kBAAmB,IAAK,MAE1EhC,EAAAA,EAAAA,GAAoB,MAAOD,GAAY,CACW,IAA/C4P,OAAO1T,MAAK2F,EAAAA,EAAAA,IAAO4kB,IAAiBlqB,SAChCkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOxB,IAAY0B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,wBAAyB,KACxGE,EAAAA,EAAAA,IAAoB,IAAI,KAC3BV,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAY0G,OAAO1T,MAAK2F,EAAAA,EAAAA,IAAO4kB,IAAiBlT,QAAS+S,KACvG7kB,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa2iB,GAAa,CAC9CJ,qBAAsBA,EACtB/F,SAAS1e,EAAAA,EAAAA,IAAO4kB,GAAgBH,GAChClqB,IAAKkqB,EACL1e,iBAAkBzG,EAAQzC,KAAKoW,gBAC9B,KAAM,EAAG,CAAC,uBAAwB,UAAW,wBAC9C,UAIT,ICxED,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCLA,MAAMnV,GAAa,CAAEC,GAAI,cAazB,QAA4BiB,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLrC,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,GAMN,EAAE+P,IAAMC,EAAAA,GAAAA,OAER,KAAEzS,IAAS0C,EAAAA,EAAAA,IAAOL,GAClB4lB,GAAyClkB,EAAAA,EAAAA,KAC7C,IAAM1B,EAAMrC,KAAKkoB,iBAEbC,GAAgBpkB,EAAAA,EAAAA,KAAS,IAAMqkB,EAAaH,KAC5CrB,EAA0B,KAC1BC,EAAwB7mB,EAAKuE,MAAM6R,eACrC5M,GAAAA,GAAMod,GAAkBnd,cACxBmd,EACEyB,GAAqCtkB,EAAAA,EAAAA,KAAS,IAClD/D,EAAKuE,MAAM6R,gBACPzM,EAAAA,GAAAA,IAAgB3J,EAAKuE,MAAM+jB,eAAgB1B,EAAkBC,EAAgB,GAC7Ejd,WAAW5J,EAAKuE,MAAM+jB,eAAeze,QAAQ,MAC7Cid,EAAwB,IACxBC,EAAsB/mB,EAAKuE,MAAM6R,eACnC5M,GAAAA,GAAMsd,GAAgBrd,cACtBqd,EACEyB,GAAmCxkB,EAAAA,EAAAA,KAAS,IAChD/D,EAAKuE,MAAM6R,gBACPzM,EAAAA,GAAAA,IAAgB3J,EAAKuE,MAAMikB,aAAc1B,EAAgBC,EAAc,GACvEnd,WAAW5J,EAAKuE,MAAMikB,aAAa3e,QAAQ,MAGjD,SAASue,EAAaF,GACpB,MAAM5B,EAAW4B,EAAe3jB,MAAM3G,MAAM,QACxCsqB,EAAe3jB,MAAM8C,MAAM,MAAM,GACjC6gB,EAAe3jB,MACnB,MAAO,CACL+f,KAAM4D,EAAe3jB,MAAM3G,MAAM,QAC7B,GAAGsqB,EAAe3jB,MAAM8C,MAAM,KAAK,MACjC6gB,EAAe3jB,MAAM3G,MAAM,SACvB4U,EAAE,aAAc,GAChBA,EAAE,aAAc,KAEtB,KAAKA,EAAE,aAAc,MACzB8T,SAAU,GAAGA,EAASjf,MAAM,KAAK,OAAOif,EAASjf,MAAM,KAAK,QAE/D,CAEH,MAAO,CAAC1E,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DmC,EAAAA,EAAAA,IAAa6O,EAAU,CACrBL,KAAM,WACNrN,OAAOpB,EAAAA,EAAAA,IAAOnD,GAAMsV,YACpB9M,KAAM7F,EAAKY,GAAG,oBAAoBJ,EAAAA,EAAAA,IAAOnD,GAAMsV,cAC9C,KAAM,EAAG,CAAC,QAAS,UACtBlS,EAAAA,EAAAA,IAAa6O,EAAU,CACrBL,KAAM,OACNrN,OAAOpB,EAAAA,EAAAA,IAAOklB,GACd7f,KAAiC,QAA3BrF,EAAAA,EAAAA,IAAO0jB,GAA2B,SAAU1jB,EAAAA,EAAAA,IAAO0jB,IACxD,KAAM,EAAG,CAAC,QAAS,UACrB1jB,EAAAA,EAAAA,IAAOnD,GAAMmW,iBACTpT,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa4M,EAAU,CACpCvU,IAAK,EACLkU,KAAM,iBACNrN,OAAOpB,EAAAA,EAAAA,IAAOolB,GACd/f,KAA+B,QAAzBrF,EAAAA,EAAAA,IAAO4jB,GAAyB,QAAS5jB,EAAAA,EAAAA,IAAO4jB,IACrD,KAAM,EAAG,CAAC,QAAS,WACtBtjB,EAAAA,EAAAA,IAAoB,IAAI,IAC5BL,EAAAA,EAAAA,IAAa6O,EAAU,CACrBL,KAAM,UACNrN,OAAOpB,EAAAA,EAAAA,IAAOglB,GAAe7D,KAC7B9b,MAAMrF,EAAAA,EAAAA,IAAOglB,GAAe7B,UAC3B,KAAM,EAAG,CAAC,QAAS,UACpBnjB,EAAAA,EAAAA,IAAOnD,GAAMmW,gBAOX1S,EAAAA,EAAAA,IAAoB,IAAI,KANvBV,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa4M,EAAU,CACpCvU,IAAK,EACLkU,KAAM,OACNrN,OAAOpB,EAAAA,EAAAA,IAAOnD,GAAMyoB,UACpBjgB,KAAM7F,EAAKY,GAAG,kBAAkBJ,EAAAA,EAAAA,IAAOnD,GAAMyoB,YAC5C,KAAM,EAAG,CAAC,QAAS,YAI7B,ICpGD,MAAM,GAAc,GAEpB,UCJA,MAAM5nB,GAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,GAAa,CACjBvD,IAAK,EACLwD,GAAI,YACJE,MAAO,QAEHD,GAAa,CAAEC,MAAO,yBACtBC,GAAa,CAAED,MAAO,OACtBE,GAA2BT,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,iBACP,cAAe,QACd,MAAO,KACJI,GAAa,CACjBF,IAEIG,GAA2BZ,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,kBACP,cAAe,QACd,MAAO,KACJM,GAAa,CACjBD,IAEIE,GAA2Bd,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,cACP,cAAe,QACd,MAAO,KACJQ,GAAa,CACjBD,IAEIE,GAA4BhB,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACzFH,MAAO,eACP,cAAe,QACd,MAAO,KACJU,GAAc,CAClBD,IAEIE,GAAc,CAAEX,MAAO,aACvB8O,GAAc,CAAE9O,MAAO,iCACvB+O,GAAc,CAAE/O,MAAO,0CACvBgP,GAAc,CAAEhP,MAAO,2CACvBiP,GAA4BxP,IAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAChHoP,GAAc,CAClB5S,IAAK,EACL0D,MAAO,eAgBT,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRI,MAAMC,GAEN,MAAM5G,GAAQgI,EAAAA,EAAAA,KAERC,GAA0CC,EAAAA,EAAAA,KAC9C,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,qBAEhB8D,GAAgCmE,EAAAA,EAAAA,KACpC,IAAMlI,EAAMmI,QAAQ4O,EAAAA,GAAAA,QAAAA,UAEhB8V,GAA0BrkB,EAAAA,EAAAA,IAAI,YAIpC,SAASskB,EAAoB1mB,GAC3BymB,EAAWnkB,MAAQtC,CACpB,CAEH,OANEuF,EAAAA,EAAAA,KAAc,IAAM3L,EAAM8I,SAAS7I,EAAAA,GAAAA,QAAAA,oBAM9B,CAAC6G,EAAUC,KAChB,MAAM8E,GAAoB5E,EAAAA,EAAAA,IAAkB,UAE5C,OAAQK,EAAAA,EAAAA,IAAOW,GAAUyB,WAAYpC,EAAAA,EAAAA,IAAOvD,GAAQ/B,OAAS,IACxDkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EACpDM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACrCI,EAAAA,EAAAA,GAAoB,MAAOF,GAAY,EACrCE,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,mBAAoB,CAAE,cAAoC,aAArBujB,EAAWnkB,SACxEQ,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiB2jB,EAAoB,cACxEnnB,GAAY,IACfD,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,mBAAoB,CAAE,cAAoC,UAArBujB,EAAWnkB,SACxEQ,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiB2jB,EAAoB,WACxEjnB,GAAY,IACfH,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,mBAAoB,CAAE,cAAoC,aAArBujB,EAAWnkB,SACxEQ,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiB2jB,EAAoB,cACxE/mB,GAAY,IACfL,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,mBAAoB,CAAE,cAAoC,YAArBujB,EAAWnkB,SACxEQ,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiB2jB,EAAoB,aACxE7mB,GAAa,QAGpBP,EAAAA,EAAAA,GAAoB,MAAOQ,GAAa,EACtCqB,EAAAA,EAAAA,IAAawlB,GAAgB,CAAE5oB,MAAMmD,EAAAA,EAAAA,IAAOW,IAAa,KAAM,EAAG,CAAC,YAErEvC,EAAAA,EAAAA,GAAoB,MAAO2O,GAAa,EACtC3O,EAAAA,EAAAA,GAAoB,MAAO4O,GAAa,EACtC/M,EAAAA,EAAAA,IAAaylB,GAAgB,CAC3BjpB,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfI,MAAMmD,EAAAA,EAAAA,IAAOW,GACb1C,OAAO+D,EAAAA,EAAAA,IAAgB,CAAE,cAAoC,UAArBujB,EAAWnkB,UAClD,KAAM,EAAG,CAAC,SAAU,OAAQ,WAC/BnB,EAAAA,EAAAA,IAAa0lB,GAAa,CACxBlpB,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfI,MAAMmD,EAAAA,EAAAA,IAAOW,GACb1C,OAAO+D,EAAAA,EAAAA,IAAgB,CAAE,cAAoC,YAArBujB,EAAWnkB,UAClD,KAAM,EAAG,CAAC,SAAU,OAAQ,aAEjChD,EAAAA,EAAAA,GAAoB,MAAO6O,GAAa,EACtChN,EAAAA,EAAAA,IAAa2lB,GAAc,CACzBnpB,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfI,MAAMmD,EAAAA,EAAAA,IAAOW,GACb1C,OAAO+D,EAAAA,EAAAA,IAAgB,CAAE,cAAoC,aAArBujB,EAAWnkB,UAClD,KAAM,EAAG,CAAC,SAAU,OAAQ,WAC/BnB,EAAAA,EAAAA,IAAa4lB,GAAU,CACrBppB,QAAQuD,EAAAA,EAAAA,IAAOvD,GACfI,MAAMmD,EAAAA,EAAAA,IAAOW,GACb1C,OAAO+D,EAAAA,EAAAA,IAAgB,CAAE,cAAoC,aAArBujB,EAAWnkB,UAClD,KAAM,EAAG,CAAC,SAAU,OAAQ,cAGnC8L,QAEDtN,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOsN,GAAa,EACrDlN,EAAAA,EAAAA,IAAasE,KAtDnB,CAyDD,ICxID,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,U,WCLA,MAAMzG,GAAa,CAAEG,MAAO,kBAI5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,eACRI,MAAMC,GAGR,MAAO,CAACE,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DmC,EAAAA,EAAAA,IAAa6lB,GAAAA,KAGhB,ICdD,MAAM,GAAc,GAEpB,U,WCFA,MACMhoB,GAAa,CACjBC,GAAI,kBACJE,MAAO,QAEHD,GAAa,CAAEC,MAAO,aACtBC,GAAa,CAAED,MAAO,iBACtBE,GAAa,CAAEF,MAAO,iBAW5B,QAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,kBACRC,MAAO,CACL6mB,OAAQ,MAEV1mB,MAAMC,GAER,MAAMJ,EAAQI,GAMN,OAAEymB,IAAWxmB,EAAAA,EAAAA,IAAOL,GAE5B,MAAO,CAACM,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,GAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,GAAY,EACrCI,EAAAA,EAAAA,GAAoB,MAAOF,GAAY,EACrC+B,EAAAA,EAAAA,IAAa6c,OAEf1e,EAAAA,EAAAA,GAAoB,MAAOD,GAAY,EACrC8B,EAAAA,EAAAA,IAAa+lB,GAAAA,EAAqB,CAAED,QAAQ/lB,EAAAA,EAAAA,IAAO+lB,IAAW,KAAM,EAAG,CAAC,iBAK/E,IC1CD,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,YAAY,qBAEvE,UCmBA,MAAME,GAAkB/e,IACtB,MAAMgf,EAAQ,4BACRC,EAAMjf,EAAKkf,QAAQF,EAAO,IAAIG,cACpC,MAAe,KAARF,EAAa,UAAYA,EAAIE,aAApC,EAGIC,GAAgC,CACpC,CACEpf,KAAM,IACNnC,KAAM,YACN6H,UAAW2Z,IAEb,CACErf,KAAM,SACNnC,KAAM,QACN6H,UAAW4Z,GACXtnB,MAAO,CAAE6mB,OAAQ,UAEnB,CACE7e,KAAM,YACNnC,KAAM,WACN6H,UAAW4Z,GACXtnB,MAAO,CAAE6mB,OAAQ,aAEnB,CACE7e,KAAM,wBACNnC,KAAM,sBACN6H,UAAW,IACT,+BAIJ,CACE1F,KAAM,+BACNnC,KAAM,4BACN6H,UAAW,IACT,6BAGF1N,MAAO,CAAE6mB,OAAQ,gCAEnB,CACE7e,KAAM,mCACNnC,KAAM,+BACN6H,UAAW,IACT,6BAGF1N,MAAO,CAAE6mB,OAAQ,eAEnB,CACE7e,KAAM,uBACNnC,KAAM,oBACN6H,UAAW,IACT,6BAGF1N,MAAO,CAAE6mB,OAAQ,iBAEnB,CACE7e,KAAM,0BACNnC,KAAM,uBACN6H,UAAW,IACT,6BAGF1N,MAAO,CAAE6mB,OAAQ,kBAEnB,CACE7e,KAAM,mCACNnC,KAAM,kBACN6H,UAAW,IACT,6BAGF1N,MAAO,CAAE6mB,OAAQ,qBAEnB,CACE7e,KAAM,kBACNnC,KAAM,gBACN6H,UAAW,IACT,6BAGF1N,MAAO,CAAE6mB,OAAQ,UAEnB,CACE7e,KAAM,gBACNnC,KAAM,cACN6H,UAAW,IACT,+BAIJ,CACE1F,KAAM,WACNnC,KAAM,UACN6H,UAAW,IACT,8BACF6Z,SAAU,CACR,CACEvf,KAAM,GACNnC,KAAM,cACN6H,UAAW8Z,GACXxnB,MAAQyH,IAAD,CACL6L,IAAKyT,GAAetf,EAAMO,QAE5Buf,SAAU,CACR,CACEvf,KAAM,GACNnC,KAAM,YACN6H,UAAW+Z,GAAAA,GAEb,CACEzf,KAAM,cACNnC,KAAM,kBACN6H,UAAWga,IAEb,CACE1f,KAAM,SACNnC,KAAM,uBACN6H,UAAWia,GACX3nB,MAAO,CAAEyc,WAAW,IAEtB,CACEzU,KAAM,OACNnC,KAAM,WACN6H,UAAWka,GACXL,SAAU,CACR,CACEvf,KAAM,GACNnC,KAAM,eACN6H,UAAWma,IAEb,CACE7f,KAAM,MACNnC,KAAM,UACN6H,UAAWoa,IAEb,CACE9f,KAAM,cACNnC,KAAM,iBACN6H,UAAWoa,GACX9nB,MAAO,CAAE6a,eAAe,IAE1B,CACE7S,KAAM,MACNnC,KAAM,aACN6H,UAAWqa,IAEb,CACE/f,KAAM,YACNnC,KAAM,mBACN6H,UAAWsa,QAMrB,CACEhgB,KAAM,OACNnC,KAAM,qBACN6H,UAAWua,GACXjoB,MAAQyH,IAAD,CACL6L,IAAKyT,GAAetf,EAAMO,QAE5Buf,SAAU,CACR,CACEvf,KAAM,GACNnC,KAAM,mBACN6H,UAAWwa,IAEb,CACElgB,KAAM,UACNnC,KAAM,qBACN6H,UAAWya,IAEb,CACEngB,KAAM,UACNnC,KAAM,qBACN6H,UAAW0a,IAEb,CACEpgB,KAAM,cACNnC,KAAM,yBACN6H,UAAW2a,IAEb,CACErgB,KAAM,SACNnC,KAAM,8BACN6H,UAAWia,GACX3nB,MAAO,CAAEyc,WAAW,QAM9B,CACEzU,KAAM,cACNnC,KAAM,aACN6H,UAAW,IACT,+BAEJ,CACE1F,KAAM,mBACNnC,KAAM,OACN6H,UAAW,IACT,+BAEJ,CACE1F,KAAM,YACNnC,KAAM,WACN6H,UAAW,IACT,+BAIJ,CACE1F,KAAM,uBACNnC,KAAM,UACN6H,UAAW,IACT,8BACF1N,MAAO,CAAEsoB,gBAAgB,IAE3B,CACEtgB,KAAM,4BACNnC,KAAM,cACN6H,UAAW,IACT,+BAIJ,CACE1F,KAAM,0CACNnC,KAAM,iBACN6H,UAAW,IACT,8BACF1N,MAAO,CAAEsoB,gBAAgB,IAE3B,CACEtgB,KAAM,gBACNnC,KAAM,aACN6H,UAAW,IACT,+BAIJ,CACE1F,KAAM,SACNnC,KAAM,iBACN6H,UAAW,IACT,6BACF6Z,SAAU,CACR,CACEvf,KAAM,GACNnC,KAAM,qBACN6H,UAAW6a,IAEb,CACEvgB,KAAM,cACNnC,KAAM,4BACN6H,UAAW8a,GAEb,CACExgB,KAAM,mBACNnC,KAAM,mCACN6H,UAAW8a,EACXxoB,MAAO,CAAEoO,SAAS,IAEpB,CACEpG,KAAM,SACNnC,KAAM,uBACN6H,UAAW+a,IAEb,CACEzgB,KAAM,kBACNnC,KAAM,gBACN6H,UAAW,IACT,8BACF1N,MAAO,CAAE0oB,WAAW,IAEtB,CACE1gB,KAAM,QACNnC,KAAM,sBACN6H,UAAWib,MAIjB,CACE3gB,KAAM,SACNnC,KAAM,QACN6H,UAAWkb,IAEb,CACE5gB,KAAM,mBACNnC,KAAM,YACN6H,UAAWmb,KAITtb,IAASub,EAAAA,EAAAA,IAAa,CAC1BC,SAASC,EAAAA,EAAAA,IAAiBC,KAC1B7B,YAGI8B,GAA6B,CACjC,SACA,kBACA,mCACA,0BACA,uBACA,YACA,wBACA,+BACA,oCAGIC,GAAqB,CAAC,gBAAiB,UAE7C5b,GAAO6b,YAAW,CAACpoB,EAAIoiB,EAAMiG,KAC3B7vB,GAAAA,EAAAA,SACYC,EAAAA,GAAAA,QAAAA,iBACT6vB,MAAK,KACJ,GAAIH,GAAmBra,SAAS9N,EAAGgH,MACjC,OAAOqhB,IAET,GACE7vB,GAAAA,EAAAA,QAAcC,EAAAA,GAAAA,QAAAA,mBACdyvB,GAA2Bpa,SAAS9N,EAAGgH,MAEvC,OAAOqhB,EAAK,KAEd,GACG7vB,GAAAA,EAAAA,QAAcC,EAAAA,GAAAA,QAAAA,mBACdyvB,GAA2Bpa,SAAS9N,EAAGgH,MAQxCqhB,QAPA,CACA,MAAMrhB,EACQ,MAAZhH,EAAGgH,KACC,CAAEA,KAAM,UACR,CAAEA,KAAM,SAAUgJ,MAAO,CAAEoS,KAAMpiB,EAAGuoB,WAC1CF,EAAKrhB,EACN,CAEA,IAEFwhB,OAAO3vB,IACNoE,QAAQpE,MAAMA,GACdwvB,GAAM,GA3BV,IA+BF,S,oCC1XO,IAAKI,EAoBAC,EAUAC,EC9BAC,EAUAC,EAOAC,ECjBAC,EAOAC,EASAC,EChBAC,EAKAC,EAIAC,ECTAC,EAIAC,EAIAC,ECRAC,EASAC,EAQAC,E,iLLjBZ,SAAYjB,GACVA,EAAAA,mBAAAA,kBACAA,EAAAA,mBAAAA,kBACAA,EAAAA,iBAAAA,gBACAA,EAAAA,kBAAAA,iBACAA,EAAAA,kBAAAA,iBACAA,EAAAA,oBAAAA,mBACAA,EAAAA,qBAAAA,oBACAA,EAAAA,UAAAA,SACAA,EAAAA,+BAAAA,8BACAA,EAAAA,qCAAAA,oCACAA,EAAAA,uBAAAA,sBACAA,EAAAA,gCAAAA,+BACAA,EAAAA,uBAAAA,sBACAA,EAAAA,uBAAAA,sBACAA,EAAAA,uBAAAA,sBACAA,EAAAA,2BAAAA,0BACAA,EAAAA,iCAAAA,+BAjBF,EAAYA,IAAAA,EAAe,KAoB3B,SAAYC,GACVA,EAAAA,cAAAA,aACAA,EAAAA,qBAAAA,oBACAA,EAAAA,YAAAA,WACAA,EAAAA,oBAAAA,mBACAA,EAAAA,cAAAA,aACAA,EAAAA,2BAAAA,0BACAA,EAAAA,gBAAAA,cAPF,EAAYA,IAAAA,EAAe,KAU3B,SAAYC,GACVA,EAAAA,yBAAAA,wBACAA,EAAAA,qBAAAA,oBACAA,EAAAA,4BAAAA,2BACAA,EAAAA,qBAAAA,yBACAA,EAAAA,kCAAAA,iCACAA,EAAAA,uBAAAA,qBANF,EAAYA,IAAAA,EAAiB,KC9B7B,SAAYC,GACVA,EAAAA,oBAAAA,mBACAA,EAAAA,iBAAAA,gBACAA,EAAAA,iBAAAA,gBACAA,EAAAA,eAAAA,cACAA,EAAAA,2BAAAA,0BACAA,EAAAA,oBAAAA,mBACAA,EAAAA,qBAAAA,mBAPF,EAAYA,IAAAA,EAAa,KAUzB,SAAYC,GACVA,EAAAA,UAAAA,SACAA,EAAAA,WAAAA,UACAA,EAAAA,sBAAAA,qBACAA,EAAAA,yBAAAA,uBAJF,EAAYA,IAAAA,EAAa,KAOzB,SAAYC,GACVA,EAAAA,gBAAAA,eACAA,EAAAA,cAAAA,aACAA,EAAAA,eAAAA,cACAA,EAAAA,0BAAAA,yBACAA,EAAAA,6BAAAA,2BALF,EAAYA,IAAAA,EAAe,KCjB3B,SAAYC,GACVA,EAAAA,0BAAAA,yBACAA,EAAAA,yBAAAA,wBACAA,EAAAA,6BAAAA,4BACAA,EAAAA,+BAAAA,6BAJF,EAAYA,IAAAA,EAAW,KAOvB,SAAYC,GACVA,EAAAA,cAAAA,aACAA,EAAAA,eAAAA,cACAA,EAAAA,aAAAA,YACAA,EAAAA,kBAAAA,iBACAA,EAAAA,YAAAA,WACAA,EAAAA,UAAAA,QANF,EAAYA,IAAAA,EAAW,KASvB,SAAYC,GACVA,EAAAA,wBAAAA,uBACAA,EAAAA,sBAAAA,qBACAA,EAAAA,6BAAAA,4BACAA,EAAAA,8BAAAA,6BACAA,EAAAA,4BAAAA,2BACAA,EAAAA,eAAAA,aANF,EAAYA,IAAAA,EAAa,KChBzB,SAAYC,GACVA,EAAAA,cAAAA,aACAA,EAAAA,iBAAAA,eAFF,EAAYA,IAAAA,EAAa,KAKzB,SAAYC,GACVA,EAAAA,UAAAA,QADF,EAAYA,IAAAA,EAAa,KAIzB,SAAYC,GACVA,EAAAA,cAAAA,YADF,EAAYA,IAAAA,EAAc,KCT1B,SAAYC,GACVA,EAAAA,kBAAAA,gBADF,EAAYA,IAAAA,EAAiB,KAI7B,SAAYC,GACVA,EAAAA,cAAAA,YADF,EAAYA,IAAAA,EAAiB,KAI7B,SAAYC,GACVA,EAAAA,oBAAAA,mBACAA,EAAAA,qBAAAA,mBAFF,EAAYA,IAAAA,EAAmB,KCR/B,SAAYC,GACVA,EAAAA,cAAAA,aACAA,EAAAA,eAAAA,cACAA,EAAAA,YAAAA,WACAA,EAAAA,aAAAA,YACAA,EAAAA,eAAAA,cACAA,EAAAA,uBAAAA,qBANF,EAAYA,IAAAA,EAAY,KASxB,SAAYC,GACVA,EAAAA,QAAAA,OACAA,EAAAA,SAAAA,QACAA,EAAAA,oBAAAA,mBACAA,EAAAA,iBAAAA,gBACAA,EAAAA,oBAAAA,kBALF,EAAYA,IAAAA,EAAY,KAQxB,SAAYC,GACVA,EAAAA,eAAAA,cACAA,EAAAA,wBAAAA,uBACAA,EAAAA,gBAAAA,eACAA,EAAAA,wBAAAA,uBACAA,EAAAA,2BAAAA,0BACAA,EAAAA,qBAAAA,mBANF,EAAYA,IAAAA,EAAc,K,YCmBnB,MAAM5oB,EAAa,CACxB6oB,QAASZ,EACTa,QAASZ,EACTa,UAAWZ,GAGA1Z,EAAe,CAC1Boa,QAAST,EACTU,QAAST,EACTU,UAAWT,GAGAU,EAAc,CACzBH,QAASN,EACTO,QAASN,EACTO,UAAWN,GAGA9wB,EAAkB,CAC7BkxB,QAASlB,EACTmB,QAASlB,EACTmB,UAAWlB,GAEA9P,EAAe,CAC1B8Q,QAASf,EACTgB,QAASf,EACTgB,UAAWf,GAGAnY,EAAc,CACzBgZ,QAASH,EACTI,QAASH,EACTI,UAAWH,GAGA5L,EAAiB,CAC5B6L,QAASI,EAAAA,GACTH,QAASI,EAAAA,GACTH,UAAWI,EAAAA,G,sJCrEb,MAAMruB,EAAMlE,IAAAA,OAAa,CACvBC,SAASC,EAAAA,EAAAA,OAGXgE,EAAI/D,aAAaC,QAAQC,KACtBC,IACC,MAAMC,EAAa,IAAIC,gBACvBF,EAAOG,OAASF,EAAWE,OAC3B,MAAMC,GAAaC,EAAAA,EAAAA,GAAuBL,GAE1C,OADAM,EAAAA,EAAAA,IAAoBF,EAAYH,GACzBD,CAAP,IAEDa,GAAUC,QAAQC,OAAOF,KAG5B+C,EAAI/D,aAAamB,SAASjB,KACvBiB,KACCX,EAAAA,EAAAA,GAAuBW,EAAShB,QACzBgB,KAERH,IACuB,aAAlBA,EAAMI,UACRZ,EAAAA,EAAAA,GAAuBQ,EAAMG,SAAShB,QAEjCc,QAAQC,OAAOF,MAI1B,Q,oBCrBO,MAAMqxB,EAAoB,CAC/BC,EAGAtW,KAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,UACU,SAASoc,EAAQ3R,YACxBomB,MAAM8B,IACc,MAAfA,EAAIpS,OACFnE,EAAQ6T,UACVnb,EAAAA,EAAAA,KAAY,gBAEZ4d,EACG7oB,SAAS7I,EAAAA,GAAAA,QAAAA,QACT6vB,MAAK,IAAM/b,EAAAA,EAAAA,KAAY,QAG5B8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAfzC,EAkBWyxB,EAA+D,CAC1E,CAAC3Z,EAAAA,GAAAA,QAAAA,YACCwZ,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,YAAmC,CAAC,EACpD,EACD,CAACA,EAAAA,GAAAA,QAAAA,aACCwZ,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,aAAoC,IACnDwZ,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,wBAA+C,CAAC,EAChE,EACD,CAACA,EAAAA,GAAAA,QAAAA,UACCwZ,EACAjoB,GAEAioB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,sBAA4C,GAC3DlZ,EAAAA,EAAAA,IACO,SAASyK,KACbomB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQxgB,OACNgH,EAAAA,GAAAA,UAAAA,YACAyZ,EAAI7wB,KAAKA,KAAKsV,MAAM,KAGtBwb,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,sBAA4C,IAEhE,EACD,CAACA,EAAAA,GAAAA,QAAAA,WACCwZ,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,sBAA4C,GAC3DlZ,EAAAA,EAAAA,IACO,QAAS,CAAE6B,OAAQua,IACvByU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNgH,EAAAA,GAAAA,UAAAA,aACAyZ,EAAI7wB,KAAKA,KAAKsV,OAEhBsb,EAAQxgB,OACNgH,EAAAA,GAAAA,UAAAA,wBACAyZ,EAAI7wB,KAAKqX,cAGXyZ,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,sBAA4C,IAEhE,EACD,CAACA,EAAAA,GAAAA,QAAAA,aACCwZ,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,mBAAyC,GACxD,MAAMpX,EAAyC,CAAC,OAC1B6R,IAAlByI,EAAQnY,QACVnC,EAAKmC,MAAQmY,EAAQnY,OAEnBmY,EAAQ2W,gBACVjxB,EAAKkxB,eAAiB5W,EAAQ2W,eAE5B3W,EAAQ6W,WACVnxB,EAAKmxB,SAAW7W,EAAQ6W,eAEAtf,IAAtByI,EAAQ8W,YACVpxB,EAAKoxB,UAAY9W,EAAQ8W,WAE3BlzB,EAAAA,EAAAA,MACS,SAASoc,EAAQ3R,WAAY3I,GACnC+uB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNgH,EAAAA,GAAAA,UAAAA,qBACAyZ,EAAI7wB,KAAKA,KAAKsV,MAAM,KAElBgF,EAAQ2W,eAAiB3W,EAAQ8W,YACnCR,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,mBAAyC,IAEtDkD,EAAQ6W,UAAY7W,EAAQ8W,YAC9BR,EAAQxgB,OACNgH,EAAAA,GAAAA,UAAAA,YACAyZ,EAAI7wB,KAAKA,KAAKsV,MAAM,MAIxBwb,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,sBAA4C,IAEhE,EACD,CAACA,EAAAA,GAAAA,QAAAA,qBACCwZ,EACAtW,GAEAqW,EAAkBC,EAAS,CACzBjoB,SAAU2R,EAAQ3R,SAClBwlB,WAAW,GAEd,GCzHGkD,EACJT,IAEAU,aAAaC,WAAW,aACxBX,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOmgB,EAAAA,GAAAA,UAAAA,kBACfK,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,uBACf0xB,EAAQxgB,OAAOgH,EAAAA,GAAAA,UAAAA,aAAoC,IACnDwZ,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,gBACfqM,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,eACfvR,EAAAA,EAAAA,KAAY,SAAZ,EAGW+d,EACQ,CACnB,CAAC7xB,EAAAA,GAAAA,QAAAA,iBACC0xB,GAGEjnB,OAAO2nB,aAAatyB,YACnB4xB,EAAQxpB,QAAQlI,EAAAA,GAAAA,QAAAA,oBAEjB0xB,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,kBACAyK,OAAO2nB,aAAatyB,WAEtB4xB,EAAQ7oB,SAAS7I,EAAAA,GAAAA,QAAAA,oBAIhByK,OAAO2nB,aAAatyB,WACrB4xB,EAAQxpB,QAAQlI,EAAAA,GAAAA,QAAAA,mBAEhBmyB,EAAmBT,EAEtB,EACD,CAAC1xB,EAAAA,GAAAA,QAAAA,iBACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACflF,EAAAA,KACQ,uBAAwB,CAAEmvB,MAAOlX,EAAQkX,QAC9CzC,MAAM8B,IACL,GAAwB,YAApBA,EAAI7wB,KAAKye,OAAsB,CACjC,MAAM+S,EAAQX,EAAI7wB,KAAKyxB,WACvB9nB,OAAO2nB,aAAaI,QAAQ,YAAaF,GACzCZ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,kBAA6CsyB,GAC5DZ,EACG7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACT6vB,MAAK,IAAM/b,EAAAA,EAAAA,KAAY,MAC3B,MACC8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,GAEL,EACD,CAACJ,EAAAA,GAAAA,QAAAA,eACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,mBAA6C,GAC5DmD,EAAAA,KACQ,qBAAsB,CAAEmvB,MAAOlX,EAAQkX,QAC5CzC,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,mBAA6C,GACxDob,EAAQqX,aACVf,EACG7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACT6vB,MAAK,IACG/b,EAAAA,EAAAA,KAAY,2BAGzBA,EAAAA,EAAAA,KAAY,2BAEZ8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,GAEL,EACD,CAACJ,EAAAA,GAAAA,QAAAA,kBACC0xB,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO,gBACJ6wB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,yBACA2xB,EAAI7wB,KAAKA,MAEP6wB,EAAI7wB,KAAKA,KAAKsH,UAChBspB,EAAQ7oB,SACNR,EAAAA,GAAAA,QAAAA,4BACAspB,EAAI7wB,KAAKA,KAAKsH,UAGlBspB,EAAQ7oB,SAASiO,EAAAA,GAAAA,QAAAA,eAEjB8a,EAAAA,EAAAA,GAAYF,EAAS,MACrBS,EAAmBT,GACpB,IAEF3B,OAAO3vB,IACgB,aAAlBA,EAAMI,WACRoxB,EAAAA,EAAAA,GAAYF,EAAStxB,GACrB+xB,EAAmBT,GACpB,GAEN,EACD,CAAC1xB,EAAAA,GAAAA,QAAAA,mBACC0xB,EACA5wB,GAEA4wB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,gCACA,GAEFmD,EAAAA,KACQ,SAASrC,EAAK4xB,aAAc5xB,EAAK2U,UACtCoa,MAAM8B,IACL,GAAwB,YAApBA,EAAI7wB,KAAKye,OACX,GAAwB,UAApBze,EAAK4xB,WAAwB,CAC/B,MAAMJ,EAAQX,EAAI7wB,KAAKyxB,WACvB9nB,OAAO2nB,aAAaI,QAAQ,YAAaF,GACzCZ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,kBAA6CsyB,GAC5DZ,EACG7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACT6vB,MAAK,IACJ/b,EAAAA,EAAAA,KAC8B,kBAArBhT,EAAK6xB,YAA2B7xB,EAAK6xB,YAAc,MAGjE,MACC7e,EAAAA,EAAAA,KACQ,UACL+b,MAAK,IACJ6B,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,gCACA,UAKR4xB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACJ,EAAAA,GAAAA,QAAAA,QACC0xB,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,KACQ,eACL6wB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACX4S,EAAmBT,IAEnBE,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACJ,EAAAA,GAAAA,QAAAA,qBACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,GAC9DhB,EAAAA,EAAAA,KACQ,oBAAqBoc,GAC1ByU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,yBACA2xB,EAAI7wB,KAAKA,MAEXgT,EAAAA,EAAAA,KAAY,cAEZ8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,IAEnE,EACD,CAACA,EAAAA,GAAAA,QAAAA,qBACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,GAC9D0xB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,mBAA6C,GAC5DhB,EAAAA,EAAAA,MACS,4BAA6Boc,GACnCyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,yBACA2xB,EAAI7wB,KAAKA,MAEX4wB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,mBAA6C,KAE5D4xB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,IAEnE,EACD,CAACA,EAAAA,GAAAA,QAAAA,yBACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,GAC9DhB,EAAAA,EAAAA,KACQ,gCAAiCoc,GACtCyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNlR,EAAAA,GAAAA,UAAAA,yBACA2xB,EAAI7wB,KAAKA,MAEX4wB,EACG7oB,SACCR,EAAAA,GAAAA,QAAAA,4BACAspB,EAAI7wB,KAAKA,KAAKsH,UAEfynB,MAAK,IAAM/b,EAAAA,EAAAA,KAAY,4BAE1B8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,IAEnE,EACD,CAACA,EAAAA,GAAAA,QAAAA,8BACC0xB,EACAhO,GAEAgO,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,GAC9DhB,EAAAA,EAAAA,UACU,6BAA6B0kB,KACpCmM,MAAM8B,IACc,MAAfA,EAAIpS,OACNmS,EAAQ7oB,SAASiO,EAAAA,GAAAA,QAAAA,aAEjB8a,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,GACrBsxB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,EAA9D,GAEL,EACD,CAACA,EAAAA,GAAAA,QAAAA,+BACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,GAC9DhB,EAAAA,EAAAA,KACQ,2BAA4Boc,GACjCyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQ7oB,SAASiO,EAAAA,GAAAA,QAAAA,aAEjB8a,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,GACrBsxB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,EAA9D,GAEL,EACD,CAACA,EAAAA,GAAAA,QAAAA,qBACC0xB,EACAtW,GAIA,GAFAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,IACzDob,EAAQ+B,QACX,MAAM,IAAI+N,MAAM,gBAElB,MAAM0H,EAAO,IAAIC,SACjBD,EAAKE,OAAO,OAAQ1X,EAAQ+B,SAC5Bne,EAAAA,EAAAA,KACQ,eAAgB4zB,EAAM,CAC1B1yB,QAAS,CACP,eAAgB,yBAGnB2vB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EACG7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACT6vB,MAAK,IAAM/b,EAAAA,EAAAA,KAAY,eAE1B8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,IAEnE,EACD,CAACA,EAAAA,GAAAA,QAAAA,gBACC0xB,EACAtW,GAEAqW,EAAkBC,EAAStW,EAC5B,EACD,CAACpb,EAAAA,GAAAA,QAAAA,gBACC0xB,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,GAC9DhB,EAAAA,EAAAA,UACU,gBACP6wB,MAAM8B,IACc,MAAfA,EAAIpS,OACNmS,EACG7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACT6vB,MAAK,IAAM/b,EAAAA,EAAAA,KAAY,eAE1B8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,IAEnE,EACD,CAACA,EAAAA,GAAAA,QAAAA,6BACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACflF,EAAAA,KACQ,8BAA+BiY,GACpCyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXzL,EAAAA,EAAAA,KAAY,yBAEZ8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACJ,EAAAA,GAAAA,QAAAA,mCACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACflF,EAAAA,KACQ,mCAAoCiY,GACzCyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXzL,EAAAA,EAAAA,KAAY,qCAEZ8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACJ,EAAAA,GAAAA,QAAAA,qBACC0xB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACflF,EAAAA,KACQ,uBAAwBiY,GAC7ByU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXzL,EAAAA,EAAAA,KAAY,qCAEZ8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,GCnaU8H,EACQ,CACnB,CAAClI,EAAAA,GAAAA,QAAAA,YAAsCihB,GAC9BA,EAAMnhB,UAEf,CAACE,EAAAA,GAAAA,QAAAA,mBAA6CihB,GACrCA,EAAM8R,gBAEf,CAAC/yB,EAAAA,GAAAA,QAAAA,kBAA4CihB,GAChB,OAApBA,EAAMnhB,UAEf,CAACE,EAAAA,GAAAA,QAAAA,UAAoCihB,GAC5BA,EAAM8R,iBAAmB9R,EAAM8R,gBAAgB9vB,MAExD,CAACjD,EAAAA,GAAAA,QAAAA,yBACCihB,GAEOA,EAAM+R,sBAEf,CAAChzB,EAAAA,GAAAA,QAAAA,YAAsCihB,GAC9BA,EAAMtG,UAEf,CAAC3a,EAAAA,GAAAA,QAAAA,cAAwCihB,GAChCA,EAAM1G,SCvBJ0Y,EAA+D,CAC1E,CAACjzB,EAAAA,GAAAA,UAAAA,uBAAiDihB,GAChDA,EAAMnhB,UAAY,KAClBmhB,EAAM8R,gBAAoC,CAAC,CAC5C,EACD,CAAC/yB,EAAAA,GAAAA,UAAAA,mBACCihB,EACAnhB,GAEAmhB,EAAMnhB,UAAYA,CACnB,EACD,CAACE,EAAAA,GAAAA,UAAAA,0BACCihB,EACA8R,GAEA9R,EAAM8R,gBAAkBA,CACzB,EACD,CAAC/yB,EAAAA,GAAAA,UAAAA,gCACCihB,EACA+R,GAEA/R,EAAM+R,sBAAwBA,CAC/B,EACD,CAAChzB,EAAAA,GAAAA,UAAAA,mBACCihB,EACAtG,GAEAsG,EAAMtG,UAAYA,CACnB,EACD,CAAC3a,EAAAA,GAAAA,UAAAA,qBACCihB,EACA1G,GAEA0G,EAAM1G,QAAUA,CACjB,GCxCU2Y,EAAgC,CAC3CpzB,UAAW,KACXizB,gBAAmC,CAAC,EACpCpY,WAAW,EACXqY,uBAAuB,EACvBzY,SAAS,GCCLvS,EAA+C,CACnDiZ,MAAOiS,EACPrB,QAFmD,EAGnD3pB,QAHmD,EAInD+qB,UAASA,GAGX,QCFA,MAAME,EAAa,CACjBzB,EACA9wB,KAEA8wB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO4B,GACJivB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQxgB,OAAOkP,EAAAA,GAAAA,UAAAA,WAAmCuR,EAAI7wB,KAAKA,KAAK8f,SAEhEgR,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IATzC,EAYWyxB,EAAiE,CAC5E,CAACzR,EAAAA,GAAAA,QAAAA,kBACCsR,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACf,MAAMuqB,EAAO,IAAIC,SACjBD,EAAKQ,IAAI,YAAahY,EAAQ0F,WAC9B8R,EAAKQ,IAAI,gBAAiBhY,EAAQ4F,eAClC4R,EAAKQ,IAAI,QAAShY,EAAQ+E,OAC1ByS,EAAKQ,IAAI,UAAW,QAChBhY,EAAQ6F,OACV2R,EAAKQ,IAAI,QAAShY,EAAQ6F,OAExB7F,EAAQ8F,gBACV0R,EAAKQ,IAAI,iBAAkBhY,EAAQ8F,gBAEjC9F,EAAQ+F,uBACVyR,EAAKQ,IAAI,wBAAyBhY,EAAQ+F,uBAG5CniB,EAAAA,EAAAA,KACQ,kBAAmB4zB,EAAM,CAC7B1yB,QAAS,CACP,eAAgB,yBAGnB2vB,MAAM8B,IACa,KAAdA,EAAIpS,QAAiBoS,EAAI7wB,KAAKuyB,aAChC5oB,OAAO6R,SAASpW,KAAOyrB,EAAI7wB,KAAKuyB,cAEhCzB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACggB,EAAAA,GAAAA,QAAAA,eACCsR,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,KACQ,aAAcoc,GACnByU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNkP,EAAAA,GAAAA,UAAAA,WACAuR,EAAI7wB,KAAKA,KAAK8f,QAEhB9M,EAAAA,EAAAA,KAAY,iBAAiB6d,EAAI7wB,KAAKA,KAAK8f,OAAOxb,gBAElDwsB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACggB,EAAAA,GAAAA,QAAAA,eACCsR,EACAtsB,GAEAssB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,UACU,cAAcoG,KACrByqB,MAAM8B,IACc,MAAfA,EAAIpS,OACNmS,EACG7oB,SAASuX,EAAAA,GAAAA,QAAAA,aACTyP,MAAK,IAAM/b,EAAAA,EAAAA,KAAY,oBAE1B8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACggB,EAAAA,GAAAA,QAAAA,yBACCsR,EACA5Q,GAEAqS,EAAWzB,EAAS,cAAc5Q,IACnC,EACD,CAACV,EAAAA,GAAAA,QAAAA,kBACCsR,EACAtsB,GAEA+tB,EAAWzB,EAAS,cAActsB,UACnC,EACD,CAACgb,EAAAA,GAAAA,QAAAA,aACCsR,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO,aAAc,CACjB6B,OAAQua,IAETyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNkP,EAAAA,GAAAA,UAAAA,YACAuR,EAAI7wB,KAAKA,KAAKyhB,SAEhBmP,EAAQxgB,OACNkP,EAAAA,GAAAA,UAAAA,uBACAuR,EAAI7wB,KAAKqX,cAGXyZ,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACggB,EAAAA,GAAAA,QAAAA,mBACCsR,EACAtsB,GAEAssB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOkP,EAAAA,GAAAA,UAAAA,2BAAkD,GACjEphB,EAAAA,EAAAA,KACQ,cAAcoG,YACnByqB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQxgB,OAAOkP,EAAAA,GAAAA,UAAAA,2BAAkD,IAEjEwR,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,GCxJU8H,EAAiE,CAC5E,CAACkY,EAAAA,GAAAA,QAAAA,QAA+Ba,GAAwBA,EAAML,OAC9D,CAACR,EAAAA,GAAAA,QAAAA,SAAgCa,GAAwBA,EAAMsB,QAC/D,CAACnC,EAAAA,GAAAA,QAAAA,oBAA2Ca,GAC1CA,EAAM9I,WACR,CAACiI,EAAAA,GAAAA,QAAAA,uBAA8Ca,GAC7CA,EAAMI,sBCLG4R,EAA2D,CACtE,CAAC7S,EAAAA,GAAAA,UAAAA,YACCa,EACAL,GAEAK,EAAML,OAASA,CAChB,EACD,CAACR,EAAAA,GAAAA,UAAAA,cAAqCa,GACpCA,EAAML,OAAwB,CAAC,CAChC,EACD,CAACR,EAAAA,GAAAA,UAAAA,aACCa,EACAsB,GAEAtB,EAAMsB,QAAUA,CACjB,EACD,CAACnC,EAAAA,GAAAA,UAAAA,wBACCa,EACA9I,GAEA8I,EAAM9I,WAAaA,CACpB,EACD,CAACiI,EAAAA,GAAAA,UAAAA,2BACCa,EACAI,GAEAJ,EAAMI,qBAAuBA,CAC9B,GC9BUiS,EAA4B,CACvC1S,OAAuB,CAAC,EACxB2B,QAAS,GACTpK,WAAyB,CAAC,EAC1BkJ,sBAAsB,GCClBzd,EAA2C,CAC/Cqd,MAAOqS,EACPzB,QAF+C,EAG/C3pB,QAH+C,EAI/C+qB,UAASA,GAGX,Q,UCNA,MAAM,OAAEjxB,GAAWE,EAAAA,EAAAA,OAEN2vB,EAA6D,CACxE,CAACxpB,EAAAA,GAAAA,QAAAA,wBACCqpB,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,4BAAiD,GAChErJ,EAAAA,EAAAA,IACO,UACJ6wB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQxgB,OACN7I,EAAAA,GAAAA,UAAAA,0BACAspB,EAAI7wB,KAAKA,OAGX8wB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,KACtC0xB,SAAQ,IACPJ,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,4BAAiD,IAErE,EACD,CAACA,EAAAA,GAAAA,QAAAA,uBACCqpB,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO,aACJ6wB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQxgB,OACN7I,EAAAA,GAAAA,UAAAA,yBACAspB,EAAI7wB,KAAKA,OAGX8wB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACiI,EAAAA,GAAAA,QAAAA,2BACCqpB,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,MACS,SAAUoc,GAChByU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACN7I,EAAAA,GAAAA,UAAAA,0BACAspB,EAAI7wB,KAAKA,MAEXgT,EAAAA,EAAAA,KAAY,wBAEZ8d,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAACiI,EAAAA,GAAAA,QAAAA,6BACCqpB,EACAtpB,GAEA0C,SAASC,cAAc,SAASwoB,aAAa,OAAQnrB,GACrDspB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,YAAkCD,GACjDpG,EAAOyG,MAAQL,CAChB,GC3EUF,EAA6D,CACxE,CAACG,EAAAA,GAAAA,QAAAA,YAAiC4Y,GACzBA,EAAMuS,YAAYj0B,OAE3B,CAAC8I,EAAAA,GAAAA,QAAAA,aAAkC4Y,GAC1BA,EAAMhX,WAEf,CAAC5B,EAAAA,GAAAA,QAAAA,WAAgC4Y,GACxBA,EAAMuS,YAAYxvB,WAE3B,CAACqE,EAAAA,GAAAA,QAAAA,gBAAqC4Y,GAC7BA,EAAMjQ,cAEf,CAAC3I,EAAAA,GAAAA,QAAAA,UAA+B4Y,GACvBA,EAAM7Y,SAEf,CAACC,EAAAA,GAAAA,QAAAA,QAA6B4Y,GACrBA,EAAMjf,Q,cCfV,MAAMixB,EAAuD,CAClE,CAAC5qB,EAAAA,GAAAA,UAAAA,sBAA2C4Y,GAC1CA,EAAMjQ,cAAgB,IACvB,EACD,CAAC3I,EAAAA,GAAAA,UAAAA,oBACC4Y,EACAjQ,GAEAiQ,EAAMjQ,cAAgBA,CACvB,EACD,CAAC3I,EAAAA,GAAAA,UAAAA,2BACC4Y,EACA1hB,GAEA0hB,EAAMuS,YAAYj0B,OAASA,CAC5B,EACD,CAAC8I,EAAAA,GAAAA,UAAAA,4BACC4Y,EACA1G,GAEA0G,EAAMhX,WAAasQ,CACpB,EACD,CAAClS,EAAAA,GAAAA,UAAAA,0BACC4Y,EACAjd,GAEAid,EAAMuS,YAAYxvB,WAAaA,CAChC,EACD,CAACqE,EAAAA,GAAAA,UAAAA,aAAkC4Y,EAAmB7Y,GACpD6Y,EAAM7Y,SAAWA,EACjB6Y,EAAMjf,OAASwJ,EAAAA,GAAmBpD,EACnC,G,cCjCI,MAAM6Y,EAAoB,CAC/BwS,MAAM,EACNrrB,SAAU,KACVpG,OAAQ0xB,EAAAA,EACR1iB,cAAe,KACfwiB,YAA2B,CACzBxvB,WAAY,CACVF,OAAQ,EACRoS,iBAAkB,EAClBE,MAAO,EACPhS,SAAU,IAGd6F,YAAY,GCTD4nB,EAAiE,CAC5E,CAAC/a,EAAAA,GAAAA,QAAAA,YACC4a,GAEAA,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO,UACJ6wB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACN4F,EAAAA,GAAAA,UAAAA,WACA6a,EAAI7wB,KAAKA,KAAKgD,QAEhB4tB,EAAQxgB,OAAOlR,EAAAA,GAAAA,UAAAA,qBAA+C,KAE9D4xB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,EACD,CAAC0W,EAAAA,GAAAA,QAAAA,eACC4a,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,MACS,UAAUoc,EAAQhW,KAAM,CAAEgS,UAAWgE,EAAQpE,WACnD6Y,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQ7oB,SAASiO,EAAAA,GAAAA,QAAAA,aAEjB8a,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,GCtCU8H,EAAiE,CAC5E,CAAC4O,EAAAA,GAAAA,QAAAA,QAA+BmK,GAAwBA,EAAMnd,QCDnDmvB,EAA2D,CACtE,CAACnc,EAAAA,GAAAA,UAAAA,YAAmCmK,EAAqBnd,GACvDmd,EAAMnd,OAASA,CAChB,GCPU6vB,EAA4B,CACvC7vB,OAAQ,ICMJA,EAA2C,CAC/Cmd,MAAO0S,EACP9B,QAF+C,EAG/C3pB,QAH+C,EAI/C+qB,UAASA,GAGX,QCJO,MAAMpB,EACU,CACrB,CAACR,EAAAA,GAAAA,QAAAA,gBACCK,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO,SAASoc,EAAQ3R,YAAY2R,EAAQwY,aAAc,CACtD/yB,OAAQua,EAAQva,SAEjBgvB,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,OACXmS,EAAQxgB,OACNmgB,EAAAA,GAAAA,UAAAA,kBACAM,EAAI7wB,KAAKA,KAAKkD,aAGhB4tB,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAC1C,GCzBU8H,EACU,CACrB,CAACmpB,EAAAA,GAAAA,QAAAA,YAAkCpQ,GAC1BA,EAAMjd,YCHJivB,EACX,CACE,CAAC5B,EAAAA,GAAAA,UAAAA,mBACCpQ,EACAjd,GAEAid,EAAMjd,WAAaA,CACpB,EACD,CAACqtB,EAAAA,GAAAA,UAAAA,kBAAwCpQ,GACvCA,EAAMjd,WAAa,CAAC,CACrB,GChBQ6vB,EAAoC,CAC/C7vB,WAAgC,CAAC,GCK7BA,EAAmD,CACvDid,MAAO4S,EACPhC,QAFuD,EAGvD3pB,QAHuD,EAIvD+qB,UAASA,GAGX,QCVO,MAAM/qB,EAA+D,CAC1E,CAACgQ,EAAAA,GAAAA,QAAAA,MAA4B+I,GACpBA,EAAM/c,KAEf,CAACgU,EAAAA,GAAAA,QAAAA,OAA6B+I,GACrBA,EAAM7K,MAEf,CAAC8B,EAAAA,GAAAA,QAAAA,kBAAwC+I,GAChCA,EAAMtG,UAEf,CAACzC,EAAAA,GAAAA,QAAAA,eAAqC+I,GAC7BA,EAAM1G,QAEf,CAACrC,EAAAA,GAAAA,QAAAA,kBAAwC+I,GAChCA,EAAM9I,YCbJ8a,EAAyD,CACpE,CAAC/a,EAAAA,GAAAA,UAAAA,aAAmC+I,EAAoB/c,GACtD+c,EAAM/c,KAAOA,CACd,EACD,CAACgU,EAAAA,GAAAA,UAAAA,sBACC+I,EACA6S,GAEA7S,EAAM7K,MAAQ6K,EAAM7K,MAAMhI,KAAKlK,GACzBA,EAAKuF,WAAaqqB,EAAYrqB,SACzBqqB,EAEF5vB,GAEV,EACD,CAACgU,EAAAA,GAAAA,UAAAA,cACC+I,EACA7K,GAEA6K,EAAM7K,MAAQA,CACf,EACD,CAAC8B,EAAAA,GAAAA,UAAAA,sBACC+I,EACA1G,GAEA0G,EAAM1G,QAAUA,CACjB,EACD,CAACrC,EAAAA,GAAAA,UAAAA,yBACC+I,EACA9I,GAEA8I,EAAM9I,WAAaA,CACpB,EACD,CAACD,EAAAA,GAAAA,UAAAA,mBACC+I,EACAtG,GAEAsG,EAAMtG,UAAYA,CACnB,GCzCUoZ,EAA0B,CACrC7vB,KAAoB,CAAC,EACrBkS,MAAO,GACPmE,SAAS,EACTI,WAAW,EACXxC,WAAyB,CAAC,GCAtB/B,EAAyC,CAC7C6K,MAAO8S,EACPlC,QAF6C,EAG7C3pB,QAH6C,EAI7C+qB,UAASA,GAGX,Q,SCGA,MAAMe,GAAc,CAClBtC,EACAtW,EACAjV,KAEAurB,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfrJ,EAAAA,EAAAA,IACO,WAAY,CACf6B,OAAQua,IAETyU,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAyBlf,GAASwrB,EAAI7wB,KAAKA,KAAKsD,UAC3D+B,IAAWqrB,GAAAA,GAAAA,mBACbE,EAAQxgB,OACNmU,EAAAA,GAAAA,UAAAA,wBACAsM,EAAI7wB,KAAKqX,cAIbyZ,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IAAUwxB,EAAAA,EAAAA,GAAYF,EAAStxB,IAjBzC,EAoBWyxB,GACQ,CACnB,CAACxM,EAAAA,GAAAA,QAAAA,uBACCqM,EACAtW,GAEAsW,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,yBACf2O,GAAYtC,EAAStW,EAASoW,GAAAA,GAAAA,sBAC/B,EACD,CAACnM,EAAAA,GAAAA,QAAAA,mBACCqM,EACAtW,GAEA4Y,GAAYtC,EAAStW,EAASoW,GAAAA,GAAAA,kBAC/B,EACD,CAACnM,EAAAA,GAAAA,QAAAA,uBACCqM,EACAtW,GAEA4Y,GAAYtC,EAAStW,EAASoW,GAAAA,GAAAA,sBAC/B,EACD,CAACnM,EAAAA,GAAAA,QAAAA,4BACCqM,EACAtW,GAEA4Y,GAAYtC,EAAStW,EAASoW,GAAAA,GAAAA,sBAC/B,EACD,CAACnM,EAAAA,GAAAA,QAAAA,kBACCqM,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,GAC7D,MAAM4O,EAAa7Y,EAAQ8Y,UAAY,YAAY9Y,EAAQ8Y,YAAc,GACzEl1B,EAAAA,EAAAA,IACO,YAAYoc,EAAQmJ,aACxBsL,MAAM8B,IACL,MAAMtN,EAAoBsN,EAAI7wB,KAAKA,KAAKsD,SAAS,GACjD,GAAwB,YAApButB,EAAI7wB,KAAKye,OAAsB,CACjC,GACEnE,EAAQ8Y,YACqB,IAA5B7P,EAAQ8P,SAASpyB,SACfsiB,EAAQ8P,UAAU/Y,EAAQ8Y,UAAY,IAEzC,MAAM,IAAIhJ,MAAM,qBAElBwG,EAAQxgB,OACNmU,EAAAA,GAAAA,UAAAA,YACAsM,EAAI7wB,KAAKA,KAAKsD,SAAS,IAErButB,EAAI7wB,KAAKA,KAAKsD,SAAS,GAAGugB,WAC5B3lB,EAAAA,EAAAA,IACO,YAAYoc,EAAQmJ,uBAAuB0P,KAC/CpE,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNmU,EAAAA,GAAAA,UAAAA,uBACAsM,EAAI7wB,KAAKA,KAAKszB,WAEjB,IAELp1B,EAAAA,EAAAA,IACO,YAAYoc,EAAQmJ,gBAAgB0P,KACxCpE,MAAM8B,IACmB,YAApBA,EAAI7wB,KAAKye,QACXmS,EAAQxgB,OACNmU,EAAAA,GAAAA,UAAAA,gBACAsM,EAAI7wB,KAAKA,KAAKuzB,IAEjB,IAGR,MACC3C,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,gBACfuM,EAAAA,EAAAA,GAAYF,EAAS,KACtB,IAEF3B,OAAO3vB,IACNsxB,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,gBACfuM,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,IAED0xB,SAAQ,IACPJ,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,IAElE,EACD,CAACA,EAAAA,GAAAA,QAAAA,gBACCqM,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,GAC7DrmB,EAAAA,EAAAA,UACU,YAAYoc,EAAQmJ,aAC3BsL,MAAK,KACJ6B,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,eACfqM,EAAQ7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACjB8T,EAAAA,EAAAA,KAAY,IAAZ,IAEDic,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,IAED0xB,SAAQ,IACPJ,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,IAElE,EACD,CAACA,EAAAA,GAAAA,QAAAA,cACCqM,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,GAC7DrmB,EAAAA,EAAAA,MACS,YAAYoc,EAAQmJ,YAAanJ,EAAQta,MAC/C+uB,MAAK,KACJ6B,EAAQ7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACjB0xB,EACG7oB,SAASwc,EAAAA,GAAAA,QAAAA,iBAAyC,CACjDd,UAAWnJ,EAAQmJ,YAEpBsL,MAAK,KACJ/b,EAAAA,EAAAA,KAAY,CACV1H,KAAM,UACNvL,OAAQ,CAAE0jB,UAAWnJ,EAAQmJ,YAF/B,GALJ,IAWDwL,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,IAED0xB,SAAQ,IACPJ,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,IAElE,EACD,CAACA,EAAAA,GAAAA,QAAAA,aACCqM,EACAtW,GAIA,GAFAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,IACxDjK,EAAQkZ,KACX,MAAM,IAAIpJ,MAAM,gBAElB,MAAM0H,EAAO,IAAIC,SACjBD,EAAKE,OAAO,OAAQ1X,EAAQkZ,MAC5B1B,EAAKE,OACH,OACA,gBAAgB1X,EAAQgI,uBAAuBhI,EAAQmZ,WAEzDv1B,EAAAA,EAAAA,KACQ,WAAY4zB,EAAM,CACtB1yB,QAAS,CACP,eAAgB,yBAGnB2vB,MAAM8B,IACL,GAAwB,YAApBA,EAAI7wB,KAAKye,OAAsB,CACjCmS,EAAQ7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACjB,MAAMqkB,EAAoBsN,EAAI7wB,KAAKA,KAAKsD,SAAS,GACjD0P,EAAAA,EAAAA,KACoC,IAAlC6d,EAAI7wB,KAAKA,KAAKsD,SAASrC,OACnB,aAAasiB,EAAQjf,KACrB,IAEP,KAEF2qB,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,IAED0xB,SAAQ,IACPJ,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,IAElE,EACD,CAACA,EAAAA,GAAAA,QAAAA,yBACCqM,EACAtW,GAEAsW,EAAQxgB,OAAO7I,EAAAA,GAAAA,UAAAA,sBACfqpB,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,GAC7DrmB,EAAAA,EAAAA,KACQ,kBAAmBoc,GACxByU,MAAM8B,IACL,GAAwB,YAApBA,EAAI7wB,KAAKye,OAAsB,CACjCmS,EAAQ7oB,SAAS7I,EAAAA,GAAAA,QAAAA,kBACjB,MAAMqkB,EAAoBsN,EAAI7wB,KAAKA,KAAKsD,SAAS,GACjD0P,EAAAA,EAAAA,KAAY,aAAauQ,EAAQjf,KAClC,KAEF2qB,OAAO3vB,KACNwxB,EAAAA,EAAAA,GAAYF,EAAStxB,EAArB,IAED0xB,SAAQ,IACPJ,EAAQxgB,OAAOmU,EAAAA,GAAAA,UAAAA,qBAA8C,IAElE,GCrOUnd,GACQ,CACnB,CAACmd,EAAAA,GAAAA,QAAAA,mBAA4CpE,GACpCA,EAAMuT,kBAEf,CAACnP,EAAAA,GAAAA,QAAAA,mBAA4CpE,GACpCA,EAAMwT,kBAEf,CAACpP,EAAAA,GAAAA,QAAAA,eAAwCpE,GAChCA,EAAMyT,cAEf,CAACrP,EAAAA,GAAAA,QAAAA,cAAuCpE,GAC/BA,EAAM0T,YAEf,CAACtP,EAAAA,GAAAA,QAAAA,qBAA8CpE,GACtCA,EAAM9I,YCdJ8a,GAA+D,CAC1E,CAAC5N,EAAAA,GAAAA,UAAAA,uBACCpE,EACA7c,GAEA6c,EAAMwT,kBAAoBxT,EAAMwT,kBAAkBG,OAAOxwB,EAC1D,EACD,CAACihB,EAAAA,GAAAA,UAAAA,uBACCpE,EACA7c,GAEA6c,EAAMuT,kBAAoBpwB,CAC3B,EACD,CAACihB,EAAAA,GAAAA,UAAAA,uBACCpE,EACA7c,GAEA6c,EAAMwT,kBAAoBrwB,CAC3B,EACD,CAACihB,EAAAA,GAAAA,UAAAA,mBACCpE,EACA7c,GAEA6c,EAAMyT,cAAgBtwB,CACvB,EACD,CAACihB,EAAAA,GAAAA,UAAAA,yBACCpE,EACA9I,GAEA8I,EAAM9I,WAAaA,CACpB,EACD,CAACkN,EAAAA,GAAAA,UAAAA,aACCpE,EACAoD,GAEApD,EAAM0T,YAAYtQ,QAAUA,CAC7B,EACD,CAACgB,EAAAA,GAAAA,UAAAA,wBACCpE,EACA4T,GAEA5T,EAAM0T,YAAYE,UAAYA,CAC/B,EACD,CAACxP,EAAAA,GAAAA,UAAAA,iBACCpE,EACAoT,GAEApT,EAAM0T,YAAYN,IAAMA,CACzB,EACD,CAAChP,EAAAA,GAAAA,UAAAA,qBACCpE,EACA1G,GAEA0G,EAAM0T,YAAYpa,QAAUA,CAC7B,EACD,CAAC8K,EAAAA,GAAAA,UAAAA,yBAAkDpE,GACjDA,EAAMuT,kBAAoB,EAC3B,EACD,CAACnP,EAAAA,GAAAA,UAAAA,gBAAyCpE,GACxCA,EAAMuT,kBAAoB,GAC1BvT,EAAMyT,cAAgB,GACtBzT,EAAMwT,kBAAoB,EAC3B,EACD,CAACpP,EAAAA,GAAAA,UAAAA,eAAwCpE,GACvCA,EAAM0T,YAAc,CAClBN,IAAK,GACL9Z,SAAS,EACT8J,QAAmB,CAAC,EACpBwQ,UAAW,GAEd,GC5EUC,GAAgC,CAC3CN,kBAAmB,GACnBC,kBAAmB,GACnBtc,WAAyB,CAAC,EAC1Buc,cAAe,GACfC,YAAa,CACXN,IAAK,GACL9Z,SAAS,EACT8J,QAAmB,CAAC,EACpBwQ,UAAW,KCJTzwB,GAA+C,CACnD6c,MAAO6T,GACPjD,QAFmD,GAGnD3pB,QAHmD,GAInD+qB,UAASA,IAGX,UCFA,MAAM8B,GAAkC,CACtCC,eADsC,EAEtCC,YAFsC,EAGtCC,aAHsC,EAItCC,YAJsC,EAKtCC,YALsC,EAMtCC,eAAcA,IAGV5B,GAAuC,CAC3CxS,MAD2C,EAE3C4Q,QAF2C,EAG3C3pB,QAH2C,EAI3C+qB,UAJ2C,EAK3C8B,YAGF,UC1BA,MAAMh1B,IAAQu1B,EAAAA,EAAAA,IAAwB7B,IAEtC,S,kCCPO,IAAKnC,EAYAC,EAQAC,E,iFApBZ,SAAYF,GACVA,EAAAA,eAAAA,cACAA,EAAAA,2BAAAA,0BACAA,EAAAA,kBAAAA,iBACAA,EAAAA,gBAAAA,eACAA,EAAAA,yBAAAA,wBACAA,EAAAA,qBAAAA,oBACAA,EAAAA,yBAAAA,wBACAA,EAAAA,8BAAAA,6BACAA,EAAAA,oBAAAA,kBATF,EAAYA,IAAAA,EAAe,KAY3B,SAAYC,GACVA,EAAAA,qBAAAA,oBACAA,EAAAA,qBAAAA,oBACAA,EAAAA,iBAAAA,gBACAA,EAAAA,gBAAAA,eACAA,EAAAA,uBAAAA,qBALF,EAAYA,IAAAA,EAAe,KAQ3B,SAAYC,GACVA,EAAAA,yBAAAA,wBACAA,EAAAA,kBAAAA,iBACAA,EAAAA,2BAAAA,0BACAA,EAAAA,iBAAAA,gBACAA,EAAAA,yBAAAA,wBACAA,EAAAA,yBAAAA,wBACAA,EAAAA,qBAAAA,oBACAA,EAAAA,eAAAA,cACAA,EAAAA,mBAAAA,kBACAA,EAAAA,0BAAAA,yBACAA,EAAAA,uBAAAA,sBACAA,EAAAA,2BAAAA,yBAZF,EAAYA,IAAAA,EAAiB,I,kFChBvB,SAAUzpB,IACd,OAAOwtB,EAAAA,EAAAA,KACR,C,6LCFM,MAAMvc,EAAqB,CAAC,MAAO,QAC7B2J,EAAc,EACd6S,EAAiB,GAEjB9S,EAAsB,CACjCjK,EACAgd,IAEOhd,GAAoC,kBAAfA,IAA4BA,EAAa,GAChEA,EACDgd,EAGOC,EAAsB,CACjCjd,EACAkd,EACAF,IAEOhd,GACiB,kBAAfA,GACPkd,EAAgBtgB,SAASoD,GACvBA,EACAgd,EAGOxd,EAAW,CACtB2d,EACA7d,EACAC,EACArO,KAEA,MAAMksB,EAAelsB,GAAW,CAAC,EAC3BmsB,EAAcD,EAAaC,aAAe,MAC1Cve,EAA4B,CAAC,EAgBnC,OAdAA,EAAMmB,KAAOgK,EAAoBkT,EAAcld,KAAMiK,GACrDpL,EAAM2N,SAAWxC,EAAoBkT,EAAc1Q,SAAUsQ,GAC7Dje,EAAMwe,MAAQL,EAAoBE,EAAcG,MAAO/c,EAAU8c,GACjEve,EAAM0B,SAAWyc,EACfE,EAAc3c,SACdlB,EACAC,GAE6B,kBAApB4d,EAAcpe,EACvBD,EAAMC,EAAIoe,EAAcpe,SAEjBD,EAAMC,EAGRD,CAAP,EAGWye,EAAsB,CACjC,OACA,KACA,iBACA,eACA,iBACA,eACA,gBACA,cACA,gBACA,cACA,YAGIC,EAAW,CAACC,EAAc7W,EAAQ,IAC/BxQ,MAAM8a,KAAK,CAAE5nB,OAAQm0B,EAAO7W,EAAQ,IAAK,CAAC3X,EAAG+gB,IAAMpJ,EAAQoJ,IAGvD0N,EAAkB,CAC7BC,EACAC,KAEA,GAAID,EAAQ,EACV,MAAO,GAGT,GAAIA,EAAQ,EACV,OAAOH,EAASG,GAGlB,IAAIje,EAAkC,CAAC,EAAG,GAiC1C,OAhCIke,EAAc,EAChBle,EAAaA,EAAWyc,OAAO,CAAC,EAAG,EAAG,IAC7ByB,EAAc,EACvBle,EAAaA,EAAWyc,OAAOqB,EAASI,EAAc,EAAG,KAEzDle,EAAaA,EAAWyc,OAAO,CAAC,QAC5ByB,EAAcD,EAAQ,IACxBje,EAAaA,EAAWyc,OAAOqB,EAASI,EAAc,EAAGA,EAAc,MAGvEA,EAAc,GAAKD,EAAQ,GAC7Bje,EAAaA,EAAWyc,OAAO,CAAC,QAChCzc,EAAaA,EAAWyc,OAAOqB,EAASG,EAAOA,EAAQ,KAOrDje,EAJsC,QAAtCA,EAAWA,EAAWpW,OAAS,IAC/BoW,EAAWA,EAAWpW,OAAS,IAAMq0B,EAAQ,GAC7Cje,EAAWA,EAAWpW,OAAS,GAAKq0B,EAEvBje,EAAWyc,OACtBqB,EAASG,GAAQje,EAAWA,EAAWpW,OAAS,GAAK,IAG1CoW,EAAWyc,OACtBqB,EACEG,EACAC,EAAcD,EAAQ,EAAIC,EAAc,EAAIA,EAAc,IAM3Dle,CAAP,C,mRC1GK,MAAMme,EAAe,CAC1B9L,EACAjC,EACAH,KAEA,OAAQoC,GACN,IAAK,OACH,OAAO+L,EAAAA,EAAAA,GAAYhO,EAAK,CAAEiO,aAAcpO,EAAqB,EAAI,IACnE,IAAK,OACH,OAAOqO,EAAAA,EAAAA,GAAYlO,GACrB,IAAK,QACH,OAAOkC,EAAAA,EAAAA,GAAalC,GACtB,QACE,MAAM,IAAI2C,MACR,8DAA8DV,MATpE,EAcWkM,EAAgB,CAAClM,EAAkBjC,KAC9C,OAAQiC,GACN,IAAK,OACH,OAAO9B,EAAAA,EAAAA,GAAQH,EAAK,GACtB,IAAK,OACH,OAAOoO,EAAAA,EAAAA,GAASpO,EAAK,GACvB,IAAK,QACH,OAAOuB,EAAAA,EAAAA,GAAUvB,EAAK,GACxB,QACE,MAAM,IAAI2C,MACR,8DAA8DV,MATpE,EAcWnR,EAAgB,CAACud,EAAmBzY,KACxC0Y,EAAAA,EAAAA,gBAAe,IAAIpa,KAAKma,GAAYzY,GAGhCoL,EAAyB,CACpCe,EACAlC,KAEA,MAAM0O,GAAarM,EAAAA,EAAAA,GAAaH,GAC1ByM,GAAWrM,EAAAA,EAAAA,GAAWJ,GACtBkM,EAAepO,EAAqB,EAAI,EAC9C,MAAO,CACL/I,OAAOkX,EAAAA,EAAAA,GAAYO,EAAY,CAAEN,iBACjC5M,KAAKoN,EAAAA,EAAAA,GAAUD,EAAU,CAAEP,iBAF7B,EAMWrL,EAAoB,CAC/B8L,EACA5N,EAA4B,KAC5B6N,EAA4B,QAEvB7N,IACHA,EAAa,cAEV6N,IACHA,EAAa,SAER,CACL1S,cAAcpL,EAAAA,EAAAA,GAAO6d,EAAU5N,GAC/B8N,cAAc/d,EAAAA,EAAAA,GAAO6d,EAAUC,I,2FC7EnC,MAAME,EAAW,CAAC,QAAS,KAAM,KAAM,KAAM,MAEhCnhB,EAAsB,CACjCohB,EACAC,GAAS,KAET,MAAM7O,EAAIhC,KAAK8Q,MAAM9Q,KAAKhiB,IAAI4yB,GAAY5Q,KAAKhiB,IAAI,OACnD,IAAK4yB,EACH,OAAOC,EAAS,UAAY,CAAEjhB,KAAM,IAAKC,OAAQ,SAEnD,MAAMD,GAAQghB,EAAW5Q,KAAK+Q,IAAI,KAAM/O,IAAI1a,QAAQ,GAC9CuI,EAAS8gB,EAAS3O,GACxB,OAAO6O,EAAS,GAAGjhB,IAAOC,IAAW,CAAED,OAAMC,SAA7C,EAGWhB,EAAmB+hB,IAC9B,MAAM5uB,EAAQ4uB,EAAW,QACzB,OAA4B5uB,EAAMsF,QAAQ,EAA1C,C,yGCLK,MAAM5O,EAAY,IAEnB,QAIOyyB,EAAc,CACzBF,EAQAtxB,EACAq3B,EAAM,aAGN,GAAIr3B,GAA2B,aAAlBA,EAAMI,QACjB,OAIF,GAC8B,MAA5BJ,GAAOG,UAAUgf,QACa,kBAA9Bnf,EAAMG,SAASO,KAAKV,MAIpB,OAFAgyB,aAAaC,WAAW,kBACxBX,EAAQ7oB,SAAS7I,EAAAA,GAAAA,QAAAA,iBAInB,MAAMgR,EAAiB5Q,EAEnBA,EAAMG,SACoB,MAA1BH,EAAMG,SAASgf,OACb,6CACAnf,EAAMG,SAASO,KAAKN,QACpBJ,EAAMG,SAASO,KAAKN,QACpBi3B,EACFr3B,EAAMI,QACNJ,EAAMI,QACNi3B,EATAA,EAUJ/F,EAAQxgB,OACN7I,EAAAA,GAAAA,UAAAA,mBACA2I,EAAcqE,SAAS,MACnBrE,EACGzF,MAAM,MACN2S,QAAQwZ,GAAoB,KAANA,IACtBtpB,KAAKspB,GAAc,aAAaA,MACnC,aAAa1mB,IAPnB,C,gKClDK,MAAMxF,EAA6C,CACxDmsB,GAAIA,EAAAA,EACJC,GAAIlE,EAAAA,EACJmE,GAAIA,EAAAA,GAGO3d,EAAyC,CACpDyd,GAAI,UACJC,GAAI,UACJC,GAAI,aAGA,iBAAEC,GAAqB51B,EAAAA,EAAAA,OAChBwH,EAAqBouB,EAAiB1pB,KAAK2pB,IAC/C,CAAEnpB,MAAOsL,EAAe6d,GAAItvB,MAAOsvB,K,oKCjBrC,MAAMjoB,EAAsC,CACjD,kBAAmB,UACnB,sBAAuB,UACvBM,OAAQ,UACR,kBAAmB,UACnB,6BAA8B,UAC9BG,OAAQ,UACRC,QAAS,UACT,kBAAmB,UACnB,yBAA0B,UAC1BG,UAAW,UACXC,MAAO,UACPC,QAAS,WAGEgX,EAAiB/jB,IAC5B,MAAMsiB,EAAiC,CAAC,EAKxC,OAJAtiB,EAAOsK,KACJ8I,GACEkP,EAAOlP,EAAM9R,IAAM8R,EAAMtH,MAAQsH,EAAMtH,MAAQE,EAAYoH,EAAMtI,SAE/DwX,CAAP,EAGI4R,EAAa,CAAC1M,EAAqBC,KACvC,MAAM0M,EAAwB3M,EAAEnU,gBAAgBsG,cAC1Cya,EAAwB3M,EAAEpU,gBAAgBsG,cAChD,OAAOwa,EAAwBC,EAC3B,EACAD,EAAwBC,GACvB,EACD,CAJJ,EAOWrhB,EAAkB,CAC7B/S,EACA4S,EACAyhB,EAA8B,MAC9BC,EAA4B,KAE5Bt0B,EACGoa,QAAQhH,GACU,QAAjBihB,IAEIC,EAAgB/iB,SAAS6B,EAAM9R,KAAO8R,EAAMihB,MAEjD/pB,KAAK8I,IAAD,IACAA,EACHC,gBAAiBT,EAAE,UAAUQ,EAAMtI,mBAEpCmK,KAAKif,GAEGvQ,EAAgB,CAACpD,EAAmBvgB,IACxCA,EACJoa,QAAQhH,GAAUA,EAAM9R,KAAOif,EAAQjB,WACvChV,KAAK8I,GAAUA,EAAMtI,QAAO,GAGpB8Y,EAAgB,CAC3BrD,EACAvgB,IAEOA,EACJoa,QAAQhH,GAAUA,EAAM9R,KAAOif,EAAQjB,WACvChV,KAAK8I,GAAUA,EAAMtH,QAAO,E,8RCtCjC,MAAMyoB,EAAsD,CAC1DC,KAAM,CACJn1B,IAAK,aACLo1B,MAAO,cAETC,MAAO,CACLr1B,IAAK,UACLo1B,MAAO,WAETE,KAAM,CACJt1B,IAAK,OACLo1B,MAAO,SAIEG,EAAwC,CACnD,gBACA,cACA,iBACA,iBACA,eACA,iBAGWC,EAAc,CACzB93B,EACAunB,KAEA,MAAMI,EAAO,GACb,IACE,IAAID,GAAM+N,EAAAA,EAAAA,IAAaz1B,EAAO2pB,SAAU3pB,EAAOwe,MAAO+I,GACtDG,GAAO1nB,EAAO+oB,IACdrB,GAAMmO,EAAAA,EAAAA,IAAc71B,EAAO2pB,SAAUjC,GAErCC,EAAKpf,KAAKmf,GAEZ,OAAOC,CAAP,EAGIoQ,EAA4B,CAChCjpB,EACAC,EACAipB,GAAc,KAEd,MAAMC,EAAyB,CAC7BlqB,MAAOe,EACPopB,gBAAiB,CAACnpB,GAClB9O,KAAM,IAOR,OALI+3B,IACFC,EAAQvsB,KAAO,OACfusB,EAAQE,YAAc,CAACppB,GACvBkpB,EAAQG,UAAW,GAEdH,CAAP,EAGWI,EAAeC,IAC1B,MAAM9S,EAAgC,CACpC+S,cAAe,GACf5f,YAAa,GACbgT,eAAgB,GAChBJ,eAAgB,GAChBM,aAAc,GACd2M,cAAe,IAajB,OAXAF,EAAgB/qB,KAAK8I,IACnB,MAAMtH,EAAQsH,EAAMtH,MAAQsH,EAAMtH,MAAQE,EAAAA,GAAYoH,EAAMtI,OAC5DyX,EAAS+S,cAAchwB,KACrBwvB,EAA0B1hB,EAAMtI,MAAOgB,GAAO,IAEhDyW,EAAS7M,YAAYpQ,KAAKwvB,EAA0B1hB,EAAMtI,MAAOgB,IACjEyW,EAASmG,eAAepjB,KAAKwvB,EAA0B1hB,EAAMtI,MAAOgB,IACpEyW,EAAS+F,eAAehjB,KAAKwvB,EAA0B1hB,EAAMtI,MAAOgB,IACpEyW,EAASqG,aAAatjB,KAAKwvB,EAA0B1hB,EAAMtI,MAAOgB,IAClEyW,EAASgT,cAAcjwB,KAAKwvB,EAA0B1hB,EAAMtI,MAAOgB,GAAnE,IAEKyW,CAAP,EAGWiT,EAAoB,CAC/BC,EACA9wB,EACA2E,KAEA,OAAQmsB,GACN,IAAK,gBACL,IAAK,iBACL,IAAK,eACL,IAAK,gBACH,OAAOC,EAAAA,EAAAA,IACL,CAAC,gBAAiB,kBAAkBnkB,SAASkkB,GAAc,KAAO,IAClE9wB,EACA2E,GAEJ,QACA,IAAK,cACL,IAAK,iBACH,OAAO3E,EAbX,EAiBWgxB,EAAc,CACzB54B,EACAunB,EACAtkB,EACA41B,EACAC,EACAvsB,KAEA,MAAMwsB,EAAUjB,EAAY93B,EAAQunB,GAC9BiB,EAAagP,EAAYx3B,EAAO2pB,UAChC2O,EAAkBr1B,EAAOoa,QAAQhH,GACrCwiB,EAAkBrkB,SAAS6B,EAAM9R,MAE7By0B,EAAmB,GACnBxT,EAAW6S,EAAYC,GACvBW,EAAmC,CAAC,EAyB1C,OAxBAX,EAAgB/qB,KACb2rB,GAAoBD,EAASC,EAAenrB,OAASmrB,EAAe30B,KAGvEw0B,EAAQxrB,KAAKxM,IACX,MAAM0oB,GAAelR,EAAAA,EAAAA,GAAOxX,EAAKynB,EAAWlmB,KACtCyL,GAAgBwK,EAAAA,EAAAA,GAAOxX,EAAKynB,EAAWkP,OAC7CsB,EAAOzwB,KAAKwF,GACZ8pB,EAAYtqB,KAAKmrB,IACflT,EAASkT,GAAYnrB,KAAK0qB,IACxBA,EAAQh4B,KAAKsI,KACXkhB,KAAQqP,GAAYG,EAAShB,EAAQlqB,SAAU+qB,EAASrP,GACpDgP,EACEC,EACAI,EAASrP,GAAMwP,EAAShB,EAAQlqB,QAAQ2qB,GACxCnsB,GAEa,kBAAfmsB,EACA,KACA,EATN,GADF,GADF,IAgBK,CACLM,SACAxT,WAFF,EAMW2T,EAAqB,CAChC1P,EACA2P,EACA7R,KAEA,MAAMoO,EAAepO,EAAqB,EAAI,EACxC/I,EACU,SAAd4a,GACIxD,EAAAA,EAAAA,IAAYyD,EAAAA,EAAAA,GAAS5P,EAAM,IACb,SAAd2P,GACA1D,EAAAA,EAAAA,IAAYvM,EAAAA,EAAAA,GAAUM,EAAM,GAAI,CAAEkM,kBAClC/L,EAAAA,EAAAA,IAAaT,EAAAA,EAAAA,GAAUM,EAAM,KAC7BV,EACU,SAAdqQ,GACIE,EAAAA,EAAAA,GAAU7P,GACI,SAAd2P,GACAjD,EAAAA,EAAAA,GAAU1M,EAAM,CAAEkM,kBAClB9L,EAAAA,EAAAA,GAAWJ,GACjB,MAAO,CACLE,SAAUyP,EACVrQ,MACAvK,QAHF,EAOW+a,EAAoB,CAC/B7P,EACA8P,EACAjS,KAEA,MAAM,SAAEoC,EAAF,MAAYnL,EAAZ,IAAmBuK,GAAQW,EAC3BiM,EAAepO,EAAqB,EAAI,EAC9C,MAAO,CACLoC,WACAZ,IACe,SAAbY,GACI2P,EAAAA,EAAAA,GAAUE,GAAWH,EAAAA,EAAAA,GAAStQ,EAAK,IAAK+M,EAAAA,EAAAA,GAAS/M,EAAK,IACzC,SAAbY,GACAwM,EAAAA,EAAAA,GAAUqD,GAAWC,EAAAA,EAAAA,GAAS1Q,EAAK,IAAK2Q,EAAAA,EAAAA,GAAS3Q,EAAK,GAAI,CACxD4M,kBAEF9L,EAAAA,EAAAA,GAAW2P,GAAWrQ,EAAAA,EAAAA,GAAUJ,EAAK,IAAKE,EAAAA,EAAAA,GAAUF,EAAK,IAC/DvK,MACe,SAAbmL,GACIiM,EAAAA,EAAAA,GAAY4D,GAAWH,EAAAA,EAAAA,GAAS7a,EAAO,IAAKsX,EAAAA,EAAAA,GAAStX,EAAO,IAC/C,SAAbmL,GACA+L,EAAAA,EAAAA,GAAY8D,GAAWC,EAAAA,EAAAA,GAASjb,EAAO,IAAKkb,EAAAA,EAAAA,GAASlb,EAAO,GAAI,CAC9DmX,kBAEF/L,EAAAA,EAAAA,GAAa4P,GAAWrQ,EAAAA,EAAAA,GAAU3K,EAAO,IAAKyK,EAAAA,EAAAA,GAAUzK,EAAO,IAjBvE,C,qHC/MK,MAAM3R,EAA+B,CAC1C8sB,GAAI,CACFlb,KAAM,KACNmb,OAAQ,WACRC,WAAY,EACZ/sB,cAAe,KAEjBgtB,GAAI,CACFrb,KAAM,KACNmb,OAAQ,WACRC,WAAY,KACZ/sB,cAAe,MAEjB+pB,EAAG,CACDpY,KAAM,IACNmb,OAAQ,SACRC,WAAY,EACZ/sB,cAAe,MAEjBitB,GAAI,CACFtb,KAAM,IACNmb,OAAQ,SACRC,WAAY,IACZ/sB,cAAe,OAIbktB,EAAmB,CACvBC,OAAQ,CACNC,SAAU,YACVD,OAAQ,GAEVC,SAAU,CACRD,OAAQ,EAAI,YACZC,SAAU,IAIDltB,EAAkB,CAC7BX,EACAyc,EACApiB,EACA8F,EAAwB,KAExB,MAAMF,EAAWO,EAAMic,GACjBlc,EAASC,EAAMnG,GACfqG,EACHV,EAAWC,EAASutB,WAAaG,EAAQ1tB,EAASstB,QAAQhtB,EAAOgtB,QAClEhtB,EAAOitB,WACT,OAAe,OAAXrtB,EACKS,WAAWF,EAAkBG,QAAQV,IAEvCO,CAAP,EAGW4rB,EAAuB,CAClCrsB,EACA1E,EACA2E,KAEA,MAAMK,EAASL,EAAmBM,EAAMP,GAAUQ,cAAgBR,EAClE,OAAOC,EAAmBS,EAAgBpF,EAAO0E,EAAUM,EAAQ,GAAKhF,CAAxE,C,2ICtDK,MAAMywB,EAAc,CACzBrE,EACAne,EACAtJ,KAEA,MAAMiZ,EAA6B,CACjC9Y,MAAO,CACLqB,MAAO8H,EAAE,kBACTqiB,gBAAiB,CAAC,WAClBC,YAAa,CAAC,WACdgC,YAAa,EACbl6B,KAAM,GACNm6B,QAAS,UAEXC,UAAW,CACTtsB,MAAO8H,EAAE,sBACTqiB,gBAAiB,CAAC,WAClBC,YAAa,CAAC,WACdgC,YAAa,EACb/qB,MAAM,EACNnP,KAAM,GACNm6B,QAAS,eAGPE,EAA6B,GAC7BC,EAA6B,GAC7BC,EAA8B,GAcpC,OAZAxG,EAAUzmB,KAAKtN,IACbq6B,EAAgB/xB,KAAKtI,EAAKoM,UAC1BkuB,EAAgBhyB,KAAKtI,EAAK0pB,UAC1BnE,EAAS9Y,MAAMzM,KAAKsI,MAClBowB,EAAAA,EAAAA,IAAqB,KAAM14B,EAAKyM,MAAOH,IAEzCiZ,EAAS6U,UAAUp6B,KAAKsI,MACtBowB,EAAAA,EAAAA,IAAqB,IAAK14B,EAAKo6B,UAAW9tB,IAE5CiuB,EAAYjyB,KAAK,CAAEkyB,SAAUx6B,EAAKw6B,SAAUC,UAAWz6B,EAAKy6B,WAA5D,IAGK,CAAEJ,kBAAiBC,kBAAiB/U,WAAUgV,cAArD,EAGWzT,EACXxjB,IAEA,MAAMo3B,EAAQp3B,EAASrC,OACvB,GAAc,IAAVy5B,EACF,MAAO,CAAC,EAGV,MAAMnV,EAAmD,CAAC,EAa1D,OAZAjiB,EAASgK,KAAKiW,IACPgC,EAAShC,EAAQjB,YACpBiD,EAAShC,EAAQjB,UAAY,CAC3BqY,MAAO,EACP7U,WAAY,IAGhBP,EAAShC,EAAQjB,UAAUqY,OAAS,EACpCpV,EAAShC,EAAQjB,UAAUwD,WACzBP,EAAShC,EAAQjB,UAAUqY,MAAQD,CADrC,IAIKnV,CAAP,EAGWb,EAAe,CAC1BuQ,MAAO,OACP9c,SAAU,e,2FC7EL3T,MAAM,Q,GACJA,MAAM,c,GAGNA,MAAM,gB,kCAJb4B,EAAAA,EAAAA,IAOM,MAPN,EAOM,EANJzB,EAAAA,EAAAA,GAEM,MAFN,EAEM,EADJ+I,EAAAA,EAAAA,IAA0B3H,EAAAA,OAAA,YAE5BpB,EAAAA,EAAAA,GAEM,MAFN,EAEM,EADJ+I,EAAAA,EAAAA,IAA4B3H,EAAAA,OAAA,c,eCLlC,MAAMiK,EAAS,CAAC,EAKVlJ,GAA2B,OAAgBkJ,EAAQ,CAAC,CAAC,SAASxB,KAEpE,O,sGCLA,MACMnK,EAAa,CAAEG,MAAO,iBACtBD,EAAa,CAAC,SACdE,EAAa,CAAC,SACdC,EAAa,CAAC,SACdE,EAAa,CAAC,SACdC,EAAa,CAAC,SACdC,EAAa,CAAC,SAapB,OAA4BS,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,gBACRC,MAAO,CACL0S,SAAU,KACV1B,MAAO,KACPwB,KAAM,KACNvY,QAAS,MAEXqH,MAAO,CAAC,gBACRnB,MAAMC,GAAc,KAAEmB,IAExB,MAAMvB,EAAQI,GAWN,SAAEsS,EAAF,MAAY1B,EAAZ,KAAmBwB,EAAnB,QAAyBvY,IAAYoG,EAAAA,EAAAA,IAAOL,GAC5Cm1B,EAAU,CAAC,GAAI,GAAI,GAAI,KAE7B,SAASC,EAAe/uB,GACtB9E,EAAK,eAAgB8E,EAAMzG,OAAOf,GAAIwH,EAAMzG,OAAOsC,MACpD,CAEH,MAAO,CAAC5B,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3DM,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjC0B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kCAAoC,KAAM,IACpFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5B2G,KAAM,WACNhH,GAAI,WACJqD,OAAOpB,EAAAA,EAAAA,IAAOkQ,GAAO0B,SACrB0H,SAAUgb,GACT,GACA10B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAO4R,IAAY8c,KAC7E9uB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAClDuB,MAAOstB,EACPn0B,IAAKm0B,IACJ3uB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,IAAGJ,EAAAA,EAAAA,IAAO7G,MAAYu1B,EAAMrI,kBAAmB,EAAGnoB,MAC5E,OACH,GAAIF,MAETI,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjC0B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,+BAAiC,KAAM,IACjFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5B2G,KAAM,QACNhH,GAAI,QACJqD,OAAOpB,EAAAA,EAAAA,IAAOkQ,GAAOwe,MACrBpV,SAAUgb,GACT,GACA10B,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAO0R,IAAQgd,KACzE9uB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAClDuB,MAAOstB,EACPn0B,IAAKm0B,IACJ3uB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,wBAAwBsuB,EAAMrI,kBAAmB,EAAGhoB,MAC9E,OACH,GAAIF,MAETC,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjC0B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kCAAoC,KAAM,IACpFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5B2G,KAAM,WACNhH,GAAI,WACJqD,OAAOpB,EAAAA,EAAAA,IAAOkQ,GAAO2N,SACrBvE,SAAUgb,GACT,GACA10B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAYgtB,GAAUE,IACjEn2B,EAAAA,EAAAA,GAAoB,SAAU,CACnCgD,MAAOmzB,EACPh6B,IAAKg6B,IACJx0B,EAAAA,EAAAA,IAAiBw0B,GAAK,EAAGh2B,KAC1B,MACH,GAAID,OAIZ,I,UClGD,MAAMiC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,2FCPOoH,MAAM,6BAA6BG,QAAQ,iB,6zBAC9C9J,G,0CADF6B,EAAAA,EAAAA,IAmBM,MAnBN,EAmBM3B,E,CAIN,OACE6G,KAAM,Y,UCpBV,MAAMxE,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS0H,KAEpE,O,gHCJA,MACMnK,EAAa,CAAEC,GAAI,SACnBC,EAAa,CAAEC,MAAO,iBAW5B,OAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,QACRC,MAAO,CACLsJ,MAAO,KACPrP,QAAS,KACTq7B,WAAY,KACZttB,KAAM,CAAEtM,QAAS,MAEnByE,MAAMC,GAER,MAAMJ,EAAQI,GAGN,WAAEk1B,EAAF,MAAchsB,EAAd,QAAqBrP,EAArB,KAA8B+N,IAAS3H,EAAAA,EAAAA,IAAOL,GAEtD,MAAO,CAACM,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3DM,EAAAA,EAAAA,GAAoB,MAAOJ,EAAY,EACrCI,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOwI,IAAS,IACjEpK,EAAAA,EAAAA,GAAoB,IAAK,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAO7G,IAAW,IACjE6G,EAAAA,EAAAA,IAAOw0B,KACH50B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACLqH,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,MAAK/B,EAAAA,EAAAA,IAAOkH,KAC9EjJ,MAAO,UACN8B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOw0B,IAAc,KACzCl0B,EAAAA,EAAAA,IAAoB,IAAI,OAIjC,I,UCxCD,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,QCEA,GAA4BvB,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,WACRC,MAAO,CACLJ,OAAQ,CAAElE,QAAS,SAErByE,MAAMC,GAER,MAAMJ,EAAQI,GAGN,OAAER,IAAWS,EAAAA,EAAAA,IAAOL,GACpBu1B,GAAQvzB,EAAAA,EAAAA,MACRwzB,GAA+BxzB,EAAAA,EAAAA,KAAI,GAIzC,SAASyzB,IACPF,EAAMrzB,MAAQ0C,YAAW,KACvB4wB,EAAetzB,OAAQ,CAAvB,GACC,IACJ,CAQH,OAdEkD,EAAAA,EAAAA,KAAU,IAAMqwB,OAQhB/qB,EAAAA,EAAAA,KAAY,KACN6qB,EAAMrzB,OACRwzB,aAAaH,EAAMrzB,MACpB,IAGE,CAAC5B,EAAUC,IACRi1B,EAAetzB,QAClBxB,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa2hB,EAAO,CACjCtpB,IAAK,EACLiO,MAAO,MACPrP,QAASqG,EAAKY,GAAG,oBAAmBJ,EAAAA,EAAAA,IAAOlB,MAC3C,cAAeU,EAAKY,GAAG,gBACtB,KAAM,EAAG,CAAC,UAAW,kBACxBE,EAAAA,EAAAA,IAAoB,IAAI,EAE7B,IC7CD,MAAM,EAAc,EAEpB,O,gHCFA,MAAM5C,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBG,MAAO,oBACP,aAAc,cAEVD,EAAa,CAAEC,MAAO,cACtBC,EAA2BR,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,qBACP,cAAe,QACd,MAAO,KACJE,EAAa,CAAE5D,IAAK,GACpB8D,EAA2BX,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,sBACP,cAAe,QACd,MAAO,KAeV,OAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,aACRC,MAAO,CACL4R,WAAY,KACZ5J,KAAM,KACNgJ,MAAO,MAET7Q,MAAMC,GAER,MAAMJ,EAAQI,GAQN,WAAEwR,EAAF,KAAc5J,EAAd,MAAoBgJ,IAAU3Q,EAAAA,EAAAA,IAAOL,GAE3C,SAAS0R,EACPS,EACAwjB,GAEA,MAAMvjB,EAAWvD,OAAOM,OAAO,CAAC,EAAG6B,EAAM9O,OAEzC,OADAkQ,EAASD,KAAOwjB,EAASxjB,EAAOwjB,EAASxjB,EAClCC,CACR,CAEH,MAAO,CAAC9R,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3DM,EAAAA,EAAAA,GAAoB,KAAMJ,EAAY,EACpCI,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,YAAa,CAAEiD,WAAWjF,EAAAA,EAAAA,IAAO8Q,GAAYgkB,aACpE,EACD70B,EAAAA,EAAAA,IAAaP,EAAwB,CACnCzB,MAAO,YACPiC,GAAI,CAAEgH,MAAMlH,EAAAA,EAAAA,IAAOkH,GAAOgJ,MAAOU,GAAS5Q,EAAAA,EAAAA,IAAO8Q,GAAYO,MAAO,IACpEpM,WAAWjF,EAAAA,EAAAA,IAAO8Q,GAAYgkB,UAC7B,CACDl6B,SAASuF,EAAAA,EAAAA,KAAS,EAAG40B,cAAe,EAClC5tB,EAAAA,EAAAA,IAAY3H,EAAK4H,OAAQ,UAAW,CAClCxF,QAAUC,IAAiB7B,EAAAA,EAAAA,IAAO8Q,GAAYkkB,SAAWD,EAAW,OACnE,IAAM,EACPj1B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA8B,IAAK,GAC7ElC,QAGJmC,EAAG,GACF,EAAG,CAAC,KAAM,cACZ,KACFT,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,KAAYrH,EAAAA,EAAAA,IAAO8uB,EAAAA,GAAP9uB,EAAwBA,EAAAA,EAAAA,IAAO8Q,GAAYie,OAAO/uB,EAAAA,EAAAA,IAAO8Q,GAAYO,OAAQA,KACvIzR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM,CAC9CtF,IAAK8W,EACLpT,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,OAAQ,CAAEizB,OAAQ5jB,KAASrR,EAAAA,EAAAA,IAAO8Q,GAAYO,SACrE,CACS,QAATA,IACIzR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,OAAQ1B,EAAY,YACtDyB,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaxC,EAAwB,CAClDnF,IAAK,EACL0D,MAAO,YACPiC,GAAI,CAAEgH,MAAMlH,EAAAA,EAAAA,IAAOkH,GAAOgJ,MAAOU,GAAUS,KAC1C,CACDzW,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBsR,GAAO,MAE3ChR,EAAG,GACF,KAAM,CAAC,SACb,MACD,OACJjC,EAAAA,EAAAA,GAAoB,KAAM,CACxBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,YAAa,CAAEiD,WAAWjF,EAAAA,EAAAA,IAAO8Q,GAAYkkB,aACpE,EACD/0B,EAAAA,EAAAA,IAAaP,EAAwB,CACnCzB,MAAO,YACPiC,GAAI,CAAEgH,MAAMlH,EAAAA,EAAAA,IAAOkH,GAAOgJ,MAAOU,GAAS5Q,EAAAA,EAAAA,IAAO8Q,GAAYO,KAAM,IACnEpM,WAAWjF,EAAAA,EAAAA,IAAO8Q,GAAYkkB,UAC7B,CACDp6B,SAASuF,EAAAA,EAAAA,KAAS,EAAG40B,cAAe,EAClC5tB,EAAAA,EAAAA,IAAY3H,EAAK4H,OAAQ,UAAW,CAClCxF,QAAUC,IAAiB7B,EAAAA,EAAAA,IAAO8Q,GAAYkkB,SAAWD,EAAW,OACnE,IAAM,EACPj1B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,wBAA0B,IAAK,GACzE/B,QAGJgC,EAAG,GACF,EAAG,CAAC,KAAM,cACZ,MA1DP,CA8DD,I,UCvHD,MAAME,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,8ICNO,MAAM20B,EAAmBhhB,UAC9B,MAAMihB,QAA4B,6BAG5BC,QAAwB,8BAGxBC,QAAwB,8BAGxBC,QAAwB,8BAGxBC,EAA6D,CACjEjF,GAAIgF,EACJ/E,GAAI6E,EACJ5E,GAAI6E,GAEAG,EAAgBD,EAAmBx0B,GACnCuB,EAAU,CACdmzB,OAAQN,EAAoBv6B,QAAQ86B,gBACpCC,WAAY,IACPR,EAAoBv6B,QAAQ+6B,cAC5BH,EAAc56B,QAAQ+6B,aAG7BC,EAAAA,GAAAA,WAAyBtzB,EAAzB,EAGWuzB,EAAuBC,IAClC,OAAQA,GACN,KAAK,EACH,MAAO,UACT,KAAK,EACH,MAAO,OACT,KAAK,EACH,MAAO,SACT,QACE,MAAO,OARX,EC5BIh4B,EAAa,CAAEG,MAAO,qBACtBD,EAAa,CAAC,SACdE,EAAa,CACjB3D,IAAK,EACL0D,MAAO,6BAEHE,EAAa,CAAEF,MAAO,2BACtBI,EAAa,CACjB9D,IAAK,EACL0D,MAAO,YAEHK,EAAa,CAAEL,MAAO,qBAqB5B,OAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,kBACRC,MAAO,CACLkU,SAAU,MAEZ/T,MAAMC,GAER,MAAMJ,EAAQI,GAKN,SAAE8T,IAAa7T,EAAAA,EAAAA,IAAOL,GAEtBxG,GAAQgI,EAAAA,EAAAA,KACRK,GAAgCH,EAAAA,EAAAA,KACpC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,YAEhBsS,GAAkC1S,EAAAA,EAAAA,KACtC,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,cAEhBo9B,GAA6B70B,EAAAA,EAAAA,IAAI,GACjC80B,GAAgC90B,EAAAA,EAAAA,IAAI,IACpC+0B,GAAqC/0B,EAAAA,EAAAA,IAAI,IACzCg1B,GAAiBh1B,EAAAA,EAAAA,IAAI,WAI3B,SAASi1B,EAA0B/iB,GACjC,MAAMgjB,GAAeC,EAAAA,EAAAA,IAAOjjB,GAC5B2iB,EAAc30B,MAAQg1B,EAAaE,MACnCN,EAAiB50B,MAAQy0B,EAAoBE,EAAc30B,OAC3D60B,EAAoB70B,MAAQg1B,EAAaG,SAASC,YAClDN,EAAe90B,MAA+B,IAAtB20B,EAAc30B,MAAe,EAAI,QAC1D,CAmBH,OA3BEiD,EAAAA,EAAAA,KAAc6P,eAAkBghB,EAAiBn0B,EAASK,UAU1DoE,EAAAA,EAAAA,KACE,IAAMzE,EAASK,QACf8S,gBACQghB,EAAiBuB,EAAvB,KAGJjxB,EAAAA,EAAAA,KACE,IAAM4N,EAAShS,QACf8S,UACMZ,EAAUlS,MACZ40B,EAAiB50B,MAAQ,GAEzB+0B,EAA0BO,EAC3B,IAIA,CAACl3B,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3DM,EAAAA,EAAAA,GAAoB,QAAS,CAC3BH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,kBAAmB,YAAY+zB,EAAc30B,UACrE2G,OAAOY,EAAAA,EAAAA,IAAgB,CAAEutB,eAAgBA,EAAe90B,QACxD8D,KAAM,QACN9D,MAAO20B,EAAc30B,MACrBmN,IAAK,IACLooB,IAAK,IACLnoB,KAAM,KACL,KAAM,GAAIxQ,GACZg4B,EAAiB50B,QACbxB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAY,EACpDE,EAAAA,EAAAA,GAAoB,OAAQD,GAAY4B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iCAAmC,MAAOL,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,0BAA0B41B,EAAiB50B,UAAW,GACzL60B,EAAoB70B,MAAM1G,OAAS,IAC/BkF,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOxB,EAAY,EACpDD,EAAAA,EAAAA,GAAoB,KAAME,EAAY,GACnCsB,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoB4E,EAAAA,GAAW,MAAM4C,EAAAA,EAAAA,IAAY4uB,EAAoB70B,OAAQw1B,KACtFh3B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,KAAM,CAAEtF,IAAKq8B,IAAc72B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sCAAsCw2B,MAAgB,MAClJ,YAGRt2B,EAAAA,EAAAA,IAAoB,IAAI,OAE9BA,EAAAA,EAAAA,IAAoB,IAAI,KAG/B,I,UC9GD,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,QCLA,MAAM7C,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CAAEG,MAAO,kBACtBD,EAAa,CAAC,KAAM,WAAY,cAAe,WAAY,QAC3DE,EAAa,CACjB3D,IAAK,EACL0D,MAAO,aAEHE,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,oBACP,cAAe,QACd,MAAO,KAgBV,OAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,gBACRC,MAAO,CACL2V,cAAe,CAAE3P,KAAMC,QAASvK,SAAS,GACzCqK,SAAU,CAAEC,KAAMC,QAASvK,SAAS,GACpCmD,GAAI,CAAEnD,QAAS,YACfwY,SAAU,CAAExY,QAAS,IACrB4V,YAAa,KACbgE,SAAU,CAAEtP,KAAMC,QAASvK,SAAS,IAEtC4F,MAAO,CAAC,iBAAkB,iBAC1BnB,MAAMC,GAAc,KAAEmB,IAExB,MAAMvB,EAAQI,GAGN,cAAEuV,EAAF,SAAiB5P,EAAjB,GAA2BlH,EAA3B,SAA+BqV,EAA/B,YAAyC5C,EAAzC,SAAsDgE,IAC1DjV,EAAAA,EAAAA,IAAOL,GAEH23B,GAA6B31B,EAAAA,EAAAA,KAAI,GACjC41B,GAA6B51B,EAAAA,EAAAA,IAAI,IAIvC,SAAS61B,IACPF,EAAaz1B,OAASy1B,EAAaz1B,KACpC,CACD,SAASwS,EAAerO,GACtB9E,EAAK,iBAAkB8E,EAAMzG,OAAOsC,MACrC,CACD,SAAS41B,IACPv2B,EAAK,gBACN,CAWH,OATE+E,EAAAA,EAAAA,KACE,IAAM4N,EAAShS,QACds1B,IACqB,KAAhBA,IACFI,EAAc11B,MAAQ,GACvB,IAIA,CAAC5B,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3D2H,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,QAAS,CAC3CL,IAAIiC,EAAAA,EAAAA,IAAOjC,GACXkH,UAAUjF,EAAAA,EAAAA,IAAOiF,GACjBuL,aAAaxQ,EAAAA,EAAAA,IAAOwQ,GACpBgE,UAAUxU,EAAAA,EAAAA,IAAOwU,GACjBtP,KAAM2xB,EAAaz1B,MAAQ,OAAS,WACpC,sBAAuB3B,EAAO,KAAOA,EAAO,GAAMoC,GAAkBi1B,EAAe11B,MAAQS,GAC3Fo1B,UAAW,IACXtxB,QAASiO,EACTa,UAAWuiB,GACV,KAAM,GAAIh5B,GAAa,CACxB,CAACk5B,EAAAA,GAAgBJ,EAAc11B,UAEjChD,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,MAAO,gBACP2D,QAASm1B,GACR,EACDj3B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,QAAQy2B,EAAaz1B,MAAQ,OAAS,oBAAsB,IAAK,IAC3GhD,EAAAA,EAAAA,GAAoB,IAAK,CACvBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,KAAM,UAAS60B,EAAaz1B,MAAQ,SAAW,MACvE,cAAe,QACd,KAAM,MAEVpB,EAAAA,EAAAA,IAAO6U,KACHjV,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAY,CACpDC,GACA2B,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,uBAAwB,OAE1EE,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAO6U,KACHjV,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAai1B,EAAkB,CAC5C58B,IAAK,EACL6Y,SAAU0jB,EAAc11B,OACvB,KAAM,EAAG,CAAC,eACbd,EAAAA,EAAAA,IAAoB,IAAI,KAG/B,ICzGD,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,gHCLA,MAAMxC,GAA0BM,EAAAA,EAAAA,GAAoB,MAAO,CAAEH,MAAO,mBAAqB,EAC1EG,EAAAA,EAAAA,GAAoB,OAAQ,CAAEH,MAAO,wBAA0B,MAC/DG,EAAAA,EAAAA,GAAoB,IAAK,CACpCH,MAAO,uBACPY,KAAM,0CACNC,OAAQ,SACRC,IAAK,uBACJ,qBACD,GAYJ,OAA4BC,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAO,CACL8d,QAAS,KACToa,aAAc,CAAElyB,KAAMC,QAASvK,SAAS,IAE1CyE,MAAMC,GAER,MAAMJ,EAAQI,GAGN,aAAE83B,IAAiB73B,EAAAA,EAAAA,IAAOL,GAC1Bm4B,EAAW,IAAGv/B,EAAAA,EAAAA,oBAA2BoH,EAAM8d,QAAQjW,MAE/D,MAAO,CAACvH,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C5B,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,aAAc,CAAE,iBAAiBhC,EAAAA,EAAAA,IAAOo3B,OAC/D,EACAp3B,EAAAA,EAAAA,IAAOo3B,KACHx3B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CACxCtF,IAAK,EACLqiB,IAAKya,EACLxa,IAAK,QAENjd,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CACxCtF,IAAK,EACL0D,MAAO,eACP8J,OAAOY,EAAAA,EAAAA,IAAgB,CACzB2uB,gBAAiB,OAAOD,QAErB,KAAM,IACbv5B,GACC,GAEJ,ICpDD,MAAMyC,EAAc,EAEpB,O,4FCLA,MACMzC,EAAa,CAAEG,MAAO,eACtBD,EAAa,CAAEzD,IAAK,GACpB2D,EAAa,CAAE3D,IAAK,GACpB4D,EAAa,CAAEF,MAAO,eACtBI,EAAa,CAAC,WACdC,EAAa,CAAC,WACdC,EAAa,CAAC,WACdC,EAAa,CAAEjE,IAAK,GACpBkE,EAAa,CAAC,WACdC,EAAc,CAAEnE,IAAK,GACrBoE,EAAc,CAAC,WACfC,EAAc,CAAErE,IAAK,GACrBwS,EAAc,CAAC,WAEf,SAAU9E,EAAOzI,EAAUC,EAAY83B,EAAYC,EAAYC,EAAWC,GAC9E,MAAMC,GAAmBh4B,EAAAA,EAAAA,IAAkB,SAE3C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,CAC1D0B,EAAKo4B,mBAAqBp4B,EAAKq4B,aAC3Bj4B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY+B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,yBAA0B,MACxGR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAY,EACpDE,EAAAA,EAAAA,GAAoB,MAAOD,EAAY,EACrCC,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjCA,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNH,KAAM,iBACN2N,QAAgC,mBAAvBlT,EAAKs4B,cACdl2B,QAASnC,EAAO,KAAOA,EAAO,GAE9C,IAAIs4B,IAAUv4B,EAAKw4B,mBAAqBx4B,EAAKw4B,qBAAqBD,KACjD,KAAM,EAAG15B,IACZyB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,MAEzEhC,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjCA,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNH,KAAM,iBACN2N,QAAgC,mBAAvBlT,EAAKs4B,cACdl2B,QAASnC,EAAO,KAAOA,EAAO,GAE9C,IAAIs4B,IAAUv4B,EAAKw4B,mBAAqBx4B,EAAKw4B,qBAAqBD,KACjD,KAAM,EAAGz5B,IACZwB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,MAEzEhC,EAAAA,EAAAA,GAAoB,QAAS,KAAM,EACjCA,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNH,KAAM,cACN2N,QAAgC,gBAAvBlT,EAAKs4B,cACdl2B,QAASnC,EAAO,KAAOA,EAAO,GAE9C,IAAIs4B,IAAUv4B,EAAKw4B,mBAAqBx4B,EAAKw4B,qBAAqBD,KACjD,KAAM,EAAGx5B,IACZuB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,IAAK,KAE1EZ,EAAKy4B,YACDr4B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAASrB,EAAY,EACtDJ,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNH,KAAM,gBACN2N,QAAgC,kBAAvBlT,EAAKs4B,cACdl2B,QAASnC,EAAO,KAAOA,EAAO,GAElD,IAAIs4B,IAAUv4B,EAAKw4B,mBAAqBx4B,EAAKw4B,qBAAqBD,KAC7C,KAAM,EAAGt5B,IACZqB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2BAA4B,OAE9EE,EAAAA,EAAAA,IAAoB,IAAI,GAC3Bd,EAAKy4B,YACDr4B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAASnB,EAAa,EACvDN,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNH,KAAM,eACN2N,QAAgC,iBAAvBlT,EAAKs4B,cACdl2B,QAASnC,EAAO,KAAOA,EAAO,GAElD,IAAIs4B,IAAUv4B,EAAKw4B,mBAAqBx4B,EAAKw4B,qBAAqBD,KAC7C,KAAM,EAAGp5B,IACZmB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAqB,OAEvEE,EAAAA,EAAAA,IAAoB,IAAI,GAC3Bd,EAAKy4B,YACDr4B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAASjB,EAAa,EACvDR,EAAAA,EAAAA,GAAoB,QAAS,CAC3B8G,KAAM,QACNH,KAAM,gBACN2N,QAAgC,kBAAvBlT,EAAKs4B,cACdl2B,QAASnC,EAAO,KAAOA,EAAO,GAElD,IAAIs4B,IAAUv4B,EAAKw4B,mBAAqBx4B,EAAKw4B,qBAAqBD,KAC7C,KAAM,EAAGhrB,IACZjN,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,qBAAsB,OAExEE,EAAAA,EAAAA,IAAoB,IAAI,KAE7Bd,EAAKgzB,OAAO93B,OAAS,IACjBkF,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAay1B,EAAkB,CAC5Cp9B,IAAK,EACLykB,SAAUxf,EAAKwf,SACfwT,OAAQhzB,EAAKgzB,OACbsF,cAAet4B,EAAKs4B,cACpBI,kBAAmB14B,EAAK04B,kBACxBD,UAAWz4B,EAAKy4B,UAChBlyB,iBAAkBvG,EAAK3C,KAAKoW,gBAC3B,KAAM,EAAG,CAAC,WAAY,SAAU,gBAAiB,oBAAqB,YAAa,uBACtF3S,EAAAA,EAAAA,IAAoB,IAAI,OAGrC,C,wBC7GD,MAAMxC,EAAa,CAAEG,MAAO,SAEtB,SAAUgK,EAAOzI,EAAUC,EAAY83B,EAAYC,EAAYC,EAAWC,GAC9E,MAAMS,GAAsBx4B,EAAAA,EAAAA,IAAkB,YAE9C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3DmC,EAAAA,EAAAA,IAAak4B,GAAqBC,EAAAA,EAAAA,IAAY54B,EAAK64B,cAAe,CAAEp6B,MAAO,cAAgB,KAAM,KAEpG,C,wBCVM,MAAMq6B,EAAiB,CAC5BC,EACAC,GAAkB,KAElB,IAAIrX,EAAO,IACPqX,IACFrX,EAAOsX,OAAOrZ,KAAK8Q,MAAMqI,EAAe,QACxCA,GAAgB,OAElB,MAAMG,EAAQD,OAAOrZ,KAAK8Q,MAAMqI,EAAe,OAAOI,SAAS,EAAG,KAClEJ,GAAgB,KAChB,MAAMK,EAAUH,OAAOrZ,KAAK8Q,MAAMqI,EAAe,KAAKI,SAAS,EAAG,KAC5DE,EAAUJ,OAAOF,EAAe,IAAII,SAAS,EAAG,KACtD,OAAIH,EACK,GAAY,MAATrX,EAAe,GAAK,GAAGA,QACrB,OAAVuX,EAAiB,GAAK,GAAGA,QACxBE,MAAYC,KAEV,GAAa,OAAVH,EAAiB,GAAK,GAAGA,OAAWE,KAAWC,GAAzD,E,cCdK,MAAMC,EAAqB,CAChChB,EACA12B,EACA2E,EACAyyB,GAAkB,EAClB1yB,EAAW,QAEX,MAAMM,EAASL,EAAmBM,EAAAA,GAAMP,GAAUQ,cAAgBR,EAClE,OAAQgyB,GACN,IAAK,gBACH,MAAO,GAAG12B,EAAMsF,QAAQ,MAAMN,MAChC,IAAK,iBACH,OAAOkyB,EAAel3B,EAAOo3B,GAC/B,IAAK,iBACL,IAAK,eACL,IAAK,gBACH,MAAO,GAAGp3B,EAAMsF,QAAQ,MAAMN,IAChC,QACE,OAAOhF,EAAMK,WAVjB,ECFA,OAAes3B,EAAAA,EAAAA,IAAgB,CAC7Bh0B,KAAM,QACNi0B,WAAY,CACVC,SAAQA,EAAAA,IAEV/5B,MAAO,CACL8f,SAAU,CACR9Z,KAAM6I,OACNyG,UAAU,GAEZge,OAAQ,CACNttB,KAAM6I,OACNyG,UAAU,GAEZsjB,cAAe,CACb5yB,KAAMuzB,OACNjkB,UAAU,GAEZ0jB,kBAAmB,CACjBhzB,KAAMsC,MACNgN,UAAU,GAEZyjB,UAAW,CACT/yB,KAAMC,QACNqP,UAAU,GAEZzO,iBAAkB,CAChBb,KAAMC,QACNqP,UAAU,IAGdnV,MAAMH,GACJ,MAAM,EAAEmQ,IAAMC,EAAAA,EAAAA,MAEd,SAAS4pB,EAAU93B,GACjB,OAAO+3B,MAAM/3B,GAAS,GAAKA,CAC5B,CAED,SAASg4B,EAAOjF,EAAY/yB,GAC1B,OAAO83B,EAAU/E,GAAS+E,EAAU93B,EACrC,CACD,SAASi4B,EAAQvB,GACf,MAAO,CAAC,eAAgB,iBAAiB9pB,SAAS8pB,GAC9C,IACA,IACL,CACD,MAAMtK,GAA2C5sB,EAAAA,EAAAA,KAAS,KAAM,CAC9D4xB,OAAQtzB,EAAMszB,OAEdxT,SAAUtlB,KAAK4/B,MAAM5/B,KAAKC,UAAUuF,EAAM8f,eAEtC1c,GAAU1B,EAAAA,EAAAA,KAA8B,KAAM,CAClD24B,YAAY,EACZC,qBAAqB,EACrBC,WAAW,EACXC,OAAQ,CACNC,QAAS,CACPx2B,IAAKjE,EAAM+4B,UAAY,GAAK,KAGhC2B,OAAQ,CACNhyB,EAAG,CACDiyB,SAAS,EACTC,KAAM,CACJC,iBAAiB,IAGrBlyB,EAAG,CACDgyB,QAAiC,kBAAxB36B,EAAM44B,cACfgC,KAAM,CACJC,iBAAiB,GAEnBC,MAAO,CACLC,cAAe,EACfC,SAAU,SAAU94B,GAClB,OAAO03B,EACL55B,EAAM44B,eACL12B,EACDlC,EAAM6G,kBACN,EACAszB,EAAQn6B,EAAM44B,eAEjB,GAEHqC,SAAU,SAAUC,GAClBA,EAAMtb,MAAQ5f,EAAM+4B,UAAY,GAAK,EACtC,IAGLoC,QAAS,CACPC,WAAY,CACVC,OAAQ,MACRC,MAAO,MACPjyB,MAAO,SAAU8hB,GACf,MAA+B,kBAAxBnrB,EAAM44B,eACXzN,EAAQoH,QAAQC,gBAGdrH,EAAQoH,QAAQC,gBAAgB,GAChC,SACL,EACDjS,SAAU,SAAU4K,GAClB,OAAOnrB,EAAM+4B,WAAa5N,EAAQ6G,MAAMuJ,UAAU3b,MAAQ,IACtD,IACA,CACL,EACD4b,QAAS,SAAUrQ,GACjB,QAAOnrB,EAAM+4B,WAAa5N,EAAQ6G,MAAMuJ,UAAU3b,MAAQ,OAE9B,kBAAxB5f,EAAM44B,eAC4B,GAAlC54B,EAAMg5B,kBAAkBx9B,QACtB,OAGP,EACDigC,UAAW,SAAUv5B,EAAOipB,GAC1B,GAA4B,kBAAxBnrB,EAAM44B,cACR,OAAOgB,EACL55B,EAAM44B,cACN12B,EACAlC,EAAM6G,kBACN,GAEG,CAGL,MAAMouB,EAAgB9J,EAAQ6G,MAAMz3B,KAAKulB,SACtCjY,KAAKiB,GAAMA,EAAEvO,KAAK4wB,EAAQuQ,aAC1BtW,QAAO,CAAC6P,EAAO/yB,IAAUg4B,EAAOjF,EAAO/yB,IAAQ,GAClD,OAAOipB,EAAQwQ,eACb37B,EAAMg5B,kBAAkBx9B,OAAS,GAAKy5B,EAAQ,EAC5C2E,EACE55B,EAAM44B,cACN3D,EACAj1B,EAAM6G,kBACN,EACAszB,EAAQn6B,EAAM44B,gBAEhB,IACL,CACF,GAEHgD,OAAQ,CACNJ,SAAS,GAEXK,QAAS,CACPC,YAAa,CACXC,WAAW,EACXC,KAAM,QACNC,SAC0B,kBAAxBj8B,EAAM44B,cAAoC,UAAY,WAE1DjhB,OAAQ,SAAUukB,GAChB,MAAsC,MAA/BA,EAAYC,cACpB,EACDC,UAAW,CACT/zB,MAAO,SAAU8iB,GACf,IAAI9iB,EAAQ8H,EAAE,UAAUgb,EAAQoH,QAAQlqB,gBAAkB,GAa1D,OAZIA,IACFA,GAAS,MAEc,OAArB8iB,EAAQkR,OAAO1zB,IACjBN,GAASuxB,EACP55B,EAAM44B,cACNzN,EAAQkR,OAAO1zB,EACf3I,EAAM6G,kBACN,EACAszB,EAAQn6B,EAAM44B,iBAGXvwB,CACR,EACDi0B,OAAQ,SAAUC,GAChB,GAA4B,kBAAxBv8B,EAAM44B,cACR,MAAO,GAET,IAAI4D,EAAM,EAIV,OAHAD,EAAa10B,KAAKq0B,IAChBM,GAAON,EAAYG,OAAO1zB,CAA1B,IAGA,GAAGwH,EAAE,oBACLypB,EACE55B,EAAM44B,cACN4D,EACAx8B,EAAM6G,kBACN,EACAszB,EAAQn6B,EAAM44B,eAGnB,UAKH,cAAEO,IAAkBsD,EAAAA,EAAAA,IAAY,CACpCnO,YACAlrB,YAEF,MAAO,CAAE+1B,gBACV,I,UC7ML,MAAM93B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,KAEpE,Q,8BCoBE,GAAew4B,EAAAA,EAAAA,IAAgB,CAC7Bh0B,KAAM,iBACNi0B,WAAY,CACVztB,MAAKA,GAEPrM,MAAO,CACLzC,OAAQ,CACNyI,KAAM6I,OACNyG,UAAU,GAEZ3X,KAAM,CACJqI,KAAM6I,OACNyG,UAAU,GAEZ0O,YAAa,CACXhe,KAAM6I,OACNyG,UAAU,GAEZ0jB,kBAAmB,CACjBhzB,KAAMsC,MACN5M,QAAS,IAAM,IAEjBq9B,UAAW,CACT/yB,KAAMC,QACNvK,SAAS,GAEXg9B,kBAAmB,CACjB1yB,KAAMC,QACNvK,SAAS,IAGbyE,MAAMH,GACJ,MAAMxG,GAAQgI,EAAAA,EAAAA,KAERo3B,GAA6C52B,EAAAA,EAAAA,IAAI,kBACjDvE,GAA8CiE,EAAAA,EAAAA,KAClD,IAAMlI,EAAMmI,QAAQmpB,EAAAA,GAAAA,QAAAA,cAEhB4R,GAAoDh7B,EAAAA,EAAAA,KAAS,KACjEwxB,EAAAA,EAAAA,IACElzB,EAAMgkB,YACNhkB,EAAMrC,KAAKkW,MACX7T,EAAMzC,OACNyC,EAAMg5B,kBACNv7B,EAAWyE,MACXlC,EAAMrC,KAAKoW,kBAQf,SAAS4oB,EAAcxZ,GACrB3pB,EAAM8I,SAASwoB,EAAAA,GAAAA,QAAAA,eAAoC,CACjD5nB,SAAUlD,EAAMrC,KAAKuF,SACrBmqB,WAAY,UACZ/yB,OAAQ6oB,GAEX,CACD,SAAS2V,EACPzyB,GAIAuyB,EAAc12B,MAAQmE,EAAMzG,OAAOiG,IACpC,CACD,SAAS+2B,EACP5Y,EACArmB,GAEA,MAAO,CACLylB,MAAMvQ,EAAAA,EAAAA,GAAOmR,EAAYlL,MAAO,cAChC9X,IAAI6R,EAAAA,EAAAA,GAAOmR,EAAYX,IAAK,cAC5BwZ,KAC2B,SAAzB7Y,EAAYC,SACR,QAAOtmB,EAAKkW,MAAQ,IAAM,IAC1BmQ,EAAYC,SAErB,CASD,OAvCA9e,EAAAA,EAAAA,KAAc,IACZw3B,EAAcC,EAAa58B,EAAMgkB,YAAahkB,EAAMrC,UA+BtD2I,EAAAA,EAAAA,KACE,IAAMtG,EAAMgkB,cACZhP,UACE2nB,EAAcC,EAAaE,EAAW98B,EAAMrC,MAA5C,IAIG,CACLmiB,UAAUpe,EAAAA,EAAAA,KACR,IAAMg7B,EAAex6B,MAAM4d,SAAS8Y,EAAc12B,SAEpDoxB,QAAQ5xB,EAAAA,EAAAA,KAAS,IAAMg7B,EAAex6B,MAAMoxB,SAC5CqF,YAAYj3B,EAAAA,EAAAA,KAAS,IAA+C,IAAzCmN,OAAO1T,KAAKsC,EAAWyE,OAAO1G,SACzDo9B,gBACAE,oBAEH,ICrHL,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS/vB,GAAQ,CAAC,YAAY,qBAEzF,O,oICNA,MACMnK,EAAa,CAAEG,MAAO,mBACtBD,EAAa,CAAEC,MAAO,gBACtBC,EAAa,CAAED,MAAO,aACtBE,EAAa,CAAEF,MAAO,cACtBI,EAAa,CAAEJ,MAAO,aACtBK,EAAa,CAAEL,MAAO,eACtBM,EAAa,CAAEN,MAAO,cACtBO,EAAa,CAAEP,MAAO,aACtBQ,EAAa,CAAER,MAAO,cACtBS,EAAc,CAAET,MAAO,wBACvBU,EAAc,CAAEV,MAAO,eACvBW,EAAc,CAAEX,MAAO,cAa7B,OAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,aACRC,MAAO,CACLrC,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,GAMN,KAAEzC,IAAS0C,EAAAA,EAAAA,IAAOL,GAElBxG,GAAQgI,EAAAA,EAAAA,KAERC,GAA0CC,EAAAA,EAAAA,KAC9C,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,qBAGxB,MAAO,CAAC6G,EAAUC,KAChB,MAAMwd,GAAsBtd,EAAAA,EAAAA,IAAkB,YAE9C,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,EAC3DmC,EAAAA,EAAAA,IAAakC,EAAAA,EAAa,CAAEtF,MAAMmD,EAAAA,EAAAA,IAAOnD,IAAS,KAAM,EAAG,CAAC,UAC5DuB,EAAAA,EAAAA,GAAoB,MAAOJ,EAAY,EACrCI,EAAAA,EAAAA,GAAoB,MAAOF,GAAY6B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMuF,UAAW,IAChFhE,EAAAA,EAAAA,GAAoB,MAAOD,EAAY,EACrCC,EAAAA,EAAAA,GAAoB,MAAOC,EAAY,EACrCD,EAAAA,EAAAA,GAAoB,OAAQE,GAAYyB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMsV,aAAc,IACpF/T,EAAAA,EAAAA,GAAoB,OAAQG,GAAYwB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAoBJ,EAAAA,EAAAA,IAAOnD,GAAMsV,cAAe,MAEnH/T,EAAAA,EAAAA,GAAoB,MAAOI,EAAY,EACrCyB,EAAAA,EAAAA,IAAagd,EAAqB,CAChCpX,UAAU7F,EAAAA,EAAAA,IAAOnD,GAAMsoB,eACvBrf,SAAU,KACVE,OAAQ,EACRC,aAAa,EACbF,kBAAkB/F,EAAAA,EAAAA,IAAOW,GAAUsS,gBAClC,KAAM,EAAG,CAAC,WAAY,sBACzB7U,EAAAA,EAAAA,GAAoB,OAAQK,GAAYsB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOW,GAAUsS,eAAiB,QAAU,MAAO,MAE9G7U,EAAAA,EAAAA,GAAoB,MAAOM,EAAa,EACtCN,EAAAA,EAAAA,GAAoB,OAAQO,GAAaoB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMyoB,WAAY,IACnFlnB,EAAAA,EAAAA,GAAoB,OAAQQ,GAAamB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kBAAkBJ,EAAAA,EAAAA,IAAOnD,GAAMyoB,YAAa,UArBtH,CA2BD,I,UCzED,MAAM/kB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,sJCLA,MACMzC,EAAa,CACjBC,GAAI,aACJE,MAAO,oBAEHD,EAAa,CACjBzD,IAAK,EACL0D,MAAO,4BAEHC,EAAa,CACjB3D,IAAK,EACL0D,MAAO,uBAEHE,EAAa,CACjBF,MAAO,aACP6O,IAAK,SAEDzO,EAAa,CACjBJ,MAAO,aACP6O,IAAK,SAEDxO,EAAa,CAAEL,MAAO,gBACtBM,EAAa,CACjBN,MAAO,UACPiH,KAAM,UAEF1G,EAAa,CAAC,WACdC,EAAa,CAAElE,IAAK,GACpBmE,EAAc,CAAET,MAAO,YACvBU,EAAc,CAClBpE,IAAK,EACL0D,MAAO,mBAEHW,EAAc,CAAC,WACfmO,EAAc,CAClBxS,IAAK,EACL0D,MAAO,mBAyBT,OAA4Be,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAO,CACLrC,KAAM,KACN+qB,UAAW,CAAE1iB,KAAMC,QAASvK,SAAS,IAEvCyE,MAAMC,GAER,MAAMJ,EAAQI,EAIN5G,GAAQgI,EAAAA,EAAAA,MAER,KAAE7D,EAAF,UAAQ+qB,IAAcroB,EAAAA,EAAAA,IAAOL,GAC7ByB,GAA0CC,EAAAA,EAAAA,KAC9C,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,qBAEhBwc,GAAmBvU,EAAAA,EAAAA,KAAS,IAChC1B,EAAMrC,KAAKoV,YACPF,EAAAA,EAAAA,GAAO,IAAIqD,KAAKlW,EAAMrC,KAAKoV,YAAa,oBACxC,KAEAgqB,GAAYr7B,EAAAA,EAAAA,KAAS,IACzB1B,EAAMrC,KAAKmY,YACPjD,EAAAA,EAAAA,GAAO,IAAIqD,KAAKlW,EAAMrC,KAAKmY,YAAa,cACxC,KAEA1B,GAAY1S,EAAAA,EAAAA,KAChB,IAAMlI,EAAMmI,QAAQgQ,EAAAA,GAAAA,QAAAA,oBAEhBlH,GAAuD/I,EAAAA,EAAAA,KAC3D,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,kBAEhB2B,GAAqC/B,EAAAA,EAAAA,KACzC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,cAEhByS,GAA4BvS,EAAAA,EAAAA,IAAI,IAChCsS,GAAatS,EAAAA,EAAAA,KAAI,GACjBg7B,GAAqCh7B,EAAAA,EAAAA,KAAI,GACzCi7B,GAA4Bj7B,EAAAA,EAAAA,IAAI,IAChCk7B,GAA6Bl7B,EAAAA,EAAAA,IAAI,IAEvC,SAAS8S,EAAmB5S,GAC1BqS,EAAarS,MAAQA,EACP,KAAVA,GACF1I,EAAMmR,OAAOgH,EAAAA,GAAAA,UAAAA,mBAAyC,EAEzD,CACD,SAASuZ,EAAkBhoB,GACzB1J,EAAM8I,SAASqP,EAAAA,GAAAA,QAAAA,oBAAyC,CAAEzO,YAC3D,CACD,SAASi6B,EAAkBj6B,GACzBg6B,EAAch7B,MAAQ,iBACtB1I,EAAM8I,SAASqP,EAAAA,GAAAA,QAAAA,YAAiC,CAC9CzO,WACAsoB,eAAe,GAElB,CACD,SAAS4R,EAAmBl6B,GAC1B1J,EAAM8I,SAASqP,EAAAA,GAAAA,QAAAA,YAAiC,CAC9CzO,WACAwoB,UAAU,GAEb,CACD,SAAS2R,IACPC,IACAL,EAAa/6B,MAAQvE,EAAKuE,MAAMq7B,iBAC5B5/B,EAAKuE,MAAMq7B,iBACX,GACJP,EAAqB96B,OAAQ,EAC7Bg7B,EAAch7B,MAAQ,cACvB,CACD,SAASs7B,IACPP,EAAa/6B,MAAQ,GACrB86B,EAAqB96B,OAAQ,CAC9B,CACD,SAASu7B,EAAgBv6B,GACvB1J,EAAM8I,SAASqP,EAAAA,GAAAA,QAAAA,YAAiC,CAC9CzO,WACAyoB,UAAWsR,EAAa/6B,OAE3B,CACD,SAASo7B,IACP9jC,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,sBACbtI,EAAMmR,OAAOgH,EAAAA,GAAAA,UAAAA,mBAAyC,GACtDurB,EAAch7B,MAAQ,EACvB,CAcH,OAZEwI,EAAAA,EAAAA,KAAY,IAAM4yB,OAElBh3B,EAAAA,EAAAA,KACE,IAAM8N,EAAUlS,QACfw7B,IACKA,IACF5oB,EAAmB,IACnB0oB,IACD,IAIA,CAACl9B,EAAUC,KAChB,MAAM2U,GAAmBzU,EAAAA,EAAAA,IAAkB,SACrCk9B,GAA0Bl9B,EAAAA,EAAAA,IAAkB,gBAC5CoK,GAA0BpK,EAAAA,EAAAA,IAAkB,gBAElD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,CAC1D2V,EAAarS,QACTxB,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAakS,EAAkB,CAC5C7Z,IAAK,EACLiO,MAAOhJ,EAAKY,GAAG,uBACfjH,QACqB,WAAvBsa,EAAarS,MACT,sCACA,oCAEFsI,eAAe1J,EAAAA,EAAAA,IAAOnD,GAAMuF,SAC5BiS,gBAAiB5U,EAAO,KAAOA,EAAO,GAAMoC,GACvB,WAAvB4R,EAAarS,MACTgpB,GAAkBpqB,EAAAA,EAAAA,IAAOnD,GAAMuF,UAC/Bi6B,GAAkBr8B,EAAAA,EAAAA,IAAOnD,GAAMuF,WAEjCkS,eAAgB7U,EAAO,KAAOA,EAAO,GAAMoC,GAAiBmS,EAAmB,MAC9E,KAAM,EAAG,CAAC,QAAS,UAAW,oBACjC1T,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOsT,KACH1T,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY+B,EAAAA,EAAAA,IAAiBP,EAAKY,GAC1E,SAC0B,mBAAxBg8B,EAAch7B,MACV,iBACA,mCAEJ,KACJd,EAAAA,EAAAA,IAAoB,IAAI,IAC1BN,EAAAA,EAAAA,IAAOnD,GAAMkT,WAKXzP,EAAAA,EAAAA,IAAoB,IAAI,KAJvBV,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa26B,EAAyB,CACnDtiC,IAAK,EACLpB,QAAS,yCAGd6G,EAAAA,EAAAA,IAAO2J,KACH/J,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa6H,EAAyB,CACnDxP,IAAK,EACLpB,SAAS6G,EAAAA,EAAAA,IAAO2J,IACf,KAAM,EAAG,CAAC,cACbrJ,EAAAA,EAAAA,IAAoB,IAAI,GAC3B47B,EAAqB96B,QACjBxB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAY,EACpDE,EAAAA,EAAAA,GAAoB,OAAQ,CAC1BH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAEuS,OAAQf,EAAWpS,QAC5C+M,SAAU1O,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiB86B,GAAgB38B,EAAAA,EAAAA,IAAOnD,GAAMuF,WAAY,CAAC,cAC9G,EACDhE,EAAAA,EAAAA,GAAoB,QAASD,EAAY,EACvC2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,wBAA0B,IAAK,IACzEqF,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,QAAS,CAC3CL,GAAI,QACJmH,KAAM,QACN,sBAAuBzF,EAAO,KAAOA,EAAO,GAAMoC,IAAkB7B,EAAAA,EAAAA,IAAOnD,GAAMiV,MAASjQ,GAC1FoD,SAAU,IACT,KAAM,KAAM,CACb,CAACW,EAAAA,IAAa5F,EAAAA,EAAAA,IAAOnD,GAAMiV,YAG/B1T,EAAAA,EAAAA,GAAoB,QAASC,EAAY,EACvCyB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAsB,KAAM,IACtEqF,EAAAA,EAAAA,KAAgBrH,EAAAA,EAAAA,GAAoB,QAAS,CAC3CL,GAAI,YACJmH,KAAM,QACNsP,SAAU,GACV,sBAAuB/U,EAAO,KAAOA,EAAO,GAAMoC,GAAkBs6B,EAAc/6B,MAAQS,IACzF,KAAM,KAAM,CACb,CAAC+D,EAAAA,GAAau2B,EAAa/6B,YAG/BhD,EAAAA,EAAAA,GAAoB,MAAOE,EAAY,EACrCF,EAAAA,EAAAA,GAAoB,SAAUG,GAAYwB,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,IACvFhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BH,MAAO,SACP2D,SAAS0M,EAAAA,EAAAA,IAAeouB,EAAe,CAAC,cACvC38B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mBAAoB,EAAG5B,MAEpD,SAEJoB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOpB,EAAY,EACpDL,EAAAA,EAAAA,GAAoB,KAAM,KAAM,EAC9BA,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,mCAAqC,IAAK,IACnGhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOmV,IAAoB,IAC5E/W,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA8B,IAAK,IAC5FhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMiY,YAAa,IAC3E1W,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2BAA6B,IAAK,IAC3FhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMkY,WAAY,IAC1E3W,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA8B,IAAK,IAC5FhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOi8B,IAAa,IACrE79B,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,0BAA4B,IAAK,IAC1FhC,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMoY,UAAW,IACzE7W,EAAAA,EAAAA,GAAoB,KAAM,MAAM2B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,qBAAuB,IAAK,IACrFhC,EAAAA,EAAAA,GAAoB,KAAMM,GAAaqB,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAOnD,GAAMqY,KAAM,MAE5ElV,EAAAA,EAAAA,IAAO4nB,KACHhoB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOlB,EAAa,EACpDqB,EAAAA,EAAAA,IAAOW,GAAUyB,YAAapC,EAAAA,EAAAA,IAAOnD,GAAMuF,WACvCxC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACL0D,MAAO,SACP2D,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBmS,EAAmB,WAAY,CAAC,eACnGjU,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,KACnDE,EAAAA,EAAAA,IAAoB,IAAI,IAC1BN,EAAAA,EAAAA,IAAOnD,GAAMkT,WAKXzP,EAAAA,EAAAA,IAAoB,IAAI,KAJvBV,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACLqH,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBy6B,GAAmBt8B,EAAAA,EAAAA,IAAOnD,GAAMuF,WAAY,CAAC,eAChHrC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gCAAiC,KAEhEJ,EAAAA,EAAAA,IAAOW,GAAUyB,YAAapC,EAAAA,EAAAA,IAAOnD,GAAMuF,WACvCxC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACLqH,SAAS0M,EAAAA,EAAAA,IAAeiuB,EAAkB,CAAC,cAC1Cx8B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA6B,EAAGxB,KAC5D0B,EAAAA,EAAAA,IAAoB,IAAI,IAEhCN,EAAAA,EAAAA,IAAOW,GAAUyB,YAAapC,EAAAA,EAAAA,IAAOnD,GAAMuF,WAC3CpC,EAAAA,EAAAA,IAAO2C,GAAWyM,2BAETxP,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,SAAU,CAC3CtF,IAAK,EACLqH,QAASnC,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBmS,EAAmB,UAAW,CAAC,eAClGjU,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,8BAA+B,KAC3DE,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQg7B,IAAI,MACrE/8B,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,iBAAkB,QAE/CR,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOkN,EAAa,EACrD3O,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,KAAOA,EAAO,GAAMoC,GAAiBrC,EAAKsC,QAAQC,KAAK,oBACtEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,sBAAuB,IACnDhC,EAAAA,EAAAA,GAAoB,SAAU,CAC5BwD,QAASnC,EAAO,MAAQA,EAAO,IAAOoC,GAAiBrC,EAAKsC,QAAQC,KAAK,QACxEhC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,gBAAiB,UApI3D,CAyID,I,UC7SD,MAAMG,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,wJCLA,MAAM7C,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CAAEC,GAAI,aACnBC,EAAa,CACjBzD,IAAK,EACL0D,MAAO,4BAEHC,EAAa,CAAED,MAAO,cACtBE,EAAa,CAAC,WAAY,eAC1BE,EAAa,CACjB9D,IAAK,EACL0D,MAAO,aAEHK,EAA2BZ,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,oBACP,cAAe,QACd,MAAO,KACJM,EAAa,CAAC,WAAY,eAC1BC,EAAa,CACjBjE,IAAK,EACL0D,MAAO,aAEHQ,EAA2Bf,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,IAAK,CACxFH,MAAO,oBACP,cAAe,QACd,MAAO,KACJS,EAAc,CAAC,YACfC,EAAc,CAAEpE,IAAK,GACrBqE,EAAc,CAAErE,IAAK,GACrBwS,EAAc,CAAExS,IAAK,GACrByS,EAAc,CAAE/O,MAAO,WACvBgP,EAAc,CAAE1S,IAAK,GAyB3B,OAA4ByE,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,eACRC,MAAO,CACL6mB,OAAQ,KACRkF,MAAO,CAAErwB,QAAS,KAEpByE,MAAMC,GAER,MAAMJ,EAAQI,EAINqH,GAAQC,EAAAA,EAAAA,MACRlO,GAAQgI,EAAAA,EAAAA,MAER,OAAEqlB,IAAWxmB,EAAAA,EAAAA,IAAOL,GACpBkP,GAAmCX,EAAAA,EAAAA,IAAS,CAChDrL,SAAU,GACV0P,MAAO,GACPsB,SAAU,KAENohB,GAAkC5zB,EAAAA,EAAAA,KAAS,IAC/Cm8B,EAAc79B,EAAM6mB,UAEhBpc,GAAuD/I,EAAAA,EAAAA,KAC3D,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,kBAEhB2qB,GAA8C/qB,EAAAA,EAAAA,KAClD,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,2BAEhB2a,GAAkC1S,EAAAA,EAAAA,KACtC,IAAMlI,EAAMmI,QAAQlI,EAAAA,GAAAA,QAAAA,cAEhBgK,GAAqC/B,EAAAA,EAAAA,KACzC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,cAEhBD,GAAgCH,EAAAA,EAAAA,KACpC,IAAMlI,EAAMmI,QAAQG,EAAAA,GAAAA,QAAAA,YAEhBg8B,GAA8Cp8B,EAAAA,EAAAA,KAClD,IACmB,aAAjB1B,EAAM6mB,SAA0BpjB,EAAUvB,MAAM+N,0BAE9C8tB,GAA6Cr8B,EAAAA,EAAAA,KACjD,IACE,CAAC,gBAAiB,+BAA+BoN,SAAS9O,EAAM6mB,UAC/DpjB,EAAUvB,MAAMgO,2BAEfoE,GAAatS,EAAAA,EAAAA,KAAI,GAEvB,SAAS67B,EAAchX,GACrB,OAAQA,GACN,IAAK,gBACL,IAAK,QACH,MAAO,iBACT,QACE,MAAO,WAAW7mB,EAAM6mB,OAAOM,gBAEpC,CACD,SAAS3S,IACPF,EAAWpS,OAAQ,CACpB,CACD,SAASwS,EAAeR,GACtBhF,EAASgF,SAAWA,CACrB,CACD,SAASjF,EAASkd,GAChB,OAAQA,GACN,IAAK,QACH,OAAKnsB,EAAM+rB,MAMJvyB,EAAM8I,SAAS7I,EAAAA,GAAAA,QAAAA,oBAA6C,CACjEya,SAAUhF,EAASgF,SACnB6X,MAAO/rB,EAAM+rB,QAPNvyB,EAAMmR,OACX7I,EAAAA,GAAAA,UAAAA,mBACA,sBAON,IAAK,gBACH,OAAOtI,EAAM8I,SACX7I,EAAAA,GAAAA,QAAAA,4BACA,CACEmZ,MAAO1D,EAAS0D,QAGtB,IAAK,8BACH,OAAOpZ,EAAM8I,SACX7I,EAAAA,GAAAA,QAAAA,kCACA,CACEmZ,MAAO1D,EAAS0D,QAGtB,QACE1D,EAAS,YAAcrN,EAASK,MAChC1I,EAAM8I,SAAS7I,EAAAA,GAAAA,QAAAA,kBAA2C,CACxD0yB,aACAjd,WACAkd,YAAa3kB,EAAMuJ,MAAMoS,OAGhC,CACD,SAAS4a,IACP9uB,EAAShM,SAAW,GACpBgM,EAAS0D,MAAQ,GACjB1D,EAASgF,SAAW,EACrB,CAkBH,OAhBExJ,EAAAA,EAAAA,KAAY,IAAMlR,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,yBAE/BwE,EAAAA,EAAAA,KACE,IAAMmB,EAAMO,OACZgN,UACExb,EAAMmR,OAAO7I,EAAAA,GAAAA,UAAAA,sBACbtI,EAAMmR,OAAOlR,EAAAA,GAAAA,UAAAA,mBAA6C,GAC1DD,EAAMmR,OACJlR,EAAAA,GAAAA,UAAAA,gCACA,GAEF6a,EAAWpS,OAAQ,EACnB87B,GAAe,IAId,CAAC19B,EAAUC,KAChB,MAAMo9B,GAA0Bl9B,EAAAA,EAAAA,IAAkB,gBAC5CD,GAAyBC,EAAAA,EAAAA,IAAkB,eAC3CoK,GAA0BpK,EAAAA,EAAAA,IAAkB,gBAElD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/C9B,GAAI,iBACJE,OAAO+D,EAAAA,EAAAA,IAAgB,GACrB,CAAC,QAAS,iBAAiBgM,UAAShO,EAAAA,EAAAA,IAAO+lB,KAAW/lB,EAAAA,EAAAA,IAAO+lB,GAAU,gBAExE,EACD3nB,EAAAA,EAAAA,GAAoB,MAAON,EAAY,EACrCM,EAAAA,EAAAA,GAAoB,MAAO,CACzBH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAC,WAAY,CAClCiD,UAAUjF,EAAAA,EAAAA,IAAOg9B,OAElB,EACAh9B,EAAAA,EAAAA,IAAOg9B,KACHp9B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa26B,EAAyB,CACnDtiC,IAAK,EACLpB,QAAS,6BAEXmH,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOi9B,KACHr9B,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa26B,EAAyB,CACnDtiC,IAAK,EACLpB,QAAS,mCAEXmH,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAOsT,KAActT,EAAAA,EAAAA,IAAO2rB,KACxB/rB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO7B,GAAY+B,EAAAA,EAAAA,IAAiBP,EAAKY,GAC1E,6BACEJ,EAAAA,EAAAA,IAAO2rB,GACH,iBACE3rB,EAAAA,EAAAA,IAAO2C,GAAWyM,yBAA2B,cAAgB,IAE/D,YAEJ,KACJ9O,EAAAA,EAAAA,IAAoB,IAAI,IAC5BlC,EAAAA,EAAAA,GAAoB,OAAQ,CAC1BH,OAAO+D,EAAAA,EAAAA,IAAgB,CAAEuS,OAAQf,EAAWpS,QAC5C+M,SAAU1O,EAAO,KAAOA,EAAO,IAAK6O,EAAAA,EAAAA,KAAgBzM,GAAiBsM,GAASnO,EAAAA,EAAAA,IAAO+lB,KAAW,CAAC,cAChG,EACD3nB,EAAAA,EAAAA,GAAoB,MAAOF,EAAY,CACjB,cAAnB8B,EAAAA,EAAAA,IAAO+lB,IACJtgB,EAAAA,EAAAA,MAAiB7F,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAAS,CAC1DtF,IAAK,EACLwD,GAAI,WACJkH,UAAUjF,EAAAA,EAAAA,IAAOg9B,GACjBxoB,SAAU,GACV2oB,QAAS,gBACTlG,UAAW,IACXmG,UAAW,KACX3oB,UAAWf,EACX,sBAAuBjU,EAAO,KAAOA,EAAO,GAAMoC,GAAkBuM,EAAShM,SAAYP,GACzF2O,YAAahR,EAAKY,GAAG,kBACpB,KAAM,GAAIjC,IAAc,CACzB,CAACyH,EAAAA,GAAawI,EAAShM,aAEzB9B,EAAAA,EAAAA,IAAoB,IAAI,GACR,cAAnBN,EAAAA,EAAAA,IAAO+lB,KACHnmB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOxB,EAAY,CACpDC,GACAwB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,uBAAwB,OAE1EE,EAAAA,EAAAA,IAAoB,IAAI,GACR,WAAnBN,EAAAA,EAAAA,IAAO+lB,IACJtgB,EAAAA,EAAAA,MAAiB7F,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,QAAS,CAC1DtF,IAAK,EACLwD,GAAI,QACJkH,UAAUjF,EAAAA,EAAAA,IAAOg9B,KAA0Bh9B,EAAAA,EAAAA,IAAOi9B,GAClDzoB,SAAU,GACVC,UAAWf,EACXxO,KAAM,QACN,sBAAuBzF,EAAO,KAAOA,EAAO,GAAMoC,GAAkBuM,EAAS0D,MAASjQ,GACtF2O,YAAahR,EAAKY,GAAG,eACpB,KAAM,GAAI7B,IAAc,CACzB,CAACqH,EAAAA,GAAawI,EAAS0D,UAEzBxR,EAAAA,EAAAA,IAAoB,IAAI,GAExB,CACE,gBACA,WACA,+BACA0N,UAAShO,EAAAA,EAAAA,IAAO+lB,MAEjBnmB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOrB,EAAY,CACpDC,GACAqB,EAAAA,EAAAA,IAAiB,KAAMC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,oBAAqB,OAEvEE,EAAAA,EAAAA,IAAoB,IAAI,GAEvB,CAAC,8BAA+B,iBAAiB0N,UAChDhO,EAAAA,EAAAA,IAAO+lB,KAiBTzlB,EAAAA,EAAAA,IAAoB,IAAI,KAdvBV,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAawS,EAAAA,EAAe,CACzCna,IAAK,EACL0K,UAAUjF,EAAAA,EAAAA,IAAOg9B,GACjBxoB,UAAU,EACVhE,YACiB,WAAnBxQ,EAAAA,EAAAA,IAAO+lB,GACHvmB,EAAKY,GAAG,uBACRZ,EAAKY,GAAG,iBAEVgT,SAAUhF,EAASgF,SACnByB,cAAe,CAAC,QAAS,YAAY7G,UAAShO,EAAAA,EAAAA,IAAO+lB,IACrDpR,iBAAkBf,EAClBgB,gBAAiBlB,GAChB,KAAM,EAAG,CAAC,WAAY,cAAe,WAAY,sBAG1DtV,EAAAA,EAAAA,GAAoB,SAAU,CAC5B8G,KAAM,SACND,UAAUjF,EAAAA,EAAAA,IAAOg9B,KAA0Bh9B,EAAAA,EAAAA,IAAOi9B,KACjDl9B,EAAAA,EAAAA,IAAiBP,EAAKY,IAAGJ,EAAAA,EAAAA,IAAOw0B,KAAe,EAAG91B,IACpD,IACiB,WAAnBsB,EAAAA,EAAAA,IAAO+lB,KACHnmB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOlB,EAAa,EACrDsB,EAAAA,EAAAA,IAAaP,EAAwB,CACnCzB,MAAO,QACPiC,GAAI,aACH,CACDtF,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,kBAAmB,MAE/DC,EAAG,KAEJL,EAAAA,EAAAA,IAAO2C,GAAWyM,2BACdxP,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,OAAQjB,EAAa,OACxD0B,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAO2C,GAAWyM,2BACdxP,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAaxC,EAAwB,CAClDnF,IAAK,EACL0D,MAAO,QACPiC,GAAI,2BACH,CACDtF,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,4BAA6B,MAEzEC,EAAG,MAELC,EAAAA,EAAAA,IAAoB,IAAI,OAE9BA,EAAAA,EAAAA,IAAoB,IAAI,GACR,cAAnBN,EAAAA,EAAAA,IAAO+lB,KACHnmB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOkN,EAAa,EACrD3O,EAAAA,EAAAA,GAAoB,OAAQ4O,GAAajN,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,8BAA+B,IACjGH,EAAAA,EAAAA,IAAaP,EAAwB,CACnCzB,MAAO,QACPiC,GAAI,UACH,CACDtF,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,eAAgB,MAE5DC,EAAG,QAGPC,EAAAA,EAAAA,IAAoB,IAAI,GAExB,CAAC,QAAS,YAAY0N,UAAShO,EAAAA,EAAAA,IAAO+lB,MACtC/lB,EAAAA,EAAAA,IAAO2C,GAAWyM,2BAEjBxP,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOoN,EAAa,EACrDhN,EAAAA,EAAAA,IAAaP,EAAwB,CACnCzB,MAAO,QACPiC,GAAI,gCACH,CACDtF,SAASuF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAiBP,EAAKY,GAAG,2CAA4C,MAExFC,EAAG,QAGPC,EAAAA,EAAAA,IAAoB,IAAI,IAC3BN,EAAAA,EAAAA,IAAO2J,KACH/J,EAAAA,EAAAA,OAAcsC,EAAAA,EAAAA,IAAa6H,EAAyB,CACnDxP,IAAK,EACLpB,SAAS6G,EAAAA,EAAAA,IAAO2J,IACf,KAAM,EAAG,CAAC,cACbrJ,EAAAA,EAAAA,IAAoB,IAAI,IAC3B,MAEJ,EApLH,CAsLD,I,UC1WD,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,sGCLA,MAAMzC,EAAa,CAAEG,MAAO,gBACtBD,EAAa,CAAC,MAAO,OACrBE,EAAa,CACjB3D,IAAK,EACL0D,MAAO,cAEHE,GAA0BC,EAAAA,EAAAA,GAAoB,IAAK,CACvDH,MAAO,sBACP,cAAe,QACd,MAAO,GACJI,EAAa,CACjBF,GAYF,OAA4Ba,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,cACRC,MAAO,CACLrC,KAAM,MAERwC,MAAMC,GAER,MAAMJ,EAAQI,EAMN+9B,GAAqBz8B,EAAAA,EAAAA,KAAS,IAClC1B,EAAMrC,KAAKiZ,QACP,IAAGhe,EAAAA,EAAAA,aAAoBoH,EAAMrC,KAAKuF,oBAAoBgT,KAAKkoB,QAC3D,KAGR,MAAO,CAAC99B,EAAUC,MACRG,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO/B,EAAY,CAC3B,MAA/BkC,EAAAA,EAAAA,IAAOq9B,KACHz9B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CACxCtF,IAAK,EACL0D,MAAO,mBACP4e,IAAKrd,EAAKY,GAAG,qBACbwc,KAAK5c,EAAAA,EAAAA,IAAOq9B,IACX,KAAM,EAAGr/B,MACX4B,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAYG,MAG7D,ICpDD,MAAMkC,EAAc,EAEpB,O,qGCNOtC,MAAM,mB,kEAAX4B,EAAAA,EAAAA,IAOM,MAPN,EAOM,EANJzB,EAAAA,EAAAA,GAKM,8BAJDoB,EAAAA,GAAE,yBAA2B,IAChC,IAAAS,EAAAA,EAAAA,IAEcP,EAAA,CAFDQ,GAAG,iBAAe,C,kBAC7B,IAAyC,mBAAtCV,EAAAA,GAAE,wC,wBCJb,MAAMiK,EAAS,CAAC,EAKVlJ,GAA2B,OAAgBkJ,EAAQ,CAAC,CAAC,SAASxB,GAAQ,CAAC,YAAY,qBAEzF,O,uBCRA,IAAIlB,EAAM,CACT,aAAc,KACd,aAAc,KACd,aAAc,MAIf,SAASw2B,EAAeC,GACvB,IAAIz/B,EAAK0/B,EAAsBD,GAC/B,OAAOE,EAAoB3/B,EAC5B,CACA,SAAS0/B,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE52B,EAAKy2B,GAAM,CACpC,IAAIp5B,EAAI,IAAIyf,MAAM,uBAAyB2Z,EAAM,KAEjD,MADAp5B,EAAEw5B,KAAO,mBACHx5B,CACP,CACA,OAAO2C,EAAIy2B,EACZ,CACAD,EAAeljC,KAAO,WACrB,OAAO0T,OAAO1T,KAAK0M,EACpB,EACAw2B,EAAeM,QAAUJ,EACzBK,EAAOC,QAAUR,EACjBA,EAAex/B,GAAK,I,GCvBhBigC,EAA2B,CAAC,EAGhC,SAASN,EAAoBO,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqB3yB,IAAjB4yB,EACH,OAAOA,EAAaH,QAGrB,IAAID,EAASE,EAAyBC,GAAY,CAGjDF,QAAS,CAAC,GAOX,OAHAI,EAAoBF,GAAUG,KAAKN,EAAOC,QAASD,EAAQA,EAAOC,QAASL,GAGpEI,EAAOC,OACf,CAGAL,EAAoBrN,EAAI8N,E,WCzBxB,IAAIE,EAAW,GACfX,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASxd,EAAI,EAAGA,EAAIid,EAAS3jC,OAAQ0mB,IAAK,CACrCod,EAAWH,EAASjd,GAAG,GACvBqd,EAAKJ,EAASjd,GAAG,GACjBsd,EAAWL,EAASjd,GAAG,GAE3B,IAJA,IAGIyd,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAAS9jC,OAAQokC,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAa3wB,OAAO1T,KAAKqjC,EAAoBY,GAAGS,OAAM,SAASxkC,GAAO,OAAOmjC,EAAoBY,EAAE/jC,GAAKikC,EAASM,GAAK,IAChKN,EAASrlB,OAAO2lB,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbR,EAASllB,OAAOiI,IAAK,GACrB,IAAI/Y,EAAIo2B,SACEnzB,IAANjD,IAAiBk2B,EAASl2B,EAC/B,CACD,CACA,OAAOk2B,CArBP,CAJCG,EAAWA,GAAY,EACvB,IAAI,IAAItd,EAAIid,EAAS3jC,OAAQ0mB,EAAI,GAAKid,EAASjd,EAAI,GAAG,GAAKsd,EAAUtd,IAAKid,EAASjd,GAAKid,EAASjd,EAAI,GACrGid,EAASjd,GAAK,CAACod,EAAUC,EAAIC,EAwB/B,C,eC5BAhB,EAAoB//B,EAAI,SAASmgC,GAChC,IAAIkB,EAASlB,GAAUA,EAAOmB,WAC7B,WAAa,OAAOnB,EAAO,UAAY,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAJ,EAAoB11B,EAAEg3B,EAAQ,CAAE/a,EAAG+a,IAC5BA,CACR,C,eCPA,IACIE,EADAC,EAAWpxB,OAAOqxB,eAAiB,SAASC,GAAO,OAAOtxB,OAAOqxB,eAAeC,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIC,SAAW,EAQpI5B,EAAoBruB,EAAI,SAASjO,EAAO85B,GAEvC,GADU,EAAPA,IAAU95B,EAAQm+B,KAAKn+B,IAChB,EAAP85B,EAAU,OAAO95B,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP85B,GAAa95B,EAAM69B,WAAY,OAAO79B,EAC1C,GAAW,GAAP85B,GAAoC,oBAAf95B,EAAMonB,KAAqB,OAAOpnB,CAC5D,CACA,IAAIo+B,EAAKzxB,OAAO0xB,OAAO,MACvB/B,EAAoBr1B,EAAEm3B,GACtB,IAAIE,EAAM,CAAC,EACXR,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIQ,EAAiB,EAAPzE,GAAY95B,EAAyB,iBAAXu+B,KAAyBT,EAAehmB,QAAQymB,GAAUA,EAAUR,EAASQ,GACxH5xB,OAAO6xB,oBAAoBD,GAASrlC,SAAQ,SAASC,GAAOmlC,EAAInlC,GAAO,WAAa,OAAO6G,EAAM7G,EAAM,CAAG,IAI3G,OAFAmlC,EAAI,WAAa,WAAa,OAAOt+B,CAAO,EAC5Cs8B,EAAoB11B,EAAEw3B,EAAIE,GACnBF,CACR,C,eCxBA9B,EAAoB11B,EAAI,SAAS+1B,EAAS8B,GACzC,IAAI,IAAItlC,KAAOslC,EACXnC,EAAoBC,EAAEkC,EAAYtlC,KAASmjC,EAAoBC,EAAEI,EAASxjC,IAC5EwT,OAAO+xB,eAAe/B,EAASxjC,EAAK,CAAEwlC,YAAY,EAAMjmC,IAAK+lC,EAAWtlC,IAG3E,C,eCPAmjC,EAAoBsC,EAAI,CAAC,EAGzBtC,EAAoBt5B,EAAI,SAAS67B,GAChC,OAAOjnC,QAAQknC,IAAInyB,OAAO1T,KAAKqjC,EAAoBsC,GAAG1b,QAAO,SAAS6b,EAAU5lC,GAE/E,OADAmjC,EAAoBsC,EAAEzlC,GAAK0lC,EAASE,GAC7BA,CACR,GAAG,IACJ,C,eCPAzC,EAAoB0C,EAAI,SAASH,GAEhC,MAAO,cAAgB,CAAC,GAAK,QAAQ,IAAM,aAAa,IAAM,QAAQ,IAAM,WAAW,IAAM,UAAU,IAAM,YAAYA,IAAYA,GAAW,IAAM,CAAC,GAAK,WAAW,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,YAAYA,GAAW,KAC7V,C,eCHAvC,EAAoB2C,SAAW,SAASJ,GAEvC,MAAO,cAAgB,CAAC,GAAK,QAAQ,IAAM,aAAa,IAAM,QAAQ,IAAM,WAAW,IAAM,WAAWA,GAAW,IAAM,CAAC,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,YAAYA,GAAW,MAC3N,C,eCJAvC,EAAoB4C,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOhB,MAAQ,IAAIiB,SAAS,cAAb,EAGhB,CAFE,MAAOp8B,GACR,GAAsB,kBAAXhB,OAAqB,OAAOA,MACxC,CACA,CAPuB,E,eCAxBs6B,EAAoBC,EAAI,SAAS0B,EAAKoB,GAAQ,OAAO1yB,OAAO2yB,UAAUC,eAAevC,KAAKiB,EAAKoB,EAAO,C,eCAtG,IAAIG,EAAa,CAAC,EACdC,EAAoB,qBAExBnD,EAAoBhN,EAAI,SAASn3B,EAAKunC,EAAMvmC,EAAK0lC,GAChD,GAAGW,EAAWrnC,GAAQqnC,EAAWrnC,GAAKwI,KAAK++B,OAA3C,CACA,IAAIr3B,EAAQs3B,EACZ,QAAWz1B,IAAR/Q,EAEF,IADA,IAAIymC,EAAUv9B,SAASw9B,qBAAqB,UACpC7f,EAAI,EAAGA,EAAI4f,EAAQtmC,OAAQ0mB,IAAK,CACvC,IAAI9C,EAAI0iB,EAAQ5f,GAChB,GAAG9C,EAAE4iB,aAAa,QAAU3nC,GAAO+kB,EAAE4iB,aAAa,iBAAmBL,EAAoBtmC,EAAK,CAAEkP,EAAS6U,EAAG,KAAO,CACpH,CAEG7U,IACHs3B,GAAa,EACbt3B,EAAShG,SAAS09B,cAAc,UAEhC13B,EAAO23B,QAAU,QACjB33B,EAAO43B,QAAU,IACb3D,EAAoB4D,IACvB73B,EAAOyiB,aAAa,QAASwR,EAAoB4D,IAElD73B,EAAOyiB,aAAa,eAAgB2U,EAAoBtmC,GACxDkP,EAAOmT,IAAMrjB,GAEdqnC,EAAWrnC,GAAO,CAACunC,GACnB,IAAIS,EAAmB,SAASC,EAAMj8B,GAErCkE,EAAOg4B,QAAUh4B,EAAOi4B,OAAS,KACjC9M,aAAayM,GACb,IAAIM,EAAUf,EAAWrnC,GAIzB,UAHOqnC,EAAWrnC,GAClBkQ,EAAOm4B,YAAcn4B,EAAOm4B,WAAWC,YAAYp4B,GACnDk4B,GAAWA,EAAQrnC,SAAQ,SAASmkC,GAAM,OAAOA,EAAGl5B,EAAQ,IACzDi8B,EAAM,OAAOA,EAAKj8B,EACtB,EAEI87B,EAAUv9B,WAAWy9B,EAAiBO,KAAK,UAAMx2B,EAAW,CAAEpG,KAAM,UAAWpG,OAAQ2K,IAAW,MACtGA,EAAOg4B,QAAUF,EAAiBO,KAAK,KAAMr4B,EAAOg4B,SACpDh4B,EAAOi4B,OAASH,EAAiBO,KAAK,KAAMr4B,EAAOi4B,QACnDX,GAAct9B,SAASs+B,KAAKC,YAAYv4B,EApCkB,CAqC3D,C,eCxCAi0B,EAAoBr1B,EAAI,SAAS01B,GACX,qBAAXkE,QAA0BA,OAAOC,aAC1Cn0B,OAAO+xB,eAAe/B,EAASkE,OAAOC,YAAa,CAAE9gC,MAAO,WAE7D2M,OAAO+xB,eAAe/B,EAAS,aAAc,CAAE38B,OAAO,GACvD,C,eCNAs8B,EAAoByE,EAAI,G,eCAxB,IAAIC,EAAmB,SAASnC,EAASoC,EAAUxE,EAAS5kC,GAC3D,IAAIqpC,EAAU7+B,SAAS09B,cAAc,QAErCmB,EAAQvjC,IAAM,aACdujC,EAAQp9B,KAAO,WACf,IAAIq9B,EAAiB,SAASh9B,GAG7B,GADA+8B,EAAQb,QAAUa,EAAQZ,OAAS,KAChB,SAAfn8B,EAAML,KACT24B,QACM,CACN,IAAI2E,EAAYj9B,IAAyB,SAAfA,EAAML,KAAkB,UAAYK,EAAML,MAChEu9B,EAAWl9B,GAASA,EAAMzG,QAAUyG,EAAMzG,OAAOD,MAAQwjC,EACzDK,EAAM,IAAI7e,MAAM,qBAAuBoc,EAAU,cAAgBwC,EAAW,KAChFC,EAAI9E,KAAO,wBACX8E,EAAIx9B,KAAOs9B,EACXE,EAAI1qC,QAAUyqC,EACdH,EAAQV,WAAWC,YAAYS,GAC/BrpC,EAAOypC,EACR,CACD,EAKA,OAJAJ,EAAQb,QAAUa,EAAQZ,OAASa,EACnCD,EAAQzjC,KAAOwjC,EAEf5+B,SAASs+B,KAAKC,YAAYM,GACnBA,CACR,EACIK,EAAiB,SAAS9jC,EAAMwjC,GAEnC,IADA,IAAIO,EAAmBn/B,SAASw9B,qBAAqB,QAC7C7f,EAAI,EAAGA,EAAIwhB,EAAiBloC,OAAQ0mB,IAAK,CAChD,IAAI+E,EAAMyc,EAAiBxhB,GACvByhB,EAAW1c,EAAI+a,aAAa,cAAgB/a,EAAI+a,aAAa,QACjE,GAAe,eAAZ/a,EAAIpnB,MAAyB8jC,IAAahkC,GAAQgkC,IAAaR,GAAW,OAAOlc,CACrF,CACA,IAAI2c,EAAoBr/B,SAASw9B,qBAAqB,SACtD,IAAQ7f,EAAI,EAAGA,EAAI0hB,EAAkBpoC,OAAQ0mB,IAAK,CAC7C+E,EAAM2c,EAAkB1hB,GACxByhB,EAAW1c,EAAI+a,aAAa,aAChC,GAAG2B,IAAahkC,GAAQgkC,IAAaR,EAAU,OAAOlc,CACvD,CACD,EACI4c,EAAiB,SAAS9C,GAC7B,OAAO,IAAIjnC,SAAQ,SAAS6kC,EAAS5kC,GACpC,IAAI4F,EAAO6+B,EAAoB2C,SAASJ,GACpCoC,EAAW3E,EAAoByE,EAAItjC,EACvC,GAAG8jC,EAAe9jC,EAAMwjC,GAAW,OAAOxE,IAC1CuE,EAAiBnC,EAASoC,EAAUxE,EAAS5kC,EAC9C,GACD,EAEI+pC,EAAqB,CACxB,IAAK,GAGNtF,EAAoBsC,EAAEiD,QAAU,SAAShD,EAASE,GACjD,IAAI+C,EAAY,CAAC,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,GACnDF,EAAmB/C,GAAUE,EAASp+B,KAAKihC,EAAmB/C,IACzB,IAAhC+C,EAAmB/C,IAAkBiD,EAAUjD,IACtDE,EAASp+B,KAAKihC,EAAmB/C,GAAW8C,EAAe9C,GAASzX,MAAK,WACxEwa,EAAmB/C,GAAW,CAC/B,IAAG,SAAS77B,GAEX,aADO4+B,EAAmB/C,GACpB77B,CACP,IAEF,C,eC5DA,IAAI++B,EAAkB,CACrB,IAAK,GAGNzF,EAAoBsC,EAAElB,EAAI,SAASmB,EAASE,GAE1C,IAAIiD,EAAqB1F,EAAoBC,EAAEwF,EAAiBlD,GAAWkD,EAAgBlD,QAAW30B,EACtG,GAA0B,IAAvB83B,EAGF,GAAGA,EACFjD,EAASp+B,KAAKqhC,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAIrqC,SAAQ,SAAS6kC,EAAS5kC,GAAUmqC,EAAqBD,EAAgBlD,GAAW,CAACpC,EAAS5kC,EAAS,IACzHknC,EAASp+B,KAAKqhC,EAAmB,GAAKC,GAGtC,IAAI9pC,EAAMmkC,EAAoByE,EAAIzE,EAAoB0C,EAAEH,GAEpDlnC,EAAQ,IAAI8qB,MACZyf,EAAe,SAAS/9B,GAC3B,GAAGm4B,EAAoBC,EAAEwF,EAAiBlD,KACzCmD,EAAqBD,EAAgBlD,GACX,IAAvBmD,IAA0BD,EAAgBlD,QAAW30B,GACrD83B,GAAoB,CACtB,IAAIZ,EAAYj9B,IAAyB,SAAfA,EAAML,KAAkB,UAAYK,EAAML,MAChEq+B,EAAUh+B,GAASA,EAAMzG,QAAUyG,EAAMzG,OAAO8d,IACpD7jB,EAAMI,QAAU,iBAAmB8mC,EAAU,cAAgBuC,EAAY,KAAOe,EAAU,IAC1FxqC,EAAMgM,KAAO,iBACbhM,EAAMmM,KAAOs9B,EACbzpC,EAAMf,QAAUurC,EAChBH,EAAmB,GAAGrqC,EACvB,CAEF,EACA2kC,EAAoBhN,EAAEn3B,EAAK+pC,EAAc,SAAWrD,EAASA,EAE/D,CAEH,EAUAvC,EAAoBY,EAAEQ,EAAI,SAASmB,GAAW,OAAoC,IAA7BkD,EAAgBlD,EAAgB,EAGrF,IAAIuD,EAAuB,SAASC,EAA4BhqC,GAC/D,IAKIwkC,EAAUgC,EALVzB,EAAW/kC,EAAK,GAChBiqC,EAAcjqC,EAAK,GACnBkqC,EAAUlqC,EAAK,GAGI2nB,EAAI,EAC3B,GAAGod,EAASoF,MAAK,SAAS7lC,GAAM,OAA+B,IAAxBolC,EAAgBplC,EAAW,IAAI,CACrE,IAAIkgC,KAAYyF,EACZhG,EAAoBC,EAAE+F,EAAazF,KACrCP,EAAoBrN,EAAE4N,GAAYyF,EAAYzF,IAGhD,GAAG0F,EAAS,IAAIpF,EAASoF,EAAQjG,EAClC,CAEA,IADG+F,GAA4BA,EAA2BhqC,GACrD2nB,EAAIod,EAAS9jC,OAAQ0mB,IACzB6e,EAAUzB,EAASpd,GAChBsc,EAAoBC,EAAEwF,EAAiBlD,IAAYkD,EAAgBlD,IACrEkD,EAAgBlD,GAAS,KAE1BkD,EAAgBlD,GAAW,EAE5B,OAAOvC,EAAoBY,EAAEC,EAC9B,EAEIsF,EAAqBC,KAAK,iCAAmCA,KAAK,kCAAoC,GAC1GD,EAAmBvpC,QAAQkpC,EAAqB1B,KAAK,KAAM,IAC3D+B,EAAmB9hC,KAAOyhC,EAAqB1B,KAAK,KAAM+B,EAAmB9hC,KAAK+/B,KAAK+B,G,ICpFvF,IAAIE,EAAsBrG,EAAoBY,OAAEhzB,EAAW,CAAC,MAAM,WAAa,OAAOoyB,EAAoB,KAAO,IACjHqG,EAAsBrG,EAAoBY,EAAEyF,E","sources":["webpack://fittrackee_client/./src/api/authApi.ts","webpack://fittrackee_client/./src/api/pending.ts","webpack://fittrackee_client/./src/i18n.ts","webpack://fittrackee_client/./src/locales/de/about.json","webpack://fittrackee_client/./src/locales/de/administration.json","webpack://fittrackee_client/./src/locales/de/api.json","webpack://fittrackee_client/./src/locales/de/buttons.json","webpack://fittrackee_client/./src/locales/de/common.json","webpack://fittrackee_client/./src/locales/de/dashboard.json","webpack://fittrackee_client/./src/locales/de/error.json","webpack://fittrackee_client/./src/locales/de/oauth2.json","webpack://fittrackee_client/./src/locales/de/sports.json","webpack://fittrackee_client/./src/locales/de/statistics.json","webpack://fittrackee_client/./src/locales/de/user.json","webpack://fittrackee_client/./src/locales/de/workouts.json","webpack://fittrackee_client/./src/locales/de/de.ts","webpack://fittrackee_client/./src/locales/en/about.json","webpack://fittrackee_client/./src/locales/en/administration.json","webpack://fittrackee_client/./src/locales/en/api.json","webpack://fittrackee_client/./src/locales/en/buttons.json","webpack://fittrackee_client/./src/locales/en/common.json","webpack://fittrackee_client/./src/locales/en/dashboard.json","webpack://fittrackee_client/./src/locales/en/error.json","webpack://fittrackee_client/./src/locales/en/oauth2.json","webpack://fittrackee_client/./src/locales/en/sports.json","webpack://fittrackee_client/./src/locales/en/statistics.json","webpack://fittrackee_client/./src/locales/en/user.json","webpack://fittrackee_client/./src/locales/en/workouts.json","webpack://fittrackee_client/./src/locales/en/en.ts","webpack://fittrackee_client/./src/locales/fr/about.json","webpack://fittrackee_client/./src/locales/fr/administration.json","webpack://fittrackee_client/./src/locales/fr/api.json","webpack://fittrackee_client/./src/locales/fr/buttons.json","webpack://fittrackee_client/./src/locales/fr/common.json","webpack://fittrackee_client/./src/locales/fr/dashboard.json","webpack://fittrackee_client/./src/locales/fr/error.json","webpack://fittrackee_client/./src/locales/fr/oauth2.json","webpack://fittrackee_client/./src/locales/fr/sports.json","webpack://fittrackee_client/./src/locales/fr/statistics.json","webpack://fittrackee_client/./src/locales/fr/user.json","webpack://fittrackee_client/./src/locales/fr/workouts.json","webpack://fittrackee_client/./src/locales/fr/fr.ts","webpack://fittrackee_client/./src/registerServiceWorker.ts","webpack://fittrackee_client/./src/components/Footer.vue?771f","webpack://fittrackee_client/./src/components/Footer.vue","webpack://fittrackee_client/./src/components/NavBar.vue?9bec","webpack://fittrackee_client/./src/components/NavBar.vue","webpack://fittrackee_client/./src/components/NoConfig.vue?541b","webpack://fittrackee_client/./src/components/NoConfig.vue","webpack://fittrackee_client/./src/App.vue?2a5e","webpack://fittrackee_client/./src/App.vue","webpack://fittrackee_client/./src/components/Common/AlertMessage.vue?3150","webpack://fittrackee_client/./src/components/Common/AlertMessage.vue","webpack://fittrackee_client/./src/components/Common/CustomTextArea.vue?8efa","webpack://fittrackee_client/./src/components/Common/CustomTextArea.vue","webpack://fittrackee_client/./src/components/Common/Distance.vue?edec","webpack://fittrackee_client/./src/components/Common/Distance.vue","webpack://fittrackee_client/./src/components/Common/Dropdown.vue?f7d5","webpack://fittrackee_client/./src/components/Common/Dropdown.vue","webpack://fittrackee_client/./src/components/Common/ErrorMessage.vue?c328","webpack://fittrackee_client/./src/components/Common/ErrorMessage.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingSport.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingSport.vue?4f4b","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingTransport.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingTransport.vue?a81c","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Hiking.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Hiking.vue?cf60","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBiking.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBiking.vue?8a30","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBikingElectric.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBikingElectric.vue?f7ee","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Rowing.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Rowing.vue?c24b","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Running.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Running.vue?2cd2","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingAlpine.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingAlpine.vue?f1ff","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingCrossCountry.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingCrossCountry.vue?f0db","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Snowshoes.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Snowshoes.vue?cfb7","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Trail.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Trail.vue?5564","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Walking.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Walking.vue?f92f","webpack://fittrackee_client/./src/components/Common/Images/SportImage/index.vue?1cdd","webpack://fittrackee_client/./src/components/Common/Images/SportImage/index.vue","webpack://fittrackee_client/./src/components/Common/Loader.vue","webpack://fittrackee_client/./src/components/Common/Loader.vue?0b74","webpack://fittrackee_client/./src/components/Common/Modal.vue?0d9d","webpack://fittrackee_client/./src/components/Common/Modal.vue","webpack://fittrackee_client/./src/custom-components.ts","webpack://fittrackee_client/./src/directives.ts","webpack://fittrackee_client/./src/main.ts","webpack://fittrackee_client/./src/components/Administration/AdminApplication.vue?dc32","webpack://fittrackee_client/./src/components/Administration/AdminApplication.vue","webpack://fittrackee_client/./src/components/Common/StatCard.vue?3301","webpack://fittrackee_client/./src/components/Common/StatCard.vue","webpack://fittrackee_client/./src/components/Administration/AppStatsCards.vue?60fb","webpack://fittrackee_client/./src/components/Administration/AppStatsCards.vue","webpack://fittrackee_client/./src/components/Administration/AdminMenu.vue?0597","webpack://fittrackee_client/./src/components/Administration/AdminMenu.vue","webpack://fittrackee_client/./src/components/Administration/AdminSports.vue?05cc","webpack://fittrackee_client/./src/components/Administration/AdminSports.vue","webpack://fittrackee_client/./src/components/Users/UsersNameFilter.vue?0a55","webpack://fittrackee_client/./src/components/Users/UsersNameFilter.vue","webpack://fittrackee_client/./src/components/Administration/AdminUsers.vue?5a76","webpack://fittrackee_client/./src/components/Administration/AdminUsers.vue","webpack://fittrackee_client/./src/components/User/UserProfileTabs.vue?63ef","webpack://fittrackee_client/./src/components/User/UserProfileTabs.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/index.vue?c76d","webpack://fittrackee_client/./src/components/User/ProfileDisplay/index.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserPreferences.vue?a91b","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserPreferences.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/index.vue?8616","webpack://fittrackee_client/./src/components/User/ProfileEdition/index.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserAccountEdition.vue?a978","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserAccountEdition.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserInfosEdition.vue?38a2","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserInfosEdition.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPictureEdition.vue?05c1","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPictureEdition.vue","webpack://fittrackee_client/./src/utils/timezone.ts","webpack://fittrackee_client/./src/components/User/ProfileEdition/TimezoneDropdown.vue?5519","webpack://fittrackee_client/./src/components/User/ProfileEdition/TimezoneDropdown.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPreferencesEdition.vue?76a6","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPreferencesEdition.vue","webpack://fittrackee_client/./src/utils/oauth.ts","webpack://fittrackee_client/./src/components/User/UserApps/AddUserApp.vue?64f1","webpack://fittrackee_client/./src/components/User/UserApps/AddUserApp.vue","webpack://fittrackee_client/./src/components/User/UserApps/AuthorizeUserApp.vue?3371","webpack://fittrackee_client/./src/components/User/UserApps/AuthorizeUserApp.vue","webpack://fittrackee_client/./src/components/User/UserApps/index.vue?889c","webpack://fittrackee_client/./src/components/User/UserApps/index.vue","webpack://fittrackee_client/./src/components/User/UserApps/UserApp.vue?df25","webpack://fittrackee_client/./src/components/User/UserApps/UserApp.vue","webpack://fittrackee_client/./src/components/User/UserApps/UserAppsList.vue?6c20","webpack://fittrackee_client/./src/components/User/UserApps/UserAppsList.vue","webpack://fittrackee_client/./src/components/User/UserSportPreferences.vue?5e40","webpack://fittrackee_client/./src/components/User/UserSportPreferences.vue","webpack://fittrackee_client/./src/components/About.vue?b879","webpack://fittrackee_client/./src/components/About.vue","webpack://fittrackee_client/./src/components/BikePic.vue","webpack://fittrackee_client/./src/components/BikePic.vue?a9e2","webpack://fittrackee_client/./src/views/AboutView.vue?9f41","webpack://fittrackee_client/./src/views/AboutView.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutCard.vue?56e2","webpack://fittrackee_client/./src/components/Workout/WorkoutCard.vue","webpack://fittrackee_client/./src/components/Dashboard/Timeline.vue?046b","webpack://fittrackee_client/./src/components/Dashboard/Timeline.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkout.vue?609b","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkout.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/DonutChart.vue?08e2","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/DonutChart.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue?1aa0","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkouts.vue?7291","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkouts.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarCells.vue?b7e6","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarCells.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarDays.vue?4138","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarDays.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarHeader.vue?7e24","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarHeader.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/index.vue?c598","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/index.vue","webpack://fittrackee_client/./src/components/Dashboard/UserMonthStats.vue?9128","webpack://fittrackee_client/./src/components/Dashboard/UserMonthStats.vue","webpack://fittrackee_client/./src/utils/records.ts","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/RecordsCard.vue?9439","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/RecordsCard.vue","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/index.vue?7d56","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/index.vue","webpack://fittrackee_client/./src/components/Dashboard/UserStatsCards/index.vue?c362","webpack://fittrackee_client/./src/components/Dashboard/UserStatsCards/index.vue","webpack://fittrackee_client/./src/views/Dashboard.vue?95bb","webpack://fittrackee_client/./src/views/Dashboard.vue","webpack://fittrackee_client/./src/views/NotFoundView.vue?8c2c","webpack://fittrackee_client/./src/views/NotFoundView.vue","webpack://fittrackee_client/./src/views/user/LoginOrRegister.vue?46fb","webpack://fittrackee_client/./src/views/user/LoginOrRegister.vue","webpack://fittrackee_client/./src/router/index.ts","webpack://fittrackee_client/./src/store/modules/authUser/enums.ts","webpack://fittrackee_client/./src/store/modules/oauth2/enums.ts","webpack://fittrackee_client/./src/store/modules/root/enums.ts","webpack://fittrackee_client/./src/store/modules/sports/enums.ts","webpack://fittrackee_client/./src/store/modules/statistics/enums.ts","webpack://fittrackee_client/./src/store/modules/users/enums.ts","webpack://fittrackee_client/./src/store/constants.ts","webpack://fittrackee_client/./src/api/defaultApi.ts","webpack://fittrackee_client/./src/store/modules/users/actions.ts","webpack://fittrackee_client/./src/store/modules/authUser/actions.ts","webpack://fittrackee_client/./src/store/modules/authUser/getters.ts","webpack://fittrackee_client/./src/store/modules/authUser/mutations.ts","webpack://fittrackee_client/./src/store/modules/authUser/state.ts","webpack://fittrackee_client/./src/store/modules/authUser/index.ts","webpack://fittrackee_client/./src/store/modules/oauth2/actions.ts","webpack://fittrackee_client/./src/store/modules/oauth2/getters.ts","webpack://fittrackee_client/./src/store/modules/oauth2/mutations.ts","webpack://fittrackee_client/./src/store/modules/oauth2/state.ts","webpack://fittrackee_client/./src/store/modules/oauth2/index.ts","webpack://fittrackee_client/./src/store/modules/root/actions.ts","webpack://fittrackee_client/./src/store/modules/root/getters.ts","webpack://fittrackee_client/./src/store/modules/root/mutations.ts","webpack://fittrackee_client/./src/store/modules/root/state.ts","webpack://fittrackee_client/./src/store/modules/sports/actions.ts","webpack://fittrackee_client/./src/store/modules/sports/getters.ts","webpack://fittrackee_client/./src/store/modules/sports/mutations.ts","webpack://fittrackee_client/./src/store/modules/sports/state.ts","webpack://fittrackee_client/./src/store/modules/sports/index.ts","webpack://fittrackee_client/./src/store/modules/statistics/actions.ts","webpack://fittrackee_client/./src/store/modules/statistics/getters.ts","webpack://fittrackee_client/./src/store/modules/statistics/mutations.ts","webpack://fittrackee_client/./src/store/modules/statistics/state.ts","webpack://fittrackee_client/./src/store/modules/statistics/index.ts","webpack://fittrackee_client/./src/store/modules/users/getters.ts","webpack://fittrackee_client/./src/store/modules/users/mutations.ts","webpack://fittrackee_client/./src/store/modules/users/state.ts","webpack://fittrackee_client/./src/store/modules/users/index.ts","webpack://fittrackee_client/./src/store/modules/workouts/actions.ts","webpack://fittrackee_client/./src/store/modules/workouts/getters.ts","webpack://fittrackee_client/./src/store/modules/workouts/mutations.ts","webpack://fittrackee_client/./src/store/modules/workouts/state.ts","webpack://fittrackee_client/./src/store/modules/workouts/index.ts","webpack://fittrackee_client/./src/store/modules/root/index.ts","webpack://fittrackee_client/./src/store/index.ts","webpack://fittrackee_client/./src/store/modules/workouts/enums.ts","webpack://fittrackee_client/./src/use/useStore.ts","webpack://fittrackee_client/./src/utils/api.ts","webpack://fittrackee_client/./src/utils/dates.ts","webpack://fittrackee_client/./src/utils/files.ts","webpack://fittrackee_client/./src/utils/index.ts","webpack://fittrackee_client/./src/utils/locales.ts","webpack://fittrackee_client/./src/utils/sports.ts","webpack://fittrackee_client/./src/utils/statistics.ts","webpack://fittrackee_client/./src/utils/units.ts","webpack://fittrackee_client/./src/utils/workouts.ts","webpack://fittrackee_client/./src/components/Common/Card.vue","webpack://fittrackee_client/./src/components/Common/Card.vue?88f1","webpack://fittrackee_client/./src/components/Common/FilterSelects.vue?7823","webpack://fittrackee_client/./src/components/Common/FilterSelects.vue","webpack://fittrackee_client/./src/components/Common/Images/ErrorImg.vue","webpack://fittrackee_client/./src/components/Common/Images/ErrorImg.vue?6a2a","webpack://fittrackee_client/./src/components/Common/Error.vue?5a3e","webpack://fittrackee_client/./src/components/Common/Error.vue","webpack://fittrackee_client/./src/components/Common/NotFound.vue?45eb","webpack://fittrackee_client/./src/components/Common/NotFound.vue","webpack://fittrackee_client/./src/components/Common/Pagination.vue?e0b0","webpack://fittrackee_client/./src/components/Common/Pagination.vue","webpack://fittrackee_client/./src/utils/password.ts","webpack://fittrackee_client/./src/components/Common/PasswordStength.vue?1d44","webpack://fittrackee_client/./src/components/Common/PasswordStength.vue","webpack://fittrackee_client/./src/components/Common/PasswordInput.vue?e9ce","webpack://fittrackee_client/./src/components/Common/PasswordInput.vue","webpack://fittrackee_client/./src/components/Common/StaticMap.vue?d223","webpack://fittrackee_client/./src/components/Common/StaticMap.vue","webpack://fittrackee_client/./src/components/Common/StatsChart/index.vue?964a","webpack://fittrackee_client/./src/components/Common/StatsChart/Chart.vue?1063","webpack://fittrackee_client/./src/utils/duration.ts","webpack://fittrackee_client/./src/utils/tooltip.ts","webpack://fittrackee_client/./src/components/Common/StatsChart/Chart.vue?960e","webpack://fittrackee_client/./src/components/Common/StatsChart/Chart.vue","webpack://fittrackee_client/./src/components/Common/StatsChart/index.vue?279d","webpack://fittrackee_client/./src/components/Common/StatsChart/index.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserHeader.vue?bf09","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserHeader.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserInfos.vue?77c4","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserInfos.vue","webpack://fittrackee_client/./src/components/User/UserAuthForm.vue?09b2","webpack://fittrackee_client/./src/components/User/UserAuthForm.vue","webpack://fittrackee_client/./src/components/User/UserPicture.vue?4869","webpack://fittrackee_client/./src/components/User/UserPicture.vue","webpack://fittrackee_client/./src/components/Workouts/NoWorkouts.vue","webpack://fittrackee_client/./src/components/Workouts/NoWorkouts.vue?e10e","webpack://fittrackee_client/./src/locales/ sync [A-Za-z0-9-_,\\s]+\\.ts$/","webpack://fittrackee_client/webpack/bootstrap","webpack://fittrackee_client/webpack/runtime/chunk loaded","webpack://fittrackee_client/webpack/runtime/compat get default export","webpack://fittrackee_client/webpack/runtime/create fake namespace object","webpack://fittrackee_client/webpack/runtime/define property getters","webpack://fittrackee_client/webpack/runtime/ensure chunk","webpack://fittrackee_client/webpack/runtime/get javascript chunk filename","webpack://fittrackee_client/webpack/runtime/get mini-css chunk filename","webpack://fittrackee_client/webpack/runtime/global","webpack://fittrackee_client/webpack/runtime/hasOwnProperty shorthand","webpack://fittrackee_client/webpack/runtime/load script","webpack://fittrackee_client/webpack/runtime/make namespace object","webpack://fittrackee_client/webpack/runtime/publicPath","webpack://fittrackee_client/webpack/runtime/css loading","webpack://fittrackee_client/webpack/runtime/jsonp chunk loading","webpack://fittrackee_client/webpack/startup"],"sourcesContent":["import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport { getApiUrl } from '@/utils'\n\nconst authApi = axios.create({\n baseURL: getApiUrl(),\n})\n\nauthApi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nauthApi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default authApi\n","import { AxiosRequestConfig } from 'axios'\n\nexport const pendingRequests = new Map()\n\nconst generateRequestKey = (config: AxiosRequestConfig): string => {\n const { method, url, params = {}, data = {} } = config\n return [method, url, JSON.stringify(params), JSON.stringify(data)].join('')\n}\n\nexport const removeRequestIfPending = (config: AxiosRequestConfig): string => {\n const requestKey = generateRequestKey(config)\n if (pendingRequests.has(requestKey)) {\n const controller = pendingRequests.get(requestKey) || {}\n controller?.abort()\n pendingRequests.delete(requestKey)\n }\n return requestKey\n}\n","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nfunction loadLocaleMessages(): Record> {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: Record> = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (matched && matched.length > 1) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontaktiere den Administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"unter \", _interpolate(_list(0)), \" Lizenz \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quellkode\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiviere Konto\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt-E-Mail des Administrators\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Kontakt-E-Mail\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe der hochgeladenen Dateien (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungskonfiguration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe des zip Archives (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zu Admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Passwort zurücksetzen?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelle E-Mail\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lösche Nutzer\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail-Versand ist deaktiviert.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren/Deaktivieren von Sportarten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neue E-Mail\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit deaktiviert.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit aktiviert.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainings existieren\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten Administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere E-Mail\"])},\n \"USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzer\"])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte hinzufügen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte entfernen\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adminstatus\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accountstatus\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsanzahl\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail: Eine gültige E-Mail muss angegeben werden.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Abrufen der Konfiguration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Aktualisieren der Konfiguration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Die Registrierung ist deaktiviert.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dateierweiterung ist nicht erlaubt.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Datei ist größer als erlaubt.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültige Anmeldedaten.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die bereitgestellten Daten sind ungültig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei ausgewählt.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort: Passwort und Passwortbestätigung stimmen nicht überein.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein gültiges Authentifizierungstoken an.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es tut mir leid, der Benutzername ist schon vergeben.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportart existiert nicht.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut an.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Nutzer existiert nicht.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du hast keine Berechtigung.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigungs-E-Mail erneut senden\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorisieren\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter löschen\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mein Konto löschen\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deaktivieren\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bearbeiten\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurücksetzen\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speichern\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigung\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Tag\"]), _normalize([\"Tage\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Angezeigt\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dokumentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versteckt\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startseite\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pro Seite\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insgesamt\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Monat\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
                                                                              Bitte versuche es später noch einmal oder kontaktiere den Administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seite nicht gefunden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training nicht gefunden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas lief schief\"])}\n}","export default {\n \n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Pendeln)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandern\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (elektrisch)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rudern\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laufen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Langlauf)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeschuhe\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gehen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistik\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jahr\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du keine Anweisungen erhalten?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du bereits ein Konto?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelles Passwort\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe eine gültige E-Mail-Adresse an.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein Passwort ein\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nach Benutzernamen filtern\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort verbergen\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte fordere ein neues Passworts an.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neues Passwort\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Nutzer gefunden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe mehr als nur den ersten Buchstaben groß.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Dein Passwort wurde aktualisiert. Klicke \", _interpolate(_list(0)), \" um dich anzumelden.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontoausgabe\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstiegs-bezogene Daten (Aufnahmen, gesamt)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zum Profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biographie\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geburtsdatum\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil bearbeiten\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen ändern\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen für Sportarten ändern\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Bitte \", _interpolate(_list(0)), \" um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nachname\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ort\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildausgabe\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regirierungsdatum\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sontag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungen\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farbe\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vom Admin deaktiviert\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aktiv\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeitsschwellenwert für Stopp\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich erstellt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort anzeigen\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Account ist inaktiv.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training hinzufügen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aufstieg\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück zum Training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abstieg\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zeige Filter\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entfernung\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dauer\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training bearbeiten\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhe\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ende\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Von\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx Datei\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberge Filter\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letzte Trainings\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lade mehr Trainings\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maximale Höhe\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximale Dateianzahl\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximalgröße\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minimale Höhe\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Training\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten aus gpx, ohne Bereinigung\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enthält keinen Ordner\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Karte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Anmerkungen\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Aufzeichnungen.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Trainings.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pausen\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Aufzeichnung\"]), _normalize([\"Aufzeichnungen\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiteste Entfernung\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höchster Anstieg\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Längste Dauer\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verbleibende Zeichen\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Segment\"]), _normalize([\"Segmente\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeit\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Sportart\"]), _normalize([\"Sportarten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start und Ziel\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhenachse bei Null starten\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bis\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gesamtdauer\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge erstes Training hinzu!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luftfeuchtigkeit\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temperatur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klarer Tag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klare Nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wolkig\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nebel\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkter Tag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkte Nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeregen\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schnee\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .gpx Datei\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Training\"]), _normalize([\"Trainings\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsdatum\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du dieses Training löschen möchtest?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip Datei\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oder .zip Datei mit .gpx Dateien\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contact the administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is a self-hosted outdoor activity tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"under \", _interpolate(_list(0)), \" license \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source code\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email for contact\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to reset \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email sending is disabled.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration (maximum number of registered users, maximum files size).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The new email must be different than curent email\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that username is already taken.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A valid email must be provided for administrator contact\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend confirmation email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authorize\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Displayed\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems to have encountered some issues.
                                                                              Please try again later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a new OAuth2 application\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application description\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application name\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redirect URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to application configuration.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application URL\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application created successfully. Make sure to copy the secret now, it won't show up again.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The application \", _interpolate(_list(0)), \" is requesting:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Authorize \", _interpolate(_list(0)), \" to use your account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copy to the clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add an application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application not found!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke all tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to revoke all tokens?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All existing associated tokens have been revoked.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Snowshoes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Didn't received instructions?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. A new confirmation email has been sent to the address provided.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a valid email address.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter on username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No users found.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize more than the first letter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid dates and years that are associated with you.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can create strong passwords without using symbols, numbers, or uppercase letters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you use this password elsewhere, you should change it.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account edition\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ascent-related data (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit sports preferences\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Please \", _interpolate(_list(0)), \" to change your email address again or contact the administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"color\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disabled by admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"active\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stopped speed threshold\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully. Please check your email to confirm your new email address.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been created successfully.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A link to activate your account has been emailed to the address provided.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"show password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This user account is inactive.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 to 30 characters required, only alphanumeric characters and the underscore character \\\"_\\\" allowed.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farthest distance\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highest ascent\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start and finish\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start elevation axis at zero\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacter l'administrateur\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee est un tracker d'activités sportives (en extérieur).\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"sous licence \", _interpolate(_list(0)), \" (en) \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Code source (en)\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer le compte\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email de l'administrateur pour contact \"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"non renseigné\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur \", _interpolate(_list(0)), \" ?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adresse email actuelle\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'envoi d'emails est désactivé.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouvelle adresse email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit. le mot de passe\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changer l'email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les droits d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les droits d'admin\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"statut du compte\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel : une adresse électronique valide doit être fournie.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nouvelle addresse électronique doit être differente de l'adresse actuelle\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, ce nom d'utilisateur est déjà utilisé.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une adresse électronique doit être fournie pour le contact de l'administrateur\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Renvoyer le message de confirmation\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autoriser\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retour\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit.\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à propos\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Affiché\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masqué\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois-ci\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
                                                                              Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une erreur s'est produite\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une nouvelle application OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiant\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description de l'application\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Créée le\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom de l'application\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de redirection\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture à la configuration de l'application.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes auth.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes auth.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes users.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes users.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes workouts.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes workouts.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de l'application\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer cette application ?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'application \", _interpolate(_list(0)), \" demande les accès suivants :\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autoriser \", _interpolate(_list(0)), \" à utiliser votre compte ?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copier dans le presse papier\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application introuvable !\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Révoquer tous les jetons\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir révoquer tous les jetons ?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tous les jetons associés existants ont été révoqués.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Électrique)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raquettes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas reçu les instructions ?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe actuel\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez une adresse électronique valide.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez un mot de passe\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer sur le nom d'utilisateur\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"connecter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouveau mot de passe\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucun utilisateur trouvé.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalisez mais pas seulement la première lettre.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du compte\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données relatives au dénivelé positif (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences des sports\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Veuillez vous \", _interpolate(_list(0)), \" pour changer de nouveau votre adresse électronique ou contacter l'administrateur\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"compte\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km)\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"couleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"désactivé par l'administrateur\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actif\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuil de vitesse arrêtée\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été créé avec succès.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès.\"])},\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envoyer à nouveau le courriel de confirmation de compte\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher le mot de passe\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le compte de cet utilisateur est inactif.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dénivelé positif le + élevé\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Départ et arrivée\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"démarrer l'axe de l'altitude à 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c73279e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_6 = { class: \"footer-item\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer-item bullet\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"footer-item\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_11 = { class: \"footer-item\" }\nconst _hoisted_12 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\n\nimport { toRefs } from 'vue'\n\n interface Props {\n version: string\n adminContact?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n version: null,\n adminContact: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n version: string\n adminContact?: string\n }\n\n \n\n const { adminContact, version } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_unref(version)), 1)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.ABOUT')), 1)\n ]),\n _: 1\n })\n ]),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"•\"))\n : _createCommentVNode(\"\", true),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(adminContact)}`\n }, _toDisplayString(_ctx.$t('common.CONTACT')), 9, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10,\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"a\", _hoisted_12, _toDisplayString(_ctx.$t('common.DOCUMENTATION')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=2c73279e&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c73279e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-95c1cc02\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nimport { ComputedRef, computed, ref, capitalize } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavBar',\n emits: ['menuInteraction'],\n setup(__props, { emit }) {\n\n \n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n store.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n option.value.toString()\n )\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !isMenuOpen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (closeMenu()))\n }, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_unref(isAuthenticated) && _unref(authUser).admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(UserPicture, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(authUser).username), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: logout\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n })\n ])),\n (_unref(availableLanguages) && _unref(language))\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _unref(availableLanguages),\n selected: _unref(language),\n onSelected: updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=95c1cc02&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-95c1cc02\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47759238\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = { class: \"error-img\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NoConfig',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ErrorImg)\n ]),\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=47759238&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47759238\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1)\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { ComputedRef, computed, ref, onBeforeMount, onMounted } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { localeFromLanguage } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() => {\n initLanguage()\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n })\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n const bottom = document.querySelector('#bottom')\n displayScrollButton.value = bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n function initLanguage() {\n let language = 'en'\n try {\n const navigatorLanguage = navigator.language.split('-')[0]\n if (navigatorLanguage in localeFromLanguage) {\n language = navigatorLanguage\n }\n } catch (e) {\n language = 'en'\n }\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, language)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(NavBar, { onMenuInteraction: updateHideScrollBar }),\n (_unref(appLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': hideScrollBar.value }])\n }, [\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': displayScrollButton.value }]),\n onClick: scrollToTop\n }, _hoisted_6, 2)\n ]),\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(Footer, {\n key: 2,\n version: _unref(appConfig) ? _unref(appConfig).version : '',\n adminContact: _unref(appConfig).admin_contact\n }, null, 8, [\"version\", \"adminContact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2930d5e0&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69d7e4ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs } from 'vue'\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlertMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string\n }\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_unref(message))\n }, null, 8, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=69d7e4ff&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-69d7e4ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8cf5cc64\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLenght\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nimport { ref, watch, withDefaults } from 'vue'\n\n interface Props {\n name: string\n charLimit?: number\n disabled?: boolean\n input?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextArea',\n props: {\n name: null,\n charLimit: { default: 500 },\n disabled: { type: Boolean, default: false },\n input: { default: '' }\n },\n emits: ['updateValue'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { name: string, charLimit: number, disabled: boolean, input: string | null }\n\n \n\n \n\n const text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value === null ? '' : value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: __props.name,\n name: __props.name,\n maxLenght: __props.charLimit,\n disabled: __props.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((text).value = $event)),\n onInput: updateText\n }, null, 40, _hoisted_2), [\n [_vModelText, text.value]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(text.value.length) + \"/\" + _toDisplayString(__props.charLimit), 1)\n ]))\n}\n}\n\n})","import script from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=8cf5cc64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8cf5cc64\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f46ff1d6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\" \" + /*#__PURE__*/_toDisplayString(' ') + \" \")\n\nimport { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import { TUnit } from '@/types/units'\n import { units, convertDistance } from '@/utils/units'\n\n interface Props {\n distance: number\n unitFrom: TUnit\n useImperialUnits: boolean\n digits?: number\n displayUnit?: boolean\n speed?: boolean\n strong?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Distance',\n props: {\n distance: null,\n unitFrom: null,\n useImperialUnits: { type: Boolean },\n digits: { default: 2 },\n displayUnit: { type: Boolean, default: true },\n speed: { type: Boolean, default: false },\n strong: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { distance: number, unitFrom: TUnit, useImperialUnits: boolean, digits: number, displayUnit: boolean, speed: boolean, strong: boolean }\n\n \n\n const {\n digits,\n displayUnit,\n distance,\n speed,\n strong,\n unitFrom,\n useImperialUnits,\n } = toRefs(props)\n const unitTo: ComputedRef = computed(() =>\n useImperialUnits.value\n ? units[unitFrom.value].defaultTarget\n : unitFrom.value\n )\n const convertedDistance = computed(() =>\n useImperialUnits.value\n ? convertDistance(\n distance.value,\n unitFrom.value,\n unitTo.value,\n digits.value\n )\n : parseFloat(distance.value.toFixed(digits.value))\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"distance\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(convertedDistance)), 3),\n _hoisted_1,\n (_unref(displayUnit))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"unit\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(unitTo)) + _toDisplayString(_unref(speed) ? '/h' : ''), 3))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Distance.vue?vue&type=style&index=0&id=f46ff1d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f46ff1d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d3b4eac\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n interface Props {\n options: TDropdownOptions\n selected: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dropdown',\n props: {\n options: null,\n selected: null\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n options: TDropdownOptions\n selected: string\n }\n\n \n\n \n\n const route = useRoute()\n const isOpen = ref(false)\n const dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: toggleDropdown\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dropdownOptions), (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === __props.selected }]),\n key: index,\n onClick: ($event: any) => (updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=2d3b4eac&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2d3b4eac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2659a79a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n message: string | string[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string | string[]\n }\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_unref(message)))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(message), (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_unref(message))), 1))\n ]))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=2659a79a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2659a79a\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Snowshoes.vue?vue&type=template&id=67df2761\"\nimport script from \"./Snowshoes.vue?vue&type=script&lang=js\"\nexport * from \"./Snowshoes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { inject, toRefs, withDefaults } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Snowshoes from '@/components/Common/Images/SportImage/Snowshoes.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n interface Props {\n sportLabel: string\n color: string | null\n title?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sportLabel: null,\n color: null,\n title: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { sportLabel: string, color: string | null, title: string }\n\n \n\n const { color, sportLabel, title } = toRefs(props)\n const sportColors = inject('sportColors')\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _unref(color) ? _unref(color) : _unref(sportColors)[_unref(sportLabel)] }),\n title: _unref(title) ? _unref(title) : _ctx.$t(`sports.${_unref(sportLabel)}.LABEL`)\n }, [\n (_unref(sportLabel) === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Hiking')\n ? (_openBlock(), _createBlock(Hiking, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking')\n ? (_openBlock(), _createBlock(MountainBiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(MountainBikingElectric, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 11 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./Loader.vue?vue&type=template&id=4c9921ee&scoped=true\"\nconst script = {}\n\nimport \"./Loader.vue?vue&type=style&index=0&id=4c9921ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c9921ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e8fcfaba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nimport { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n title: string\n message: string\n strongMessage?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n title: null,\n message: null,\n strongMessage: { default: () => null }\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { title: string, message: string, strongMessage: string | null }\n\n \n\n \n\n const store = useStore()\n\n const { title, message, strongMessage } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(title)), 1)\n ]),\n content: _withCtx(() => [\n (_unref(strongMessage))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _unref(message) }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(strongMessage)), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_unref(message)), 1)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_unref(errorMessages) ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=e8fcfaba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e8fcfaba\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Distance from '@/components/Common/Distance.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n { target: AlertMessage, name: 'AlertMessage' },\n { target: Card, name: 'Card' },\n { target: CustomTextArea, name: 'CustomTextArea' },\n { target: Distance, name: 'Distance' },\n { target: Dropdown, name: 'Dropdown' },\n { target: ErrorMessage, name: 'ErrorMessage' },\n { target: Loader, name: 'Loader' },\n { target: Modal, name: 'Modal' },\n { target: SportImage, name: 'SportImage' },\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\nimport VueFullscreen from 'vue-fullscreen'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .use(VueFullscreen, { name: 'VFullscreen' })\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component.target)\n})\n\napp.mount('#app')\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-24ec93e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { for: \"admin_contact\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = { for: \"max_users\" }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"user-limit-help\" }\nconst _hoisted_9 = { class: \"info-box\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { for: \"max_single_file_size\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { for: \"max_zip_file_size\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { for: \"gpx_limit_import\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n key: 1,\n class: \"form-buttons\"\n}\nconst _hoisted_18 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = {\n key: 2,\n class: \"form-buttons\"\n}\n\nimport {\n ComputedRef,\n computed,\n reactive,\n withDefaults,\n onBeforeMount,\n toRefs,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n\n interface Props {\n appConfig: TAppConfig\n edition?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminApplication',\n props: {\n appConfig: null,\n edition: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, edition: boolean }\n\n \n const { edition } = toRefs(props)\n\n const store = useStore()\n const router = useRouter()\n\n const appData: TAppConfigForm = reactive({\n admin_contact: '',\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = appConfig[key])\n })\n }\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _withModifiers(onSubmit, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ADMIN_CONTACT')) + \": \", 1),\n (!_unref(edition) && !appData.admin_contact)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"no-contact\",\n value: _ctx.$t('admin.APP_CONFIG.NO_CONTACT_EMAIL'),\n disabled: \"\"\n }, null, 8, _hoisted_4))\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n id: \"admin_contact\",\n name: \"admin_contact\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appData.admin_contact) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_5)), [\n [_vModelText, appData.admin_contact]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appData.max_users) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_7), [\n [_vModelText, appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appData.max_single_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_12), [\n [_vModelText, appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((appData.max_zip_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_14), [\n [_vModelText, appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((appData.gpx_limit_import) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_16), [\n [_vModelText, appData.gpx_limit_import]\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", _hoisted_18, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_19)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 40, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=24ec93e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24ec93e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n icon: string\n text: string\n value: string | number\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatCard',\n props: {\n icon: null,\n text: null,\n value: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n icon: string\n text: string\n value: string | number\n }\n\n \n const { icon, text, value } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_unref(icon)}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_unref(value)), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(text)), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=6cbb3351&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { computed, toRefs } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n appStatistics: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStatsCards',\n props: {\n appStatistics: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n appStatistics: IAppStatistics\n }\n\n \n\n const { appStatistics } = toRefs(props)\n const uploadDirSize = computed(() =>\n getReadableFileSize(appStatistics.value.uploads_dir_size, false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"users\",\n value: _unref(appStatistics).users,\n text: _ctx.$t('admin.USER', _unref(appStatistics).users)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"tags\",\n value: _unref(appStatistics).sports,\n text: _ctx.$t('workouts.SPORT', _unref(appStatistics).sports)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(appStatistics).workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(appStatistics).workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"folder-open\",\n value: _unref(uploadDirSize).size,\n text: _unref(uploadDirSize).suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}\n}\n\n})","import script from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=61c5053e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0dd66f89\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = { class: \"application-config-details\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = { class: \"registration-status\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"email-sending-status\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-exclamation-triangle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { capitalize, toRefs, withDefaults } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n interface Props {\n appConfig: TAppConfig\n appStatistics?: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminMenu',\n props: {\n appConfig: null,\n appStatistics: { default: () => ({} as IAppStatistics) }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, appStatistics: IAppStatistics }\n\n \n\n const { appConfig, appStatistics } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(AppStatsCards, { appStatistics: _unref(appStatistics) }, null, 8, [\"appStatistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_4,\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _unref(appConfig).is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1),\n (!_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.EMAIL_SENDING_DISABLED')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=0dd66f89&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0dd66f89\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d62af67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminSports',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"title\", \"sport-label\", \"color\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d62af67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d62af67\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, withKeys as _withKeys, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-627a8e91\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"users-filters\" }\nconst _hoisted_2 = { class: \"search-username\" }\nconst _hoisted_3 = [\"onKeyup\", \"placeholder\"]\n\nimport { ref } from 'vue'\n import { useRoute } from 'vue-router'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UsersNameFilter',\n emits: ['filterOnUsername'],\n setup(__props, { emit }) {\n\n const route = useRoute()\n const username = ref(route.query.q ? route.query.q : '')\n\n \n function searchUsers() {\n if (username.value !== '') {\n emit('filterOnUsername', username)\n }\n }\n function resetFilter() {\n username.value = ''\n emit('filterOnUsername', username.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"username\",\n name: \"username\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((username).value = $event)),\n onKeyup: _withKeys(searchUsers, [\"enter\"]),\n placeholder: _ctx.$t('user.FILTER_ON_USERNAME')\n }, null, 40, _hoisted_3), [\n [\n _vModelText,\n username.value,\n void 0,\n { trim: true }\n ]\n ]),\n (username.value !== '')\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-times\",\n \"aria-hidden\": \"true\",\n onClick: resetFilter\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-search\", { 'fa-disabled': username.value === '' }]),\n \"aria-hidden\": \"true\",\n onClick: searchUsers\n }, null, 2)\n ]))\n}\n}\n\n})","import script from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./UsersNameFilter.vue?vue&type=style&index=0&id=627a8e91&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-627a8e91\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4735c10f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"no-users\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"responsive-table\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"left-text\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"text-center\" }\nconst _hoisted_17 = { class: \"cell-heading\" }\nconst _hoisted_18 = { class: \"text-center\" }\nconst _hoisted_19 = { class: \"cell-heading\" }\nconst _hoisted_20 = [\"disabled\", \"onClick\"]\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import UsersNameFilter from '@/components/Users/UsersNameFilter.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminUsers',\n setup(__props) {\n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'is_active',\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadUsers(query))\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function searchUsers(username: Ref) {\n reloadUsers('q', username.value)\n }\n\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(UsersNameFilter, { onFilterOnUsername: searchUsers }),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: reloadUsers\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(users).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('user.NO_USERS_FOUND')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_4,\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/admin/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(user.created_at, _unref(authUser).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _unref(authUser).username,\n onClick: ($event: any) => (updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_20)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(pagination).page)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _unref(pagination),\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=4735c10f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4735c10f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n tabs: string[]\n selectedTab: string\n edition: boolean\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserProfileTabs',\n props: {\n tabs: null,\n selectedTab: null,\n edition: { type: Boolean },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { tabs: string[], selectedTab: string, edition: boolean, disabled: boolean }\n\n \n\n const { tabs, selectedTab, disabled } = toRefs(props)\n\n function getPath(tab: string) {\n switch (tab) {\n case 'ACCOUNT':\n case 'PICTURE':\n return `/profile/edit/${tab.toLocaleLowerCase()}`\n case 'APPS':\n case 'PREFERENCES':\n case 'SPORTS':\n return `/profile${\n props.edition ? '/edit' : ''\n }/${tab.toLocaleLowerCase()}`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(tabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _unref(selectedTab).split('/')[0] === tab,\n disabled: _unref(disabled),\n onInput: ($event: any) => (_ctx.$router.push(getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=01b05f01&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9729cba4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nimport { toRefs } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n }\n\n \n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'PREFERENCES', 'SPORTS', 'APPS']\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: false\n }, null, 8, [\"selectedTab\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9729cba4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9729cba4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nimport { computed } from 'vue'\n\n import { IAuthUserProfile } from '@/types/user'\n import { languageLabels } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferences',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const language = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() => (props.user.weekm ? 'MONDAY' : 'SUNDAY'))\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n const display_ascent = computed(() =>\n props.user.display_ascent ? 'DISPLAYED' : 'HIDDEN'\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(language)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(timezone)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_unref(fistDayOfWeek)}`)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(\n `user.PROFILE.UNITS.${__props.user.imperial_units ? 'IMPERIAL' : 'METRIC'}`\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`common.${_unref(display_ascent)}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n }\n\n \n\n const store = useStore()\n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'ACCOUNT', 'PICTURE', 'PREFERENCES', 'SPORTS']\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_unref(tab)}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: true,\n disabled: _unref(loading)\n }, null, 8, [\"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-37b8c4c8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = [\"disabled\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password-field\"\n}\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"new-password-field\"\n}\nconst _hoisted_9 = { class: \"form-buttons\" }\nconst _hoisted_10 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile, IUserAccountPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAccountEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n const userForm: IUserAccountPayload = reactive({\n email: '',\n password: '',\n new_password: '',\n })\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const emailUpdate = ref(false)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const formErrors = ref(false)\n const displayModal: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IUserProfile) {\n userForm.email = user.email\n }\n function updatePassword(password: string) {\n userForm.password = password\n }\n function updateNewPassword(new_password: string) {\n userForm.new_password = new_password\n }\n function updateProfile() {\n const payload: IUserAccountPayload = {\n email: userForm.email,\n password: userForm.password,\n }\n if (userForm.new_password) {\n payload.new_password = userForm.new_password\n }\n emailUpdate.value = userForm.email !== user.value.email\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT, payload)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n onUnmounted(() => {\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\n watch(\n () => isSuccess.value,\n async (isSuccessValue) => {\n if (isSuccessValue) {\n updatePassword('')\n updateNewPassword('')\n updateUserForm(user.value)\n formErrors.value = false\n }\n }\n )\n watch(\n () => user.value.email,\n async () => {\n updateUserForm(user.value)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteAccount(_unref(user).username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n emailUpdate.value && _unref(appConfig).is_email_sending_enabled ? 'EMAIL_' : ''\n }UPDATE`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.email) = $event)),\n disabled: _unref(loading),\n required: true,\n onInvalid: invalidateForm\n }, null, 40, _hoisted_6), [\n [_vModelText, userForm.email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.CURRENT_PASSWORD')) + \"* \", 1),\n _createVNode(PasswordInput, {\n id: \"password-field\",\n disabled: _unref(loading),\n password: userForm.password,\n required: true,\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.NEW_PASSWORD')) + \" \", 1),\n _createVNode(PasswordInput, {\n id: \"new-password-field\",\n disabled: _unref(loading),\n checkStrength: true,\n password: userForm.new_password,\n isSuccess: false,\n onUpdatePassword: updateNewPassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", _hoisted_10, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1)\n ])\n ], 42, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAccountEdition.vue?vue&type=style&index=0&id=37b8c4c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37b8c4c8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b6bacea0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"form-items\" }\nconst _hoisted_14 = { class: \"form-buttons\" }\nconst _hoisted_15 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfosEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const store = useStore()\n\n const userForm: IUserPayload = reactive({\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _unref(registrationDate),\n disabled: \"\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.first_name) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_7), [\n [_vModelText, userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.birth_date) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_10), [\n [_vModelText, userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userForm.location) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_12), [\n [_vModelText, userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: userForm.bio,\n disabled: _unref(loading),\n onUpdateValue: updateBio\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", _hoisted_15, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=b6bacea0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b6bacea0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-687e9604\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"picture-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"picture-buttons\" }\nconst _hoisted_8 = [\"disabled\"]\n\nimport { ComputedRef, Ref, computed, ref, toRefs, onUnmounted } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPictureEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateUserPicture, [\"prevent\"])\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: updatePictureFile\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !pictureFile.value\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_8),\n (_unref(user).picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: deleteUserPicture\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=687e9604&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-687e9604\"]])\n\nexport default __exports__","export const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Algiers',\n 'Africa/Bissau',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/El_Aaiun',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Khartoum',\n 'Africa/Lagos',\n 'Africa/Maputo',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fortaleza',\n 'America/Fort_Nelson',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Johns',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Helsinki',\n 'Europe/Istanbul',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n]\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withKeys as _withKeys, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47ea2903\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"tz-dropdown\" }\nconst _hoisted_2 = [\"value\", \"disabled\", \"onKeydown\"]\nconst _hoisted_3 = [\"onClick\", \"onMouseover\", \"autofocus\"]\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import { timeZones } from '@/utils/timezone'\n\n interface Props {\n input: string\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimezoneDropdown',\n props: {\n input: null,\n disabled: { type: Boolean, default: false }\n },\n emits: ['updateTimezone'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { input: string, disabled: boolean }\n\n \n\n \n\n const { input, disabled } = toRefs(props)\n const timezone: Ref = ref(props.input)\n const isOpen: Ref = ref(false)\n const tzList: Ref = ref(null)\n const focusItemIndex: Ref = ref(0)\n\n function matchTimezone(t: string): RegExpMatchArray | null {\n return t.toLowerCase().match(timezone.value.toLowerCase())\n }\n function onMouseOver(index: number) {\n focusItemIndex.value = index\n }\n function onUpdateTimezone(value: string) {\n timezone.value = value\n isOpen.value = false\n emit('updateTimezone', value)\n }\n function onEnter(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n if (tzList.value?.firstElementChild?.innerHTML) {\n onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)\n }\n }\n function openDropdown(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n isOpen.value = true\n timezone.value = event.target.value.trim()\n }\n\n watch(\n () => props.input,\n (value) => {\n timezone.value = value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"tz-dropdown-input\",\n id: \"timezone\",\n name: \"timezone\",\n value: timezone.value,\n disabled: _unref(disabled),\n required: \"\",\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(($event: any) => (onUpdateTimezone(_unref(input))), [\"esc\"])),\n _withKeys(onEnter, [\"enter\"])\n ],\n onInput: openDropdown\n }, null, 40, _hoisted_2),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", {\n key: 0,\n class: \"tz-dropdown-list\",\n ref_key: \"tzList\",\n ref: tzList\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(timeZones).filter((t) => matchTimezone(t)), (tz, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: tz,\n class: _normalizeClass([\"tz-dropdown-item\", { focus: index === focusItemIndex.value }]),\n onClick: ($event: any) => (onUpdateTimezone(tz)),\n onMouseover: ($event: any) => (onMouseOver(index)),\n autofocus: index === focusItemIndex.value\n }, _toDisplayString(tz), 43, _hoisted_3))\n }), 128))\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./TimezoneDropdown.vue?vue&type=style&index=0&id=47ea2903&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47ea2903\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f7548012\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-items\" }\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-items\" }\nconst _hoisted_8 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_9 = { class: \"checkboxes-label\" }\nconst _hoisted_10 = { class: \"checkboxes\" }\nconst _hoisted_11 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_12 = { class: \"checkbox-label\" }\nconst _hoisted_13 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_14 = { class: \"checkboxes-label\" }\nconst _hoisted_15 = { class: \"checkboxes\" }\nconst _hoisted_16 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_17 = { class: \"checkbox-label\" }\nconst _hoisted_18 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_19 = { class: \"checkboxes-label\" }\nconst _hoisted_20 = { class: \"checkboxes\" }\nconst _hoisted_21 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_22 = { class: \"checkbox-label\" }\nconst _hoisted_23 = { class: \"form-buttons\" }\nconst _hoisted_24 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserPreferencesPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferencesEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n\n const userForm: IUserPreferencesPayload = reactive({\n display_ascent: true,\n imperial_units: false,\n language: '',\n timezone: 'Europe/Paris',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'SUNDAY',\n value: false,\n },\n {\n label: 'MONDAY',\n value: true,\n },\n ]\n const imperialUnits = [\n {\n label: 'METRIC',\n value: false,\n },\n {\n label: 'IMPERIAL',\n value: true,\n },\n ]\n const ascentData = [\n {\n label: 'DISPLAYED',\n value: true,\n },\n {\n label: 'HIDDEN',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IAuthUserProfile) {\n userForm.display_ascent = user.display_ascent\n userForm.imperial_units = user.imperial_units ? user.imperial_units : false\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES, userForm)\n }\n function updateTZ(value: string) {\n userForm.timezone = value\n }\n function updateAscentDisplay(value: boolean) {\n userForm.display_ascent = value\n }\n function updateImperialUnit(value: boolean) {\n userForm.imperial_units = value\n }\n function updateWeekM(value: boolean) {\n userForm.weekm = value\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.language) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableLanguages), (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_6))\n }), 128))\n ], 8, _hoisted_5), [\n [_vModelSelect, userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _createVNode(TimezoneDropdown, {\n input: userForm.timezone,\n disabled: _unref(loading),\n onUpdateTimezone: updateTZ\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')), 1),\n _createElementVNode(\"div\", _hoisted_10, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(weekStart, (start) => {\n return _createElementVNode(\"label\", {\n key: start.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: start.label,\n name: start.label,\n checked: start.value === userForm.weekm,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateWeekM(start.value))\n }, null, 40, _hoisted_11),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')), 1),\n _createElementVNode(\"div\", _hoisted_15, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(imperialUnits, (unit) => {\n return _createElementVNode(\"label\", {\n key: unit.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: unit.label,\n name: unit.label,\n checked: unit.value === userForm.imperial_units,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateImperialUnit(unit.value))\n }, null, 40, _hoisted_16),\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(`user.PROFILE.UNITS.${unit.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')), 1),\n _createElementVNode(\"div\", _hoisted_20, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ascentData, (status) => {\n return _createElementVNode(\"label\", {\n key: status.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: status.label,\n name: status.label,\n checked: status.value === userForm.display_ascent,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateAscentDisplay(status.value))\n }, null, 40, _hoisted_21),\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t(`common.${status.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", _hoisted_24, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPreferencesEdition.vue?vue&type=style&index=0&id=f7548012&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f7548012\"]])\n\nexport default __exports__","export const oauth2_scopes = [\n 'profile:read',\n 'profile:write',\n 'users:read',\n 'users:write',\n 'workouts:read',\n 'workouts:write',\n]\n\nexport const admin_oauth2_scopes = ['application:write']\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0657ee77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"new-oauth2-app\" }\nconst _hoisted_2 = { id: \"new-oauth2-title\" }\nconst _hoisted_3 = { id: \"apps-form\" }\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = { class: \"form-items\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = { for: \"app-name\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = { for: \"app-description\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = { for: \"app-url\" }\nconst _hoisted_12 = { class: \"form-item\" }\nconst _hoisted_13 = { for: \"app-redirect-uri\" }\nconst _hoisted_14 = { class: \"form-item-scope\" }\nconst _hoisted_15 = { class: \"form-item-scope-label\" }\nconst _hoisted_16 = { class: \"scope-label\" }\nconst _hoisted_17 = [\"name\", \"checked\", \"onChange\"]\nconst _hoisted_18 = [\"innerHTML\"]\nconst _hoisted_19 = { class: \"form-buttons\" }\nconst _hoisted_20 = [\"disabled\"]\n\nimport { computed, reactive } from 'vue'\n\n import { OAUTH2_STORE } from '@/store/constants'\n import { IOAuth2ClientPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { admin_oauth2_scopes, oauth2_scopes } from '@/utils/oauth'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddUserApp',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n const appForm = reactive({\n client_name: '',\n client_uri: '',\n client_description: '',\n redirect_uri: '',\n })\n const scopes: string[] = reactive([])\n const filtered_scopes = computed(() =>\n getScopes(props.authUser, admin_oauth2_scopes, oauth2_scopes)\n )\n\n function createApp() {\n const payload: IOAuth2ClientPayload = {\n client_name: appForm.client_name,\n client_description: appForm.client_description,\n client_uri: appForm.client_uri,\n redirect_uris: [appForm.redirect_uri],\n scope: scopes.sort().join(' '),\n }\n store.dispatch(OAUTH2_STORE.ACTIONS.CREATE_CLIENT, payload)\n }\n function updateDescription(value: string) {\n appForm.client_description = value\n }\n function updateScopes(scope: string) {\n const index = scopes.indexOf(scope)\n if (index > -1) {\n scopes.splice(index, 1)\n } else {\n scopes.push(scope)\n }\n }\n function getScopes(\n authUser: IAuthUserProfile,\n admin_scopes: string[],\n scopes: string[]\n ) {\n const filtered_scopes = [...scopes]\n if (authUser.admin) {\n filtered_scopes.push(...admin_scopes)\n }\n return filtered_scopes.sort()\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.ADD_A_NEW_APP')), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(createApp, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-name\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appForm.client_name) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_name]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')), 1),\n _createVNode(_component_CustomTextArea, {\n name: \"app-description\",\n charLimit: 200,\n input: appForm.description,\n onUpdateValue: updateDescription\n }, null, 8, [\"input\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-url\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appForm.client_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-redirect-uri\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appForm.redirect_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.redirect_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \"* \", 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filtered_scopes), (scope) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"form-item-scope-checkboxes\",\n key: scope\n }, [\n _createElementVNode(\"label\", _hoisted_16, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n name: scope,\n checked: scopes.includes(scope),\n onChange: ($event: any) => (updateScopes(scope))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"p\", {\n class: \"scope-description\",\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_18)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: scopes.length === 0\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_20),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => _ctx.$router.push('/profile/apps'), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AddUserApp.vue?vue&type=style&index=0&id=0657ee77&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0657ee77\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b2fe9ed\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"authorize-oauth2-app\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { id: \"authorize-oauth2-title\" }\nconst _hoisted_4 = { class: \"oauth2-access description-list\" }\nconst _hoisted_5 = { class: \"client-scope\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"authorize-oauth2-buttons\" }\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = { class: \"no-app\" }\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AuthorizeUserApp',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadApp())\n\n function loadApp() {\n if (route.query.client_id && typeof route.query.client_id === 'string') {\n store.dispatch(\n OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID,\n route.query.client_id\n )\n }\n }\n\n function authorizeApp() {\n store.dispatch(OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT, {\n client_id: `${route.query.client_id}`,\n redirect_uri: `${route.query.redirect_uri}`,\n response_type: `${route.query.response_type}`,\n scope: `${route.query.scope}`,\n state: `${route.query.state ? route.query.state : ''}`,\n code_challenge: `${\n route.query.code_challenge ? route.query.code_challenge : ''\n }`,\n code_challenge_method: `${\n route.query.code_challenge_method\n ? route.query.code_challenge_method\n : ''\n }`,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: \"oauth2.AUTHORIZE_APP\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: _unref(client).id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(client).name), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]),\n _: 1\n })\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('oauth2.APP_REQUESTING_ACCESS')), 1),\n _createElementVNode(\"dl\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: scope }, [\n _createElementVNode(\"dt\", _hoisted_5, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"dd\", {\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_6)\n ], 64))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: authorizeApp\n }, _toDisplayString(_ctx.$t('buttons.AUTHORIZE')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"p\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AuthorizeUserApp.vue?vue&type=style&index=0&id=3b2fe9ed&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b2fe9ed\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"oauth2-apps\" }\n\nimport { onUnmounted, toRefs } from 'vue'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENTS, [])\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { authUser: _unref(user) }, null, 8, [\"authUser\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-00697fc9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"oauth2-app\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"title\"]\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"app-secret\"\n}\nconst _hoisted_7 = [\"title\"]\nconst _hoisted_8 = { class: \"client-scopes\" }\nconst _hoisted_9 = { class: \"app-buttons\" }\nconst _hoisted_10 = { key: 2 }\nconst _hoisted_11 = { class: \"no-app\" }\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n capitalize,\n computed,\n onBeforeMount,\n toRefs,\n ref,\n onUnmounted,\n withDefaults,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n afterCreation?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserApp',\n props: {\n authUser: null,\n afterCreation: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, afterCreation: boolean }\n\n \n const route = useRoute()\n const store = useStore()\n\n const { afterCreation, authUser } = toRefs(props)\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const revocationSuccessful: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]\n )\n const displayModal: Ref = ref(false)\n const messageToDisplay: Ref = ref(null)\n const idCopied: Ref = ref(false)\n const secretCopied: Ref = ref(false)\n const clipboardSupport: Ref = ref(false)\n\n onBeforeMount(() => {\n loadClient()\n if (navigator.clipboard) {\n clipboardSupport.value = true\n }\n })\n\n function loadClient() {\n // after creation, client is already in store\n if (\n !afterCreation.value &&\n route.params.id &&\n typeof route.params.id === 'string'\n ) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID, +route.params.id)\n }\n }\n function updateMessageToDisplay(forDelete: boolean) {\n messageToDisplay.value = forDelete\n ? 'oauth2.APP_DELETION_CONFIRMATION'\n : 'oauth2.TOKENS_REVOCATION_CONFIRMATION'\n updateDisplayModal(true)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (!value) {\n messageToDisplay.value = null\n }\n }\n function confirmAction(clientId: number) {\n if (messageToDisplay.value === 'oauth2.APP_DELETION_CONFIRMATION') {\n store.dispatch(OAUTH2_STORE.ACTIONS.DELETE_CLIENT, clientId)\n } else {\n store.dispatch(OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS, clientId)\n }\n }\n function copyIdToClipboard() {\n navigator.clipboard.writeText(client.value.client_id)\n idCopied.value = true\n secretCopied.value = false\n setTimeout(() => {\n idCopied.value = false\n }, 3000)\n }\n function copySecretToClipboard() {\n if (client.value.client_secret) {\n navigator.clipboard.writeText(client.value.client_secret)\n secretCopied.value = true\n idCopied.value = false\n setTimeout(() => {\n secretCopied.value = false\n }, 3000)\n }\n }\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n })\n\n watch(\n () => revocationSuccessful.value,\n (newValue) => {\n if (newValue) {\n updateDisplayModal(false)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t(messageToDisplay.value),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (confirmAction(_unref(client).id))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(client) && _unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(afterCreation) || _unref(revocationSuccessful))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n _unref(afterCreation)\n ? 'oauth2.APP_CREATED_SUCCESSFULLY'\n : 'oauth2.TOKENS_REVOKED'\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_ID')) + \":\", 1),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_unref(client).client_id) + \" \", 1),\n (_unref(afterCreation) && clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${idCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copyIdToClipboard\n }, null, 10, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dt\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_SECRET')) + \": \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dd\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_unref(client).client_secret) + \" \", 1),\n (clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${secretCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copySecretToClipboard\n }, null, 10, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dt\", null, _toDisplayString(capitalize(_ctx.$t('oauth2.APP.ISSUE_AT'))) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(_unref(client).issued_at, _unref(authUser).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')) + \":\", 1),\n _createElementVNode(\"dd\", {\n class: _normalizeClass({ 'no-description': !_unref(client).client_description })\n }, _toDisplayString(_unref(client).client_description\n ? _unref(client).client_description\n : _ctx.$t('oauth2.NO_DESCRIPTION')), 3),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).website), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).redirect_uris.length > 0 ? _unref(client).redirect_uris[0] : ''), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: \"client-scope\",\n key: scope\n }, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateMessageToDisplay(false)))\n }, _toDisplayString(_ctx.$t('oauth2.REVOKE_ALL_TOKENS')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateMessageToDisplay(true)))\n }, _toDisplayString(_ctx.$t('oauth2.DELETE_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserApp.vue?vue&type=style&index=0&id=00697fc9&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-00697fc9\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a5c2cdde\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"oauth2-apps-list\" }\nconst _hoisted_2 = { class: \"apps-list\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"app-issued-at\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"no-apps\"\n}\nconst _hoisted_6 = { class: \"app-list-buttons\" }\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, onBeforeMount, toRefs, watch } from 'vue'\n import { LocationQuery, useRoute } from 'vue-router'\n\n import Pagination from '@/components/Common/Pagination.vue'\n import { OAUTH2_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { IOAuth2Client, IOauth2ClientsPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { defaultPage, getNumberQueryValue } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAppsList',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n const route = useRoute()\n\n const { authUser } = toRefs(props)\n const clients: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS]\n )\n\n const pagination: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]\n )\n let query: IOauth2ClientsPayload = getClientsQuery(route.query)\n\n onBeforeMount(() => {\n loadClients(query)\n })\n\n function getClientsQuery(newQuery: LocationQuery): IOauth2ClientsPayload {\n const clientsQuery: IOauth2ClientsPayload = {}\n if (newQuery.page) {\n clientsQuery.page = getNumberQueryValue(newQuery.page, defaultPage)\n }\n return clientsQuery\n }\n function loadClients(payload: IOauth2ClientsPayload) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS, payload)\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getClientsQuery(newQuery)\n loadClients(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.APPS_LIST')), 1),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(clients), (client) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: client.client_id\n }, [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: client.id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(client.name), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('oauth2.APP.ISSUE_AT')) + \" \" + _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(client.issued_at, _unref(authUser).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.NO_APPS')), 1)),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 2,\n pagination: _unref(pagination),\n path: \"/profile/apps\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps/new')))\n }, _toDisplayString(_ctx.$t('oauth2.NEW_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAppsList.vue?vue&type=style&index=0&id=a5c2cdde&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a5c2cdde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e52489\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-sport-preferences\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"responsive-table\"\n}\nconst _hoisted_3 = { class: \"mobile-display\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"profile-buttons mobile-display\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_6 = { class: \"text-left\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"disabled-message\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"fa fa-refresh fa-spin fa-fw\"\n}\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = [\"checked\"]\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = {\n key: 0,\n class: \"action-buttons\"\n}\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = {\n key: 1,\n class: \"edition-buttons\"\n}\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\", \"onClick\"]\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_27 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { ComputedRef, computed, inject, reactive, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile, IUserSportPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n user: IUserProfile\n isEdition: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserSportPreferences',\n props: {\n user: null,\n isEdition: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n isEdition: boolean\n }\n\n \n\n const store = useStore()\n const { t } = useI18n()\n\n const { isEdition, user } = toRefs(props)\n const defaultColor = '#838383'\n const sportColors: Record | undefined = inject('sportColors')\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t, 'is_active', user.value.sports_list)\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const sportPayload: IUserSportPreferencesPayload = reactive({\n sport_id: 0,\n color: null,\n is_active: true,\n stopped_speed_threshold: 1,\n })\n\n function updateSportInEdition(sport: ISport | null) {\n if (sport !== null) {\n sportPayload.sport_id = sport.id\n sportPayload.color = sport.color\n ? sport.color\n : sportColors\n ? sportColors[sport.label]\n : defaultColor\n sportPayload.is_active = sport.is_active_for_user\n sportPayload.stopped_speed_threshold = sport.stopped_speed_threshold\n } else {\n resetSportPayload()\n }\n }\n function isSportInEdition(sportId: number) {\n return sportPayload.sport_id === sportId\n }\n function updateColor(event: Event & { target: HTMLInputElement }) {\n sportPayload.color = event.target.value\n }\n function updateThreshold(event: Event & { target: HTMLInputElement }) {\n sportPayload.stopped_speed_threshold = parseFloat(event.target.value)\n }\n function updateIsActive(event: Event & { target: HTMLInputElement }) {\n sportPayload.is_active = event.target.checked\n }\n function resetSportPayload() {\n sportPayload.sport_id = 0\n sportPayload.color = null\n sportPayload.is_active = true\n sportPayload.stopped_speed_threshold = 1\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n }\n function updateSport(event: Event) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,\n sportPayload\n )\n }\n function resetSport(event: Event, sportId: number) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES,\n sportId\n )\n }\n\n watch(\n () => loading.value,\n (newIsLoading) => {\n if (!newIsLoading && !errorMessages.value) {\n resetSportPayload()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.SPORT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"sport-color\",\n type: \"color\",\n value: sportPayload.color,\n onInput: updateColor\n }, null, 40, _hoisted_9))\n : (_openBlock(), _createBlock(_component_SportImage, {\n key: 1,\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color ? sport.color : _unref(sportColors)[sport.label]\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n ]),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"sport-label\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel) + \" \", 1),\n (!sport.is_active)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (\" + _toDisplayString(_ctx.$t('user.PROFILE.SPORT.DISABLED_BY_ADMIN')) + \") \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(loading) && isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages) && sportPayload.sport_id === sport.id)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${\n _unref(user).sports_list.includes(sport.id) ? '-check' : ''\n }`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n type: \"checkbox\",\n checked: sport.is_active_for_user,\n onChange: updateIsActive\n }, null, 40, _hoisted_15))\n : (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(`fa fa${sport.is_active_for_user ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2))\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"threshold-input\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: sportPayload.stopped_speed_threshold,\n onInput: updateThreshold\n }, null, 40, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(sport.stopped_speed_threshold), 1))\n ], 2),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1),\n (sportPayload.sport_id === 0)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: ($event: any) => (updateSportInEdition(sport))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 9, _hoisted_21))\n : _createCommentVNode(\"\", true),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: updateSport\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_23),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: (e) => resetSport(e, sport.id)\n }, _toDisplayString(_ctx.$t('buttons.RESET')), 9, _hoisted_24),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateSportInEdition(null)))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserSportPreferences.vue?vue&type=style&index=0&id=74e52489&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e52489\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74257266\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"about-text\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-book fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-github fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = {\n href: \"https://github.com/SamR1/FitTrackee\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-balance-scale fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://choosealicense.com/licenses/agpl-3.0/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}, \" AGPLv3 \", -1))\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-envelope-o fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\"href\"]\n\nimport { ComputedRef, computed, capitalize } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'About',\n setup(__props) {\n\n const store = useStore()\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('about.FITTRACKEE_DESCRIPTION')\n }, null, 8, _hoisted_2),\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", _hoisted_4, _toDisplayString(capitalize(_ctx.$t('common.DOCUMENTATION'))), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createElementVNode(\"a\", _hoisted_6, _toDisplayString(_ctx.$t('about.SOURCE_CODE')), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_7,\n _createVNode(_component_i18n_t, { keypath: \"about.FITTRACKEE_LICENSE\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n (_unref(appConfig).admin_contact)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(appConfig).admin_contact}`\n }, _toDisplayString(_ctx.$t('about.CONTACT_ADMIN')), 9, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./About.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./About.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./About.vue?vue&type=style&index=0&id=74257266&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74257266\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./BikePic.vue?vue&type=template&id=795f7f5f&scoped=true\"\nconst script = {}\n\nimport \"./BikePic.vue?vue&type=style&index=0&id=795f7f5f&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795f7f5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bffb50d0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"about\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub about-details\" }\n\nimport About from '@/components/About.vue'\n import BikePic from '@/components/BikePic.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AboutView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(About)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=bffb50d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bffb50d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c9d1f10c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"timeline-workout\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"workout-user-date\" }\nconst _hoisted_4 = { class: \"workout-user\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"no-map\"\n}\nconst _hoisted_8 = { class: \"img\" }\nconst _hoisted_9 = { class: \"data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"data elevation\"\n}\nconst _hoisted_15 = [\"alt\"]\nconst _hoisted_16 = { class: \"data-values\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"/ \")\nconst _hoisted_18 = {\n key: 1,\n class: \"data altitude\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_20 = { class: \"data-values\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\" +\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"/- \")\n\nimport { Locale, format, formatDistance } from 'date-fns'\n import { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import StaticMap from '@/components/Common/StaticMap.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n user: IUserProfile\n useImperialUnits: boolean\n workout?: IWorkout\n sport?: ISport\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCard',\n props: {\n user: null,\n useImperialUnits: { type: Boolean },\n workout: { default: () => ({} as IWorkout) },\n sport: { default: () => ({} as ISport) }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, useImperialUnits: boolean, workout: IWorkout, sport: ISport }\n\n \n\n const store = useStore()\n\n const { user, workout, sport, useImperialUnits } = toRefs(props)\n const locale: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n (_unref(user).username)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-user-name\",\n to: {\n name: 'User',\n params: { username: _unref(user).username },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(user).username), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-title\",\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(workout).title), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true),\n (_unref(workout).workout_date && _unref(user))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"workout-date\",\n title: \n _unref(format)(\n _unref(getDateWithTZ)(_unref(workout).workout_date, _unref(user).timezone),\n 'dd/MM/yyyy HH:mm'\n )\n \n }, _toDisplayString(_unref(formatDistance)(new Date(_unref(workout).workout_date), new Date(), {\n addSuffix: true,\n locale: _unref(locale),\n })), 9, _hoisted_5))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-map\", { 'no-cursor': !_unref(workout) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_unref(workout).with_gpx)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: _unref(workout)\n }, null, 8, [\"workout\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-data\", { 'without-gpx': _unref(workout) && !_unref(workout).with_gpx }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(sport).label)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_unref(workout).moving), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).distance,\n digits: 3,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_15),\n _createElementVNode(\"div\", _hoisted_16, [\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).min_alt,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_17,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).max_alt,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _hoisted_19,\n _createElementVNode(\"div\", _hoisted_20, [\n _hoisted_21,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).ascent,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_22,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCard.vue?vue&type=style&index=0&id=c9d1f10c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-c9d1f10c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35567bf2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"timeline\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = {\n key: 1,\n class: \"more-workouts\"\n}\n\nimport { ComputedRef, computed, ref, onBeforeMount, toRefs } from 'vue'\n\n import WorkoutCard from '@/components/Workout/WorkoutCard.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Timeline',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n }\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const page = ref(1)\n const per_page = 5\n const initWorkoutsCount =\n props.user.nb_workouts >= per_page ? per_page : props.user.nb_workouts\n onBeforeMount(() => loadWorkouts())\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]\n )\n const moreWorkoutsExist: ComputedRef = computed(() =>\n workouts.value.length > 0\n ? workouts.value[workouts.value.length - 1].previous_workout !== null\n : false\n )\n\n function loadWorkouts() {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n function loadMoreWorkouts() {\n page.value += 1\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.LATEST_WORKOUTS')), 1),\n (_unref(user).nb_workouts > 0 && _unref(workouts).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList([...Array(_unref(initWorkoutsCount)).keys()], (index) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: index\n }, null, 8, [\"user\", \"useImperialUnits\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n workout: workout,\n sport: \n _unref(workouts).length > 0\n ? _unref(sports).filter((s) => s.id === workout.sport_id)[0]\n : null\n ,\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: workout.id\n }, null, 8, [\"workout\", \"sport\", \"user\", \"useImperialUnits\"]))\n }), 128)),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(moreWorkoutsExist))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", { onClick: loadMoreWorkouts }, _toDisplayString(_ctx.$t('workouts.LOAD_MORE_WORKOUT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}\n}\n\n})","import script from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Timeline.vue?vue&type=style&index=0&id=35567bf2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35567bf2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { toRefs } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n interface Props {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkout',\n props: {\n displayHARecord: { type: Boolean },\n workout: null,\n sportLabel: null,\n sportColor: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n\n \n\n const { displayHARecord, workout, sportLabel, sportColor } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-workout\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.$router.push({ name: 'Workout', params: { workoutId: _unref(workout).id } })\n ))\n }, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sportLabel),\n title: _unref(workout).title,\n color: _unref(sportColor)\n }, null, 8, [\"sport-label\", \"title\", \"color\"]),\n _createElementVNode(\"sup\", null, [\n (_unref(workout).records.length > 0)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\",\n title: \n _unref(workout).records\n .filter((record) =>\n _unref(displayHARecord) ? true : record.record_type !== 'HA'\n )\n .map((record) => ` ${_ctx.$t(`workouts.RECORD_${record.record_type}`)}`)\n \n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkout.vue?vue&type=style&index=0&id=331e1c8b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"donut-chart\" }\nconst _hoisted_2 = {\n height: \"34\",\n width: \"34\",\n viewBox: \"0 0 34 34\"\n}\nconst _hoisted_3 = [\"stroke\", \"stroke-dashoffset\", \"transform\"]\n\nimport { toRefs } from 'vue'\n\n interface Props {\n colors: Record\n datasets: Record>\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'DonutChart',\n props: {\n colors: null,\n datasets: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n }\n\n \n\n const { colors, datasets } = toRefs(props)\n let angleOffset = -90\n const cx = 16\n const cy = 16\n const radius = 14\n const circumference = 2 * Math.PI * radius\n\n function calculateStrokeDashOffset(\n percentage: number,\n circumference: number\n ): number {\n return circumference - percentage * circumference\n }\n function returnCircleTransformValue(\n index: number,\n percentage: number\n ): string {\n const rotation = `rotate(${angleOffset}, ${cx}, ${cy})`\n angleOffset = percentage * 360 + angleOffset\n return rotation\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries(_unref(datasets)), (data, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n _createElementVNode(\"circle\", {\n cx: cx,\n cy: cy,\n r: radius,\n fill: \"transparent\",\n stroke: _unref(colors)[+data[0]],\n \"stroke-dashoffset\": \n calculateStrokeDashOffset(data[1].percentage, circumference)\n ,\n \"stroke-dasharray\": circumference,\n \"stroke-width\": \"3\",\n \"stroke-opacity\": \"0.8\",\n transform: returnCircleTransformValue(index, data[1].percentage)\n }, null, 8, _hoisted_3)\n ]))\n }), 128))\n ]))\n ]))\n}\n}\n\n})","import script from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52d4310a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"calendar-workouts-chart\" }\nconst _hoisted_2 = { class: \"workouts-count\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-pane\"\n}\nconst _hoisted_4 = { class: \"more-workouts\" }\n\nimport { ref, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import DonutChart from '@/components/Dashboard/UserCalendar/DonutChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n\n interface Props {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkoutsChart',\n props: {\n colors: null,\n datasets: null,\n sports: null,\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n\n \n\n const { colors, datasets, sports, workouts } = toRefs(props)\n const isHidden = ref(true)\n\n function togglePane(event: Event & { target: HTMLElement }) {\n event.stopPropagation()\n isHidden.value = !isHidden.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"workouts-chart\",\n onClick: togglePane\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(workouts).length), 1),\n _createVNode(DonutChart, {\n datasets: _unref(datasets),\n colors: _unref(colors)\n }, null, 8, [\"datasets\", \"colors\"])\n ]),\n (!isHidden.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"i\", {\n class: \"fa fa-times calendar-more\",\n \"aria-hidden\": \"true\",\n onClick: togglePane\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ])), [\n [_directive_click_outside, togglePane]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkoutsChart.vue?vue&type=style&index=0&id=52d4310a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52d4310a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-workouts\" }\nconst _hoisted_2 = { class: \"desktop-display\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-display\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"donut-display\"\n}\nconst _hoisted_5 = { class: \"mobile-display\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"donut-display\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import CalendarWorkoutsChart from '@/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel, sportIdColors } from '@/utils/sports'\n import { getDonutDatasets } from '@/utils/workouts'\n\n interface Props {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkouts',\n props: {\n displayHARecord: { type: Boolean },\n workouts: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n\n \n\n const { displayHARecord, workouts, sports } = toRefs(props)\n const chartDatasets = computed(() => getDonutDatasets(props.workouts))\n const colors = computed(() => sportIdColors(props.sports))\n const displayedWorkoutCount = 6\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workouts).length <= displayedWorkoutCount)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts).slice(0, displayedWorkoutCount), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n displayHARecord: _unref(displayHARecord),\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"displayHARecord\", \"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkouts.vue?vue&type=style&index=0&id=5aab7455&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-cells\" }\nconst _hoisted_2 = { class: \"calendar-cell-day\" }\n\nimport { addDays, format, isSameDay, isSameMonth, isToday } from 'date-fns'\n import { Ref, ref, toRefs, watch, onMounted } from 'vue'\n\n import CalendarWorkouts from '@/components/Dashboard/UserCalendar/CalendarWorkouts.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarCells',\n props: {\n currentDay: null,\n displayHARecord: { type: Boolean },\n endDate: null,\n sports: null,\n startDate: null,\n timezone: null,\n weekStartingMonday: { type: Boolean },\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n\n \n\n const {\n currentDay,\n displayHARecord,\n endDate,\n sports,\n startDate,\n timezone,\n weekStartingMonday,\n workouts,\n } = toRefs(props)\n const rows: Ref = ref([])\n\n onMounted(() => getDays())\n\n function getDays() {\n rows.value = []\n let day = startDate.value\n while (day <= endDate.value) {\n const days: Date[] = []\n for (let i = 0; i < 7; i++) {\n days.push(day)\n day = addDays(day, 1)\n }\n rows.value.push(days)\n }\n }\n function isWeekEnd(day: number): boolean {\n return weekStartingMonday.value\n ? [5, 6].includes(day)\n : [0, 6].includes(day)\n }\n function filterWorkouts(day: Date, workouts: IWorkout[]) {\n if (workouts) {\n return workouts\n .filter((workout) =>\n isSameDay(getDateWithTZ(workout.workout_date, timezone.value), day)\n )\n .reverse()\n }\n return []\n }\n\n watch(\n () => props.currentDay,\n () => getDays()\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-row\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row, (day, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"calendar-cell\", {\n 'disabled-cell': !_unref(isSameMonth)(day, _unref(currentDay)),\n 'week-end': isWeekEnd(i),\n today: _unref(isToday)(day),\n }]),\n key: i\n }, [\n _createVNode(CalendarWorkouts, {\n workouts: filterWorkouts(day, _unref(workouts)),\n sports: _unref(sports),\n displayHARecord: _unref(displayHARecord)\n }, null, 8, [\"workouts\", \"sports\", \"displayHARecord\"]),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(format)(day, 'd')), 1)\n ], 2))\n }), 128))\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarCells.vue?vue&type=style&index=0&id=34b99f0e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-days\" }\n\nimport { Locale, format, addDays } from 'date-fns'\n\n interface Props {\n startDate: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarDays',\n props: {\n startDate: null,\n localeOptions: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n startDate: Date\n localeOptions: Locale\n }\n\n \n\n const days = []\n for (let i = 0; i < 7; i++) {\n days.push(addDays(props.startDate, i))\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(days, (day, index) => {\n return _createElementVNode(\"div\", {\n class: \"calendar-day\",\n key: index\n }, _toDisplayString(_unref(format)(day, 'EEE', { locale: __props.localeOptions })), 1)\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarDays.vue?vue&type=style&index=0&id=4f3dc99e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-header\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { class: \"calendar-month\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { Locale, format } from 'date-fns'\n import { toRefs } from 'vue'\n\n interface Props {\n day: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarHeader',\n props: {\n day: null,\n localeOptions: null\n },\n emits: ['displayNextMonth', 'displayPreviousMonth'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n day: Date\n localeOptions: Locale\n }\n\n \n\n \n\n const { day, localeOptions } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-left\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('displayPreviousMonth')))\n }, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(format)(_unref(day), 'MMM yyyy', { locale: _unref(localeOptions) })), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-right\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('displayNextMonth')))\n }, _hoisted_6)\n ]))\n}\n}\n\n})","import script from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarHeader.vue?vue&type=style&index=0&id=79a65a70&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-calendar\" }\nconst _hoisted_2 = { class: \"calendar-card box\" }\n\nimport { Locale, addMonths, format, subMonths } from 'date-fns'\n import { ComputedRef, computed, ref, toRefs, onBeforeMount } from 'vue'\n\n import CalendarCells from '@/components/Dashboard/UserCalendar/CalendarCells.vue'\n import CalendarDays from '@/components/Dashboard/UserCalendar/CalendarDays.vue'\n import CalendarHeader from '@/components/Dashboard/UserCalendar/CalendarHeader.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getCalendarStartAndEnd } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n }\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const dateFormat = 'yyyy-MM-dd'\n const day = ref(new Date())\n const calendarDates = ref(getCalendarStartAndEnd(day.value, props.user.weekm))\n const calendarWorkouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]\n )\n const localeOptions: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n onBeforeMount(() => getCalendarWorkouts())\n\n function getCalendarWorkouts() {\n calendarDates.value = getCalendarStartAndEnd(day.value, props.user.weekm)\n const apiParams: TWorkoutsPayload = {\n from: format(calendarDates.value.start, dateFormat),\n to: format(calendarDates.value.end, dateFormat),\n page: 1,\n per_page: 100,\n ...defaultOrder,\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS, apiParams)\n }\n function displayNextMonth() {\n day.value = addMonths(day.value, 1)\n getCalendarWorkouts()\n }\n function displayPreviousMonth() {\n day.value = subMonths(day.value, 1)\n getCalendarWorkouts()\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(CalendarHeader, {\n day: day.value,\n \"locale-options\": _unref(localeOptions),\n onDisplayNextMonth: displayNextMonth,\n onDisplayPreviousMonth: displayPreviousMonth\n }, null, 8, [\"day\", \"locale-options\"]),\n _createVNode(CalendarDays, {\n \"start-date\": calendarDates.value.start,\n \"locale-options\": _unref(localeOptions)\n }, null, 8, [\"start-date\", \"locale-options\"]),\n _createVNode(CalendarCells, {\n currentDay: day.value,\n displayHARecord: _unref(user).display_ascent,\n \"end-date\": calendarDates.value.end,\n sports: _unref(sports),\n \"start-date\": calendarDates.value.start,\n timezone: _unref(user).timezone,\n workouts: _unref(calendarWorkouts),\n weekStartingMonday: _unref(user).weekm\n }, null, 8, [\"currentDay\", \"displayHARecord\", \"end-date\", \"sports\", \"start-date\", \"timezone\", \"workouts\", \"weekStartingMonday\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3e7444d9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1bcddc12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-month-stats\" }\n\nimport { endOfMonth, startOfMonth } from 'date-fns'\n import { toRefs } from 'vue'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserMonthStats',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n }\n\n \n\n const { sports, user } = toRefs(props)\n const date = new Date()\n const chartParams = {\n duration: 'week',\n start: startOfMonth(date),\n end: endOfMonth(date),\n }\n const selectedSportIds = props.sports.map((sport) => sport.id)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.THIS_MONTH')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n \"chart-params\": chartParams,\n \"displayed-sport-ids\": _unref(selectedSportIds),\n \"hide-chart-if-no-data\": true\n }, null, 8, [\"sports\", \"user\", \"displayed-sport-ids\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserMonthStats.vue?vue&type=style&index=0&id=1bcddc12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bcddc12\"]])\n\nexport default __exports__","import { ITranslatedSport } from '@/types/sports'\nimport { TUnit } from '@/types/units'\nimport { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\nimport { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\nimport { convertDistance, units } from '@/utils/units'\n\nexport const formatRecord = (\n record: IRecord,\n tz: string,\n useImperialUnits: boolean\n): Record => {\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = useImperialUnits\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = useImperialUnits\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 2\n )} ${distanceUnitTo}/h`\n break\n case 'FD':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 3\n )} ${distanceUnitTo}`\n break\n case 'HA':\n value = `${convertDistance(\n +record.value,\n ascentUnitFrom,\n ascentUnitTo,\n 2\n )} ${ascentUnitTo}`\n break\n case 'LD':\n value = record.value\n break\n default:\n throw new Error(\n `Invalid record type, expected: \"AS\", \"FD\", \"HA\", \"LD\", \"MD\", got: \"${record.record_type}\"`\n )\n }\n return {\n workout_date: formatWorkoutDate(getDateWithTZ(record.workout_date, tz))\n .workout_date,\n workout_id: record.workout_id,\n id: record.id,\n record_type: record.record_type,\n value: value,\n }\n}\n\nexport const sortRecords = (a: ICardRecord, b: ICardRecord): number => {\n const recordALabel = a.label.toLowerCase()\n const recordBLabel = b.label.toLowerCase()\n return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0\n}\n\nexport const getRecordsBySports = (\n records: IRecord[],\n translatedSports: ITranslatedSport[],\n tz: string,\n useImperialUnits: boolean,\n display_ascent: boolean\n): IRecordsBySports =>\n records\n .filter((r) => (display_ascent ? true : r.record_type !== 'HA'))\n .reduce((sportList: IRecordsBySports, record) => {\n const sport = translatedSports.find((s) => s.id === record.sport_id)\n if (sport && sport.label) {\n if (sportList[sport.translatedLabel] === void 0) {\n sportList[sport.translatedLabel] = {\n label: sport.label,\n color: sport.color,\n records: [],\n }\n }\n sportList[sport.translatedLabel].records.push(\n formatRecord(record, tz, useImperialUnits)\n )\n }\n return sportList\n }, {})\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b5480ab0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"records-card\" }\nconst _hoisted_2 = { class: \"record-type\" }\nconst _hoisted_3 = { class: \"record-value\" }\nconst _hoisted_4 = { class: \"record-date\" }\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\n import { sortRecords } from '@/utils/records'\n\n interface Props {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'RecordsCard',\n props: {\n records: null,\n sportTranslatedLabel: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n\n \n\n const { records, sportTranslatedLabel } = toRefs(props)\n\n const { t } = useI18n()\n\n function getTranslatedRecords(records: IRecord[]): ICardRecord[] {\n const translatedRecords: ICardRecord[] = []\n records.map((record) => {\n translatedRecords.push({\n ...record,\n label: t(`workouts.RECORD_${record.record_type}`),\n })\n })\n return translatedRecords.sort(sortRecords)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(records).label,\n color: _unref(records).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(sportTranslatedLabel)), 1)\n ]),\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getTranslatedRecords(_unref(records).records), (record) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: record.id\n }, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(record.label), 1),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(record.value), 1),\n _createElementVNode(\"span\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: {\n name: 'Workout',\n params: { workoutId: record.workout_id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(record.workout_date), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]))\n }), 128))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RecordsCard.vue?vue&type=style&index=0&id=b5480ab0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b5480ab0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-27dfbb65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-records-section\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"user-records\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"no-records\"\n}\n\nimport { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { getRecordsBySports } from '@/utils/records'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n }\n\n \n\n const { t } = useI18n()\n\n const recordsBySport = computed(() =>\n getRecordsBySports(\n props.user.records,\n translateSports(props.sports, t),\n props.user.timezone,\n props.user.imperial_units,\n props.user.display_ascent\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.RECORD', 2)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (Object.keys(_unref(recordsBySport)).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_RECORDS')), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_unref(recordsBySport)).sort(), (sportTranslatedLabel) => {\n return (_openBlock(), _createBlock(RecordsCard, {\n sportTranslatedLabel: sportTranslatedLabel,\n records: _unref(recordsBySport)[sportTranslatedLabel],\n key: sportTranslatedLabel,\n useImperialUnits: __props.user.imperial_units\n }, null, 8, [\"sportTranslatedLabel\", \"records\", \"useImperialUnits\"]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=27dfbb65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-27dfbb65\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { ComputedRef, computed, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import { convertDistance, units } from '@/utils/units'\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n }\n\n \n\n const { t } = useI18n()\n\n const { user } = toRefs(props)\n const userTotalDuration: ComputedRef = computed(\n () => props.user.total_duration\n )\n const totalDuration = computed(() => get_duration(userTotalDuration))\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = user.value.imperial_units\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const totalDistance: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_distance, distanceUnitFrom, distanceUnitTo, 2)\n : parseFloat(user.value.total_distance.toFixed(2)))\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = user.value.imperial_units\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n const totalAscent: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_ascent, ascentUnitFrom, ascentUnitTo, 2)\n : parseFloat(user.value.total_ascent.toFixed(2)))\n\n\n function get_duration(total_duration: ComputedRef) {\n const duration = total_duration.value.match(/day/g)\n ? total_duration.value.split(', ')[1]\n : total_duration.value\n return {\n days: total_duration.value.match(/day/g)\n ? `${total_duration.value.split(' ')[0]} ${\n total_duration.value.match(/days/g)\n ? t('common.DAY', 2)\n : t('common.DAY', 1)\n }`\n : `0 ${t('common.DAY', 2)},`,\n duration: `${duration.split(':')[0]}h ${duration.split(':')[1]}min`,\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(user).nb_workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"road\",\n value: _unref(totalDistance),\n text: _unref(distanceUnitTo) === 'mi' ? 'miles' : _unref(distanceUnitTo)\n }, null, 8, [\"value\", \"text\"]),\n (_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 0,\n icon: \"location-arrow\",\n value: _unref(totalAscent),\n text: _unref(ascentUnitTo) === 'ft' ? 'feet' : _unref(ascentUnitTo)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(StatCard, {\n icon: \"clock-o\",\n value: _unref(totalDuration).days,\n text: _unref(totalDuration).duration\n }, null, 8, [\"value\", \"text\"]),\n (!_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 1,\n icon: \"tags\",\n value: _unref(user).nb_sports,\n text: _ctx.$t('workouts.SPORT', _unref(user).nb_sports)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=22dcb990&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4c0893c1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"dashboard\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container mobile-menu\" }\nconst _hoisted_3 = { class: \"box\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-calendar\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-bar-chart\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"container\" }\nconst _hoisted_13 = { class: \"container dashboard-container\" }\nconst _hoisted_14 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_15 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_17 = {\n key: 1,\n class: \"app-loading\"\n}\n\nimport { ComputedRef, Ref, computed, onBeforeMount, ref } from 'vue'\n\n import Timeline from '@/components/Dashboard/Timeline.vue'\n import UserCalendar from '@/components/Dashboard/UserCalendar/index.vue'\n import UserMonthStats from '@/components/Dashboard/UserMonthStats.vue'\n import UserRecords from '@/components/Dashboard/UserRecords/index.vue'\n import UserStatsCards from '@/components/Dashboard/UserStatsCards/index.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dashboard',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const isSelected: Ref = ref('calendar')\n\n onBeforeMount(() => store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE))\n\n function updateDisplayColumn(target: string) {\n isSelected.value = target\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n\n return (_unref(authUser).username && _unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'calendar' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateDisplayColumn('calendar')))\n }, _hoisted_5, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'chart' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayColumn('chart')))\n }, _hoisted_7, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'timeline' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayColumn('timeline')))\n }, _hoisted_9, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'records' }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateDisplayColumn('records')))\n }, _hoisted_11, 2)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(UserMonthStats, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'chart') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(UserRecords, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'records') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(UserCalendar, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'calendar') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(Timeline, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'timeline') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ])\n ]),\n _hoisted_16\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_Loader)\n ]))\n}\n}\n\n})","import script from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dashboard.vue?vue&type=style&index=0&id=4c0893c1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4c0893c1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"not-found view\" }\n\nimport NotFound from '@/components/Common/NotFound.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFoundView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(NotFound)\n ]))\n}\n}\n\n})","import script from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6a38125b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"loginOrRegister\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub\" }\n\nimport { toRefs } from 'vue'\n\n import BikePic from '@/components/BikePic.vue'\n import LoginOrRegisterForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoginOrRegister',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n }\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(LoginOrRegisterForm, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./LoginOrRegister.vue?vue&type=style&index=0&id=6a38125b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6a38125b\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport AddUserApp from '@/components/User/UserApps/AddUserApp.vue'\nimport AuthorizeUserApp from '@/components/User/UserApps/AuthorizeUserApp.vue'\nimport UserApps from '@/components/User/UserApps/index.vue'\nimport UserApp from '@/components/User/UserApps/UserApp.vue'\nimport UserAppsList from '@/components/User/UserApps/UserAppsList.vue'\nimport UserSportPreferences from '@/components/User/UserSportPreferences.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport AboutView from '@/views/AboutView.vue'\nimport Dashboard from '@/views/Dashboard.vue'\nimport NotFoundView from '@/views/NotFoundView.vue'\nimport LoginOrRegister from '@/views/user/LoginOrRegister.vue'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: Dashboard,\n },\n {\n path: '/login',\n name: 'Login',\n component: LoginOrRegister,\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: LoginOrRegister,\n props: { action: 'register' },\n },\n {\n path: '/account-confirmation',\n name: 'AccountConfirmation',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/AccountConfirmationView.vue'\n ),\n },\n {\n path: '/account-confirmation/resend',\n name: 'AccountConfirmationResend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'account-confirmation-resend' },\n },\n {\n path: '/account-confirmation/email-sent',\n name: 'AccountConfirmationEmailSend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'email-sent' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/email-update',\n name: 'EmailUpdate',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/EmailUpdateView.vue'\n ),\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n {\n path: 'sports',\n name: 'UserSportPreferences',\n component: UserSportPreferences,\n props: { isEdition: false },\n },\n {\n path: 'apps',\n name: 'UserApps',\n component: UserApps,\n children: [\n {\n path: '',\n name: 'UserAppsList',\n component: UserAppsList,\n },\n {\n path: ':id',\n name: 'UserApp',\n component: UserApp,\n },\n {\n path: ':id/created',\n name: 'CreatedUserApp',\n component: UserApp,\n props: { afterCreation: true },\n },\n {\n path: 'new',\n name: 'AddUserApp',\n component: AddUserApp,\n },\n {\n path: 'authorize',\n name: 'AuthorizeUserApp',\n component: AuthorizeUserApp,\n },\n ],\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'account',\n name: 'UserAccountEdition',\n component: UserAccountEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n {\n path: 'sports',\n name: 'UserSportPreferencesEdition',\n component: UserSportPreferences,\n props: { isEdition: true },\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'statistics' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users/:username',\n name: 'UserFromAdmin',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n props: { fromAdmin: true },\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/about',\n name: 'About',\n component: AboutView,\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: NotFoundView,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n '/account-confirmation',\n '/account-confirmation/resend',\n '/account-confirmation/email-sent',\n]\n\nconst pathsWithoutChecks = ['/email-update', '/about']\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (pathsWithoutChecks.includes(to.path)) {\n return next()\n }\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n }\n if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","export enum AuthUserActions {\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n CONFIRM_ACCOUNT = 'CONFIRM_ACCOUNT',\n CONFIRM_EMAIL = 'CONFIRM_EMAIL',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n RESEND_ACCOUNT_CONFIRMATION_EMAIL = 'RESEND_ACCOUNT_CONFIRMATION_EMAIL',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n RESET_USER_SPORT_PREFERENCES = 'RESET_USER_SPORT_PREFERENCES',\n UPDATE_USER_ACCOUNT = 'UPDATE_USER_ACCOUNT',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n IS_SUCCESS = 'IS_SUCCESS',\n IS_REGISTRATION_SUCCESS = 'IS_REGISTRATION_SUCCESS',\n USER_LOADING = 'USER_LOADING',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_IS_SUCCESS = 'UPDATE_USER_IS_SUCCESS',\n UPDATE_IS_REGISTRATION_SUCCESS = 'UPDATE_IS_REGISTRATION_SUCCESS',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n}\n","export enum OAuth2Actions {\n AUTHORIZE_CLIENT = 'AUTHORIZE_CLIENT',\n CREATE_CLIENT = 'CREATE_CLIENT',\n DELETE_CLIENT = 'DELETE_CLIENT',\n GET_CLIENTS = 'GET_CLIENTS',\n GET_CLIENT_BY_CLIENT_ID = 'GET_CLIENT_BY_CLIENT_ID',\n GET_CLIENT_BY_ID = 'GET_CLIENT_BY_ID',\n REVOKE_ALL_TOKENS = 'REVOKE_ALL_TOKENS',\n}\n\nexport enum OAuth2Getters {\n CLIENT = 'CLIENT',\n CLIENTS = 'CLIENTS',\n CLIENTS_PAGINATION = 'CLIENTS_PAGINATION',\n REVOCATION_SUCCESSFUL = 'REVOCATION_SUCCESSFUL',\n}\n\nexport enum OAuth2Mutations {\n EMPTY_CLIENT = 'EMPTY_CLIENT',\n SET_CLIENT = 'SET_CLIENT',\n SET_CLIENTS = 'SET_CLIENTS',\n SET_CLIENTS_PAGINATION = 'SET_CLIENTS_PAGINATION',\n SET_REVOCATION_SUCCESSFUL = 'SET_REVOCATION_SUCCESSFUL',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LANGUAGE = 'UPDATE_APPLICATION_LANGUAGE',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n DELETE_USER_ACCOUNT = 'DELETE_USER_ACCOUNT',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_IS_SUCCESS = 'USERS_IS_SUCCESS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n UPDATE_IS_SUCCESS = 'UPDATE_IS_SUCCESS',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n OAuth2Actions,\n OAuth2Getters,\n OAuth2Mutations,\n} from '@/store/modules/oauth2/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\nexport const OAUTH2_STORE = {\n ACTIONS: OAuth2Actions,\n GETTERS: OAuth2Getters,\n MUTATIONS: OAuth2Mutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\napi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n return config\n },\n (error) => Promise.reject(error)\n)\n\napi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload, IUserDeletionPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const deleteUserAccount = (\n context:\n | ActionContext\n | ActionContext,\n payload: IUserDeletionPayload\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n if (payload.fromAdmin) {\n router.push('/admin/users')\n } else {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n const data: Record = {}\n if (payload.admin !== undefined) {\n data.admin = payload.admin\n }\n if (payload.resetPassword) {\n data.reset_password = payload.resetPassword\n }\n if (payload.activate) {\n data.activate = payload.activate\n }\n if (payload.new_email !== undefined) {\n data.new_email = payload.new_email\n }\n authApi\n .patch(`users/${payload.username}`, data)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n if (payload.resetPassword || payload.new_email) {\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n }\n if (payload.activate || payload.new_email) {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, {\n username: payload.username,\n fromAdmin: true,\n })\n },\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { deleteUserAccount } from '@/store/modules/users/actions'\nimport {\n ILoginOrRegisterData,\n IUserAccountPayload,\n IUserDeletionPayload,\n IUserAccountUpdatePayload,\n IUserEmailPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n IUserSportPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n // after logout in another tab\n if (\n !window.localStorage.authToken &&\n context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n removeAuthUserData(context)\n }\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/confirm', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n api\n .post('/auth/email/update', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n if (payload.refreshUser) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => {\n return router.push('/profile/edit/account')\n })\n }\n router.push('/profile/edit/account')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (res.data.data.language) {\n context.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n if (error.message !== 'canceled') {\n handleError(context, error)\n removeAuthUserData(context)\n }\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n if (data.actionType === 'login') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n router\n .push('/login')\n .then(() =>\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n true\n )\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/logout')\n .then((res) => {\n if (res.data.status === 'success') {\n removeAuthUserData(context)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n authApi\n .patch('auth/profile/edit/account', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context\n .dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n .then(() => router.push('/profile/preferences'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES](\n context: ActionContext,\n sportId: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/profile/reset/sports/${sportId}`)\n .then((res) => {\n if (res.status === 204) {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](\n context: ActionContext,\n payload: IUserSportPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/sports', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, payload)\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/resend-confirmation', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/account-confirmation/email-sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]: (\n state: IAuthUserState\n ) => {\n return state.isRegistrationSuccess\n },\n [AUTH_USER_STORE.GETTERS.IS_SUCCESS]: (state: IAuthUserState) => {\n return state.isSuccess\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IAuthUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](\n state: IAuthUserState,\n isRegistrationSuccess: boolean\n ) {\n state.isRegistrationSuccess = isRegistrationSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IAuthUserState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n isSuccess: false,\n isRegistrationSuccess: false,\n loading: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\nimport { IOAuth2Actions, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IOauth2ClientsPayload,\n IOAuth2ClientPayload,\n IOAuth2ClientAuthorizePayload,\n} from '@/types/oauth'\nimport { handleError } from '@/utils'\n\nconst get_client = (\n context: ActionContext,\n url: string\n) => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(url)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENT, res.data.data.client)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IOAuth2Actions = {\n [OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientAuthorizePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n const form = new FormData()\n form.set('client_id', payload.client_id)\n form.set('response_type', payload.response_type)\n form.set('scope', payload.scope)\n form.set('confirm', 'true')\n if (payload.state) {\n form.set('state', payload.state)\n }\n if (payload.code_challenge) {\n form.set('code_challenge', payload.code_challenge)\n }\n if (payload.code_challenge_method) {\n form.set('code_challenge_method', payload.code_challenge_method)\n }\n\n authApi\n .post('oauth/authorize', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.status == 200 && res.data.redirect_url) {\n window.location.href = res.data.redirect_url\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.CREATE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('oauth/apps', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENT,\n res.data.data.client\n )\n router.push(`/profile/apps/${res.data.data.client.id}/created`)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.DELETE_CLIENT](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`oauth/apps/${id}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS)\n .then(() => router.push('/profile/apps'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID](\n context: ActionContext,\n client_id: string\n ): void {\n get_client(context, `oauth/apps/${client_id}`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID](\n context: ActionContext,\n id: number\n ): void {\n get_client(context, `oauth/apps/${id}/by_id`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENTS](\n context: ActionContext,\n payload: IOauth2ClientsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('oauth/apps', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS,\n res.data.data.clients\n )\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n authApi\n .post(`oauth/apps/${id}/revoke`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2Getters, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IOAuth2Getters = {\n [OAUTH2_STORE.GETTERS.CLIENT]: (state: IOAuth2State) => state.client,\n [OAUTH2_STORE.GETTERS.CLIENTS]: (state: IOAuth2State) => state.clients,\n [OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]: (state: IOAuth2State) =>\n state.pagination,\n [OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]: (state: IOAuth2State) =>\n state.revocationSuccessful,\n}\n","import { MutationTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2State, TOAuth2Mutations } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const mutations: MutationTree & TOAuth2Mutations = {\n [OAUTH2_STORE.MUTATIONS.SET_CLIENT](\n state: IOAuth2State,\n client: IOAuth2Client\n ) {\n state.client = client\n },\n [OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT](state: IOAuth2State) {\n state.client = {}\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS](\n state: IOAuth2State,\n clients: IOAuth2Client[]\n ) {\n state.clients = clients\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION](\n state: IOAuth2State,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL](\n state: IOAuth2State,\n revocationSuccessful: boolean\n ) {\n state.revocationSuccessful = revocationSuccessful\n },\n}\n","import { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const oAuth2State: IOAuth2State = {\n client: {},\n clients: [],\n pagination: {},\n revocationSuccessful: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/oauth2/actions'\nimport { getters } from '@/store/modules/oauth2/getters'\nimport { mutations } from '@/store/modules/oauth2/mutations'\nimport { oAuth2State } from '@/store/modules/oauth2/state'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst oauth2: Module = {\n state: oAuth2State,\n actions,\n getters,\n mutations,\n}\n\nexport default oauth2\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE](\n context: ActionContext,\n language: string\n ): void {\n document.querySelector('html')?.setAttribute('lang', language)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, language)\n locale.value = language\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {\n statistics: {\n sports: 0,\n uploads_dir_size: 0,\n users: 0,\n workouts: 0,\n },\n },\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_IS_SUCCESS]: (state: IUsersState) => {\n return state.isSuccess\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IUsersState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n isSuccess: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${payload.notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport oAuthModule from '@/store/modules/oauth2'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n oAuthModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n if (typeof locationQuery.q === 'string') {\n query.q = locationQuery.q\n } else {\n delete query.q\n }\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat),\n workout_time: format(dateTime, timeFormat),\n }\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n // if request is cancelled, no error to display\n if (error && error.message === 'canceled') {\n return\n }\n\n // if stored token is blacklisted, disconnect user\n if (\n error?.response?.status === 401 &&\n error.response.data.error === 'invalid_token'\n ) {\n localStorage.removeItem('authToken')\n context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n return\n }\n\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : error.response.data.message\n ? error.response.data.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n de: de,\n en: enUS,\n fr: fr,\n}\n\nexport const languageLabels: Record = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Français',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","import { ISport, ITranslatedSport, TActiveStatus } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Snowshoes: '#5780a8',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map(\n (sport) =>\n (colors[sport.id] = sport.color ? sport.color : sportColors[sport.label])\n )\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n activeStatus: TActiveStatus = 'all',\n sportsToInclude: number[] = []\n): ITranslatedSport[] =>\n sports\n .filter((sport) =>\n activeStatus === 'all'\n ? true\n : sportsToInclude.includes(sport.id) || sport[activeStatus]\n )\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n\nexport const getSportColor = (\n workout: IWorkout,\n sports: ISport[]\n): string | null => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.color)[0]\n}\n","import {\n addMonths,\n addWeeks,\n addYears,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\n\nimport { IChartDataset } from '@/types/chart'\nimport { ISport } from '@/types/sports'\nimport {\n IStatisticsChartData,\n IStatisticsDateParams,\n TStatisticsDatasetKeys,\n TStatisticsDatasets,\n TStatisticsFromApi,\n} from '@/types/statistics'\nimport { incrementDate, getStartDate } from '@/utils/dates'\nimport { sportColors } from '@/utils/sports'\nimport { convertStatsDistance } from '@/utils/units'\n\nconst dateFormats: Record> = {\n week: {\n api: 'yyyy-MM-dd',\n chart: 'dd/MM/yyyy',\n },\n month: {\n api: 'yyyy-MM',\n chart: 'MM/yyyy',\n },\n year: {\n api: 'yyyy',\n chart: 'yyyy',\n },\n}\n\nexport const datasetKeys: TStatisticsDatasetKeys[] = [\n 'average_speed',\n 'nb_workouts',\n 'total_duration',\n 'total_distance',\n 'total_ascent',\n 'total_descent',\n]\n\nexport const getDateKeys = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean\n): Date[] => {\n const days = []\n for (\n let day = getStartDate(params.duration, params.start, weekStartingMonday);\n day <= params.end;\n day = incrementDate(params.duration, day)\n ) {\n days.push(day)\n }\n return days\n}\n\nconst getStatisticsChartDataset = (\n sportLabel: string,\n color: string,\n isLineChart = false\n): IChartDataset => {\n const dataset: IChartDataset = {\n label: sportLabel,\n backgroundColor: [color],\n data: [],\n }\n if (isLineChart) {\n dataset.type = 'line'\n dataset.borderColor = [color]\n dataset.spanGaps = true\n }\n return dataset\n}\n\nexport const getDatasets = (displayedSports: ISport[]): TStatisticsDatasets => {\n const datasets: TStatisticsDatasets = {\n average_speed: [],\n nb_workouts: [],\n total_distance: [],\n total_duration: [],\n total_ascent: [],\n total_descent: [],\n }\n displayedSports.map((sport) => {\n const color = sport.color ? sport.color : sportColors[sport.label]\n datasets.average_speed.push(\n getStatisticsChartDataset(sport.label, color, true)\n )\n datasets.nb_workouts.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_distance.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_duration.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_ascent.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_descent.push(getStatisticsChartDataset(sport.label, color))\n })\n return datasets\n}\n\nexport const convertStatsValue = (\n datasetKey: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean\n): number => {\n switch (datasetKey) {\n case 'average_speed':\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return convertStatsDistance(\n ['average_speed', 'total_distance'].includes(datasetKey) ? 'km' : 'm',\n value,\n useImperialUnits\n )\n default:\n case 'nb_workouts':\n case 'total_duration':\n return value\n }\n}\n\nexport const formatStats = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean,\n sports: ISport[],\n displayedSportsId: number[],\n apiStats: TStatisticsFromApi,\n useImperialUnits: boolean\n): IStatisticsChartData => {\n const dayKeys = getDateKeys(params, weekStartingMonday)\n const dateFormat = dateFormats[params.duration]\n const displayedSports = sports.filter((sport) =>\n displayedSportsId.includes(sport.id)\n )\n const labels: string[] = []\n const datasets = getDatasets(displayedSports)\n const sportsId: Record = {}\n displayedSports.map(\n (displayedSport) => (sportsId[displayedSport.label] = displayedSport.id)\n )\n\n dayKeys.map((key) => {\n const date: string = format(key, dateFormat.api)\n const label: string = format(key, dateFormat.chart)\n labels.push(label)\n datasetKeys.map((datasetKey) => {\n datasets[datasetKey].map((dataset) => {\n dataset.data.push(\n date in apiStats && sportsId[dataset.label] in apiStats[date]\n ? convertStatsValue(\n datasetKey,\n apiStats[date][sportsId[dataset.label]][datasetKey],\n useImperialUnits\n )\n : datasetKey === 'average_speed'\n ? null\n : 0\n )\n })\n })\n })\n return {\n labels,\n datasets,\n }\n}\n\nexport const getStatsDateParams = (\n date: Date,\n timeFrame: string,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const weekStartsOn = weekStartingMonday ? 1 : 0\n const start =\n timeFrame === 'year'\n ? startOfYear(subYears(date, 9))\n : timeFrame === 'week'\n ? startOfWeek(subMonths(date, 2), { weekStartsOn })\n : startOfMonth(subMonths(date, 11)) // month\n const end =\n timeFrame === 'year'\n ? endOfYear(date)\n : timeFrame === 'week'\n ? endOfWeek(date, { weekStartsOn })\n : endOfMonth(date) // month\n return {\n duration: timeFrame,\n end,\n start,\n }\n}\n\nexport const updateChartParams = (\n chartParams: IStatisticsDateParams,\n backward: boolean,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const { duration, start, end } = chartParams\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n duration,\n end:\n duration === 'year'\n ? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {\n weekStartsOn,\n })\n : endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),\n start:\n duration === 'year'\n ? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {\n weekStartsOn,\n })\n : startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),\n }\n}\n","import { IUnit, TFactor, TUnit } from '@/types/units'\n\nexport const units: Record = {\n ft: {\n unit: 'ft',\n system: 'imperial',\n multiplier: 1,\n defaultTarget: 'm',\n },\n mi: {\n unit: 'mi',\n system: 'imperial',\n multiplier: 5280,\n defaultTarget: 'km',\n },\n m: {\n unit: 'm',\n system: 'metric',\n multiplier: 1,\n defaultTarget: 'ft',\n },\n km: {\n unit: 'm',\n system: 'metric',\n multiplier: 1000,\n defaultTarget: 'mi',\n },\n}\n\nconst factors: TFactor = {\n metric: {\n imperial: 3.280839895,\n metric: 1,\n },\n imperial: {\n metric: 1 / 3.280839895,\n imperial: 1,\n },\n}\n\nexport const convertDistance = (\n distance: number,\n from: TUnit,\n to: TUnit,\n digits: number | null = 3\n): number => {\n const unitFrom = units[from]\n const unitTo = units[to]\n const convertedDistance =\n (distance * unitFrom.multiplier * factors[unitFrom.system][unitTo.system]) /\n unitTo.multiplier\n if (digits !== null) {\n return parseFloat(convertedDistance.toFixed(digits))\n }\n return convertedDistance\n}\n\nexport const convertStatsDistance = (\n unitFrom: TUnit,\n value: number,\n useImperialUnits: boolean\n): number => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value\n}\n","import {\n IWorkout,\n IWorkoutApiChartData,\n IWorkoutChartData,\n TCoordinates,\n TWorkoutDatasets,\n} from '@/types/workouts'\nimport { convertStatsDistance } from '@/utils/units'\n\nexport const getDatasets = (\n chartData: IWorkoutApiChartData[],\n t: CallableFunction,\n useImperialUnits: boolean\n): IWorkoutChartData => {\n const datasets: TWorkoutDatasets = {\n speed: {\n label: t('workouts.SPEED'),\n backgroundColor: ['#FFFFFF'],\n borderColor: ['#8884d8'],\n borderWidth: 2,\n data: [],\n yAxisID: 'ySpeed',\n },\n elevation: {\n label: t('workouts.ELEVATION'),\n backgroundColor: ['#e5e5e5'],\n borderColor: ['#cccccc'],\n borderWidth: 1,\n fill: true,\n data: [],\n yAxisID: 'yElevation',\n },\n }\n const distance_labels: unknown[] = []\n const duration_labels: unknown[] = []\n const coordinates: TCoordinates[] = []\n\n chartData.map((data) => {\n distance_labels.push(data.distance)\n duration_labels.push(data.duration)\n datasets.speed.data.push(\n convertStatsDistance('km', data.speed, useImperialUnits)\n )\n datasets.elevation.data.push(\n convertStatsDistance('m', data.elevation, useImperialUnits)\n )\n coordinates.push({ latitude: data.latitude, longitude: data.longitude })\n })\n\n return { distance_labels, duration_labels, datasets, coordinates }\n}\n\nexport const getDonutDatasets = (\n workouts: IWorkout[]\n): Record> => {\n const total = workouts.length\n if (total === 0) {\n return {}\n }\n\n const datasets: Record> = {}\n workouts.map((workout) => {\n if (!datasets[workout.sport_id]) {\n datasets[workout.sport_id] = {\n count: 0,\n percentage: 0,\n }\n }\n datasets[workout.sport_id].count += 1\n datasets[workout.sport_id].percentage =\n datasets[workout.sport_id].count / total\n })\n\n return datasets\n}\n\nexport const defaultOrder = {\n order: 'desc',\n order_by: 'workout_date',\n}\n","\n\n\n","import { render } from \"./Card.vue?vue&type=template&id=ad374c24\"\nconst script = {}\n\nimport \"./Card.vue?vue&type=style&index=0&id=ad374c24&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72463173\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nimport { toRefs } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n interface Props {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilterSelects',\n props: {\n order_by: null,\n query: null,\n sort: null,\n message: null\n },\n emits: ['updateSelect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n\n \n\n \n\n const { order_by, query, sort, message } = toRefs(props)\n const perPage = [10, 25, 50, 100]\n\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _unref(query).order_by,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(order_by), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_unref(message)}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _unref(query).order,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sort), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _unref(query).per_page,\n onChange: onSelectUpdate\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(perPage, (nb) => {\n return _createElementVNode(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7)\n }), 64))\n ], 40, _hoisted_6)\n ])\n ]))\n}\n}\n\n})","import script from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=72463173&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72463173\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./ErrorImg.vue?vue&type=template&id=e620aed4\"\nimport script from \"./ErrorImg.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorImg.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b60bfa80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"error\" }\nconst _hoisted_2 = { class: \"error-content\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n title: string\n message: string\n buttonText: string\n path?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Error',\n props: {\n title: null,\n message: null,\n buttonText: null,\n path: { default: '/' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, message: string, buttonText: string, path: string }\n\n \n const { buttonText, title, message, path } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(title)), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_unref(message)), 1),\n (_unref(buttonText))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push(_unref(path)))),\n class: \"upper\"\n }, _toDisplayString(_unref(buttonText)), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Error.vue?vue&type=style&index=0&id=b60bfa80&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b60bfa80\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { Ref, onMounted, ref, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import Error from '@/components/Common/Error.vue'\n interface Props {\n target?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFound',\n props: {\n target: { default: 'PAGE' }\n },\n setup(__props: any) {\n\nconst props = __props as { target: string }\n\n \n const { target } = toRefs(props)\n const timer = ref()\n const errorDisplayed: Ref = ref(false)\n\n onMounted(() => displayError())\n\n function displayError() {\n timer.value = setTimeout(() => {\n errorDisplayed.value = true\n }, 500)\n }\n\n onUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value)\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (errorDisplayed.value)\n ? (_openBlock(), _createBlock(Error, {\n key: 0,\n title: \"404\",\n message: _ctx.$t(`error.NOT_FOUND.${_unref(target)}`),\n \"button-text\": _ctx.$t('common.HOME')\n }, null, 8, [\"message\", \"button-text\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a9a4a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { toRefs } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IOauth2ClientsPayload } from '@/types/oauth'\n import { TWorkoutsPayload } from '@/types/workouts'\n import { rangePagination } from '@/utils/api'\n\n interface Props {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Pagination',\n props: {\n pagination: null,\n path: null,\n query: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n\n \n\n const { pagination, path, query } = toRefs(props)\n\n function getQuery(\n page: number,\n cursor?: number\n ): TPaginationPayload | IOauth2ClientsPayload {\n const newQuery = Object.assign({}, query.value)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_unref(pagination).has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, -1) },\n disabled: !_unref(pagination).has_prev\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')) + \" \", 1),\n _hoisted_3\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(rangePagination)(_unref(pagination).pages, _unref(pagination).page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _unref(pagination).page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_unref(pagination).has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, 1) },\n disabled: !_unref(pagination).has_next\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=3a9a4a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a9a4a65\"]])\n\nexport default __exports__","import { zxcvbnOptions } from '@zxcvbn-ts/core'\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnEnPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-en'\n )\n const zxcvbnFrPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-fr'\n )\n const zxcvbnDePackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-de'\n )\n const zxcvbnLangPackages: Record = {\n de: zxcvbnDePackage,\n en: zxcvbnEnPackage,\n fr: zxcvbnFrPackage,\n }\n const zxcvbnPackage = zxcvbnLangPackages[language]\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnPackage.default.dictionary,\n },\n }\n zxcvbnOptions.setOptions(options)\n}\n\nexport const getPasswordStrength = (strength: number): string => {\n switch (strength) {\n case 2:\n return 'AVERAGE'\n case 3:\n return 'GOOD'\n case 4:\n return 'STRONG'\n default:\n return 'WEAK'\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e71df5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-strength\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"password-strength-details\"\n}\nconst _hoisted_4 = { class: \"password-strength-value\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"info-box\"\n}\nconst _hoisted_6 = { class: \"password-feedback\" }\n\nimport { zxcvbn } from '@zxcvbn-ts/core'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n onBeforeMount,\n toRefs,\n watch,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n import { getPasswordStrength, setZxcvbnOptions } from '@/utils/password'\n\n interface Props {\n password: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordStength',\n props: {\n password: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n password: string\n }\n\n \n const { password } = toRefs(props)\n\n const store = useStore()\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const passwordScore: Ref = ref(0)\n const passwordStrength: Ref = ref('')\n const passwordSuggestions: Ref = ref([])\n const backgroundSize = ref('0% 100%')\n\n onBeforeMount(async () => await setZxcvbnOptions(language.value))\n\n function calculatePasswordStrength(password: string) {\n const zxcvbnResult = zxcvbn(password)\n passwordScore.value = zxcvbnResult.score\n passwordStrength.value = getPasswordStrength(passwordScore.value)\n passwordSuggestions.value = zxcvbnResult.feedback.suggestions\n backgroundSize.value = (passwordScore.value * 100) / 4 + '% 100%'\n }\n\n watch(\n () => language.value,\n async (newLanguageValue) => {\n await setZxcvbnOptions(newLanguageValue)\n }\n )\n watch(\n () => password.value,\n async (newPassword) => {\n if (isSuccess.value) {\n passwordStrength.value = ''\n } else {\n calculatePasswordStrength(newPassword)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: _normalizeClass([\"password-slider\", `strength-${passwordScore.value}`]),\n style: _normalizeStyle({ backgroundSize: backgroundSize.value }),\n type: \"range\",\n value: passwordScore.value,\n min: \"0\",\n max: \"4\",\n step: \"1\"\n }, null, 14, _hoisted_2),\n (passwordStrength.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('user.PASSWORD_STRENGTH.LABEL')) + \": \" + _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.${passwordStrength.value}`)), 1),\n (passwordSuggestions.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"ul\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(passwordSuggestions.value, (suggestion) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: suggestion }, _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${suggestion}`)), 1))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordStength.vue?vue&type=style&index=0&id=74e71df5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e71df5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, vModelDynamic as _vModelDynamic, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a126514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-input\" }\nconst _hoisted_2 = [\"id\", \"disabled\", \"placeholder\", \"required\", \"type\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"form-info\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import PasswordStrength from '@/components/Common/PasswordStength.vue'\n\n interface Props {\n checkStrength?: boolean\n disabled?: boolean\n id?: string\n password?: string\n placeholder?: string\n required?: boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordInput',\n props: {\n checkStrength: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n id: { default: 'password' },\n password: { default: '' },\n placeholder: null,\n required: { type: Boolean, default: false }\n },\n emits: ['updatePassword', 'passwordError'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { checkStrength: boolean, disabled: boolean, id: string, password: string, placeholder?: string, required: boolean }\n\n \n const { checkStrength, disabled, id, password, placeholder, required } =\n toRefs(props)\n\n const showPassword: Ref = ref(false)\n const passwordValue: Ref = ref('')\n\n \n\n function togglePassword() {\n showPassword.value = !showPassword.value\n }\n function updatePassword(event: Event & { target: HTMLInputElement }) {\n emit('updatePassword', event.target.value)\n }\n function invalidPassword() {\n emit('passwordError')\n }\n\n watch(\n () => password.value,\n (newPassword) => {\n if (newPassword === '') {\n passwordValue.value = ''\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"input\", {\n id: _unref(id),\n disabled: _unref(disabled),\n placeholder: _unref(placeholder),\n required: _unref(required),\n type: showPassword.value ? 'text' : 'password',\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordValue).value = $event)),\n minlength: \"8\",\n onInput: updatePassword,\n onInvalid: invalidPassword\n }, null, 40, _hoisted_2), [\n [_vModelDynamic, passwordValue.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"show-password\",\n onClick: togglePassword\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.${showPassword.value ? 'HIDE' : 'SHOW'}_PASSWORD`)) + \" \", 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-eye${showPassword.value ? '-slash' : ''}`]),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n (_unref(checkStrength))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.PASSWORD_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(checkStrength))\n ? (_openBlock(), _createBlock(PasswordStrength, {\n key: 1,\n password: passwordValue.value\n }, null, 8, [\"password\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordInput.vue?vue&type=style&index=0&id=5a126514&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a126514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"map-attribution\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"map-attribution-text\" }, \"©\"),\n /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"map-attribution-text\",\n href: \"https://www.openstreetmap.org/copyright\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, \" OpenStreetMap \")\n], -1)\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workout: IWorkout\n displayHover?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticMap',\n props: {\n workout: null,\n displayHover: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { workout: IWorkout, displayHover: boolean }\n\n \n const { displayHover } = toRefs(props)\n const imageUrl = `${getApiUrl()}workouts/map/${props.workout.map}`\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"static-map\", { 'display-hover': _unref(displayHover) }])\n }, [\n (_unref(displayHover))\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: imageUrl,\n alt: \"\"\n }))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"bg-map-image\",\n style: _normalizeStyle({\n backgroundImage: `url(${imageUrl})`,\n })\n }, null, 4)),\n _hoisted_1\n ], 2))\n}\n}\n\n})","import script from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StaticMap.vue?vue&type=style&index=0&id=6b7e4baf&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58e4e79d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"start-chart\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"chart-radio\" }\nconst _hoisted_5 = [\"checked\"]\nconst _hoisted_6 = [\"checked\"]\nconst _hoisted_7 = [\"checked\"]\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = [\"checked\"]\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = [\"checked\"]\nconst _hoisted_12 = { key: 2 }\nconst _hoisted_13 = [\"checked\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.hideChartIfNoData && _ctx.emptyStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.NO_WORKOUTS')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_distance\",\n checked: _ctx.displayedData === 'total_distance',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_5),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_duration\",\n checked: _ctx.displayedData === 'total_duration',\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_6),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"nb_workouts\",\n checked: _ctx.displayedData === 'nb_workouts',\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_7),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', 2)), 1)\n ]),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_8, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"average_speed\",\n checked: _ctx.displayedData === 'average_speed',\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_ascent\",\n checked: _ctx.displayedData === 'total_ascent',\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_12, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_descent\",\n checked: _ctx.displayedData === 'total_descent',\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_13),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.labels.length > 0)\n ? (_openBlock(), _createBlock(_component_Chart, {\n key: 0,\n datasets: _ctx.datasets,\n labels: _ctx.labels,\n displayedData: _ctx.displayedData,\n displayedSportIds: _ctx.displayedSportIds,\n fullStats: _ctx.fullStats,\n useImperialUnits: _ctx.user.imperial_units\n }, null, 8, [\"datasets\", \"labels\", \"displayedData\", \"displayedSportIds\", \"fullStats\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}","import { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"chart\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BarChart = _resolveComponent(\"BarChart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BarChart, _mergeProps(_ctx.barChartProps, { class: \"bar-chart\" }), null, 16)\n ]))\n}","export const formatDuration = (\n totalSeconds: number,\n formatWithUnits = false\n): string => {\n let days = '0'\n if (formatWithUnits) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithUnits) {\n return `${days === '0' ? '' : `${days}d `}${\n hours === '00' ? '' : `${hours}h `\n }${minutes}m ${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n","import { TStatisticsDatasetKeys } from '@/types/statistics'\nimport { formatDuration } from '@/utils/duration'\nimport { units } from '@/utils/units'\n\nexport const formatTooltipValue = (\n displayedData: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean,\n formatWithUnits = true,\n unitFrom = 'km'\n): string => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n switch (displayedData) {\n case 'average_speed':\n return `${value.toFixed(2)} ${unitTo}/h`\n case 'total_duration':\n return formatDuration(value, formatWithUnits)\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return `${value.toFixed(2)} ${unitTo}`\n default:\n return value.toString()\n }\n}\n","\n import { ChartData, ChartOptions, LayoutItem } from 'chart.js'\n import { ComputedRef, PropType, computed, defineComponent } from 'vue'\n import { BarChart, useBarChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IChartDataset } from '@/types/chart'\n import { TStatisticsDatasetKeys } from '@/types/statistics'\n import { formatTooltipValue } from '@/utils/tooltip'\n\n export default defineComponent({\n name: 'Chart',\n components: {\n BarChart,\n },\n props: {\n datasets: {\n type: Object as PropType,\n required: true,\n },\n labels: {\n type: Object as PropType,\n required: true,\n },\n displayedData: {\n type: String as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n required: true,\n },\n fullStats: {\n type: Boolean,\n required: true,\n },\n useImperialUnits: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getNumber(value: any): number {\n return isNaN(value) ? 0 : +value\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getSum(total: any, value: any): number {\n return getNumber(total) + getNumber(value)\n }\n function getUnit(displayedData: string) {\n return ['total_ascent', 'total_descent'].includes(displayedData)\n ? 'm'\n : 'km'\n }\n const chartData: ComputedRef> = computed(() => ({\n labels: props.labels,\n // workaround to avoid dataset modification\n datasets: JSON.parse(JSON.stringify(props.datasets)),\n }))\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: props.fullStats ? 40 : 22,\n },\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n drawOnChartArea: false,\n },\n },\n y: {\n stacked: props.displayedData !== 'average_speed',\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n maxTicksLimit: 6,\n callback: function (value) {\n return formatTooltipValue(\n props.displayedData,\n +value,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n },\n },\n afterFit: function (scale: LayoutItem) {\n scale.width = props.fullStats ? 90 : 60\n },\n },\n },\n plugins: {\n datalabels: {\n anchor: 'end',\n align: 'end',\n color: function (context) {\n return props.displayedData === 'average_speed' &&\n context.dataset.backgroundColor\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n context.dataset.backgroundColor[0]\n : '#666666'\n },\n rotation: function (context) {\n return props.fullStats && context.chart.chartArea.width < 580\n ? 310\n : 0\n },\n display: function (context) {\n return props.fullStats && context.chart.chartArea.width < 300\n ? false\n : props.displayedData === 'average_speed'\n ? props.displayedSportIds.length == 1\n ? 'auto'\n : false\n : true\n },\n formatter: function (value, context) {\n if (props.displayedData === 'average_speed') {\n return formatTooltipValue(\n props.displayedData,\n value,\n props.useImperialUnits,\n false\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const total: number = context.chart.data.datasets\n .map((d) => d.data[context.dataIndex])\n .reduce((total, value) => getSum(total, value), 0)\n return context.datasetIndex ===\n props.displayedSportIds.length - 1 && total > 0\n ? formatTooltipValue(\n props.displayedData,\n total,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n : null\n }\n },\n },\n legend: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: true,\n mode: 'index',\n position:\n props.displayedData === 'average_speed' ? 'nearest' : 'average',\n },\n filter: function (tooltipItem) {\n return tooltipItem.formattedValue !== '0'\n },\n callbacks: {\n label: function (context) {\n let label = t(`sports.${context.dataset.label}.LABEL`) || ''\n if (label) {\n label += ': '\n }\n if (context.parsed.y !== null) {\n label += formatTooltipValue(\n props.displayedData,\n context.parsed.y,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n }\n return label\n },\n footer: function (tooltipItems) {\n if (props.displayedData === 'average_speed') {\n return ''\n }\n let sum = 0\n tooltipItems.map((tooltipItem) => {\n sum += tooltipItem.parsed.y\n })\n return (\n `${t('common.TOTAL')}: ` +\n formatTooltipValue(\n props.displayedData,\n sum,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n )\n },\n },\n },\n },\n }))\n const { barChartProps } = useBarChart({\n chartData,\n options,\n })\n return { barChartProps }\n },\n })\n","import { render } from \"./Chart.vue?vue&type=template&id=6c8b76cd&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n } from 'vue'\n\n import Chart from '@/components/Common/StatsChart/Chart.vue'\n import { STATS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import {\n IStatisticsChartData,\n TStatisticsDatasetKeys,\n IStatisticsDateParams,\n TStatisticsFromApi,\n IStatisticsParams,\n } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatStats } from '@/utils/statistics'\n\n export default defineComponent({\n name: 'UserMonthStats',\n components: {\n Chart,\n },\n props: {\n sports: {\n type: Object as PropType,\n required: true,\n },\n user: {\n type: Object as PropType,\n required: true,\n },\n chartParams: {\n type: Object as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n default: () => [],\n },\n fullStats: {\n type: Boolean,\n default: false,\n },\n hideChartIfNoData: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n const displayedData: Ref = ref('total_distance')\n const statistics: ComputedRef = computed(\n () => store.getters[STATS_STORE.GETTERS.USER_STATS]\n )\n const formattedStats: ComputedRef = computed(() =>\n formatStats(\n props.chartParams,\n props.user.weekm,\n props.sports,\n props.displayedSportIds,\n statistics.value,\n props.user.imperial_units\n )\n )\n\n onBeforeMount(() =>\n getStatistics(getApiParams(props.chartParams, props.user))\n )\n\n function getStatistics(apiParams: IStatisticsParams) {\n store.dispatch(STATS_STORE.ACTIONS.GET_USER_STATS, {\n username: props.user.username,\n filterType: 'by_time',\n params: apiParams,\n })\n }\n function updateDisplayData(\n event: Event & {\n target: HTMLInputElement & { name: TStatisticsDatasetKeys }\n }\n ) {\n displayedData.value = event.target.name\n }\n function getApiParams(\n chartParams: IStatisticsDateParams,\n user: IAuthUserProfile\n ): IStatisticsParams {\n return {\n from: format(chartParams.start, 'yyyy-MM-dd'),\n to: format(chartParams.end, 'yyyy-MM-dd'),\n time:\n chartParams.duration === 'week'\n ? `week${user.weekm ? 'm' : ''}`\n : chartParams.duration,\n }\n }\n\n watch(\n () => props.chartParams,\n async (newParams) => {\n getStatistics(getApiParams(newParams, props.user))\n }\n )\n\n return {\n datasets: computed(\n () => formattedStats.value.datasets[displayedData.value]\n ),\n labels: computed(() => formattedStats.value.labels),\n emptyStats: computed(() => Object.keys(statistics.value).length === 0),\n displayedData,\n updateDisplayData,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=58e4e79d&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=58e4e79d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58e4e79d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20291951\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-label\" }\nconst _hoisted_10 = { class: \"user-stat hide-small\" }\nconst _hoisted_11 = { class: \"stat-number\" }\nconst _hoisted_12 = { class: \"stat-label\" }\n\nimport { computed, ComputedRef, toRefs } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserHeader',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const { user } = toRefs(props)\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(user).username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(user).nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Distance, {\n distance: _unref(user).total_distance,\n unitFrom: \"km\",\n digits: 0,\n displayUnit: false,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(authUser).imperial_units ? 'miles' : 'km'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_unref(user).nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.SPORT', _unref(user).nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=20291951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-20291951\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-794e58e7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = {\n key: 4,\n class: \"email-form form-box\"\n}\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = { class: \"form-buttons\" }\nconst _hoisted_7 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { key: 5 }\nconst _hoisted_10 = { class: \"user-bio\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n withDefaults,\n watch,\n onUnmounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n fromAdmin?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfos',\n props: {\n user: null,\n fromAdmin: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, fromAdmin: boolean }\n\n \n\n const store = useStore()\n\n const { user, fromAdmin } = toRefs(props)\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(new Date(props.user.birth_date), 'dd/MM/yyyy')\n : ''\n )\n const isSuccess = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_IS_SUCCESS]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const displayModal: Ref = ref('')\n const formErrors = ref(false)\n const displayUserEmailForm: Ref = ref(false)\n const newUserEmail: Ref = ref('')\n const currentAction: Ref = ref('')\n\n function updateDisplayModal(value: string) {\n displayModal.value = value\n if (value !== '') {\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n }\n }\n function deleteUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT, { username })\n }\n function resetUserPassword(username: string) {\n currentAction.value = 'password-reset'\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n resetPassword: true,\n })\n }\n function confirmUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n activate: true,\n })\n }\n function displayEmailForm() {\n resetErrorsAndSuccess()\n newUserEmail.value = user.value.email_to_confirm\n ? user.value.email_to_confirm\n : ''\n displayUserEmailForm.value = true\n currentAction.value = 'email-update'\n }\n function hideEmailForm() {\n newUserEmail.value = ''\n displayUserEmailForm.value = false\n }\n function updateUserEmail(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n new_email: newUserEmail.value,\n })\n }\n function resetErrorsAndSuccess() {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n currentAction.value = ''\n }\n\n onUnmounted(() => resetErrorsAndSuccess())\n\n watch(\n () => isSuccess.value,\n (newIsSuccess) => {\n if (newIsSuccess) {\n updateDisplayModal('')\n hideEmailForm()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \n displayModal.value === 'delete'\n ? 'admin.CONFIRM_USER_ACCOUNT_DELETION'\n : 'admin.CONFIRM_USER_PASSWORD_RESET'\n ,\n strongMessage: _unref(user).username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (\n displayModal.value === 'delete'\n ? deleteUserAccount(_unref(user).username)\n : resetUserPassword(_unref(user).username)\n )),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal('')))\n }, null, 8, [\"title\", \"message\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `admin.${\n currentAction.value === 'password-reset'\n ? 'PASSWORD_RESET'\n : 'USER_EMAIL_UPDATE'\n }_SUCCESSFUL`\n )), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 2,\n message: \"user.THIS_USER_ACCOUNT_IS_INACTIVE\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 3,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (displayUserEmailForm.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateUserEmail(_unref(user).username)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.CURRENT_EMAIL')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_unref(user).email) = $event)),\n disabled: \"\"\n }, null, 512), [\n [_vModelText, _unref(user).email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.NEW_EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"new-email\",\n type: \"email\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newUserEmail).value = $event))\n }, null, 512), [\n [_vModelText, newUserEmail.value]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", _hoisted_7, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(hideEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_8)\n ])\n ], 34)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(registrationDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(birthDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_10, _toDisplayString(_unref(user).bio), 1)\n ]),\n (_unref(fromAdmin))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (updateDisplayModal('delete')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (confirmUserAccount(_unref(user).username)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.ACTIVATE_USER_ACCOUNT')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _withModifiers(displayEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('admin.UPDATE_USER_EMAIL')), 9, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (\n _unref(authUser).username !== _unref(user).username &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (updateDisplayModal('reset')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.RESET_USER_PASSWORD')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=794e58e7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-794e58e7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b3c885de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-form\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\", \"placeholder\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"form-info\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\"disabled\", \"placeholder\"]\nconst _hoisted_8 = {\n key: 3,\n class: \"form-info\"\n}\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { key: 3 }\nconst _hoisted_12 = { key: 0 }\nconst _hoisted_13 = { key: 4 }\nconst _hoisted_14 = { class: \"account\" }\nconst _hoisted_15 = { key: 5 }\n\nimport {\n ComputedRef,\n computed,\n onUnmounted,\n reactive,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ILoginRegisterFormData } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAuthForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string }\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { action } = toRefs(props)\n const formData: ILoginRegisterFormData = reactive({\n username: '',\n email: '',\n password: '',\n })\n const buttonText: ComputedRef = computed(() =>\n getButtonText(props.action)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const isRegistrationSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const registration_disabled: ComputedRef = computed(\n () =>\n props.action === 'register' && !appConfig.value.is_registration_enabled\n )\n const sendingEmailDisabled: ComputedRef = computed(\n () =>\n ['reset-request', 'account-confirmation-resend'].includes(props.action) &&\n !appConfig.value.is_email_sending_enabled\n )\n const formErrors = ref(false)\n\n function getButtonText(action: string): string {\n switch (action) {\n case 'reset-request':\n case 'reset':\n return 'buttons.SUBMIT'\n default:\n return `buttons.${props.action.toUpperCase()}`\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n function updatePassword(password: string) {\n formData.password = password\n }\n function onSubmit(actionType: string) {\n switch (actionType) {\n case 'reset':\n if (!props.token) {\n return store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n 'user.INVALID_TOKEN'\n )\n }\n return store.dispatch(AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD, {\n password: formData.password,\n token: props.token,\n })\n case 'reset-request':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST,\n {\n email: formData.email,\n }\n )\n case 'account-confirmation-resend':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,\n {\n email: formData.email,\n }\n )\n default:\n formData['language'] = language.value\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER, {\n actionType,\n formData,\n redirectUrl: route.query.from,\n })\n }\n }\n function resetFormData() {\n formData.username = ''\n formData.email = ''\n formData.password = ''\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => route.path,\n async () => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n formErrors.value = false\n resetFormData()\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"user-auth-form\",\n class: _normalizeClass(`${\n ['reset', 'reset-request'].includes(_unref(action)) ? _unref(action) : 'user-form'\n }`)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"form-box\", {\n disabled: _unref(registration_disabled),\n }])\n }, [\n (_unref(registration_disabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 0,\n message: \"user.REGISTER_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(sendingEmailDisabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 1,\n message: \"admin.EMAIL_SENDING_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess) || _unref(isRegistrationSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n _unref(isRegistrationSuccess)\n ? `REGISTRATION${\n _unref(appConfig).is_email_sending_enabled ? '_WITH_EMAIL' : ''\n }`\n : 'UPDATE'\n }`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (onSubmit(_unref(action))), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(action) === 'register')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: \"username\",\n disabled: _unref(registration_disabled),\n required: \"\",\n pattern: \"[a-zA-Z0-9_]+\",\n minlength: \"3\",\n maxlength: \"30\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData.username) = $event)),\n placeholder: _ctx.$t('user.USERNAME')\n }, null, 40, _hoisted_4)), [\n [_vModelText, formData.username]\n ])\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.USERNAME_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) !== 'reset')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 2,\n id: \"email\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled),\n required: \"\",\n onInvalid: invalidateForm,\n type: \"email\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData.email) = $event)),\n placeholder: _ctx.$t('user.EMAIL')\n }, null, 40, _hoisted_7)), [\n [_vModelText, formData.email]\n ])\n : _createCommentVNode(\"\", true),\n (\n [\n 'reset-request',\n 'register',\n 'account-confirmation-resend',\n ].includes(_unref(action))\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EMAIL_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (\n !['account-confirmation-resend', 'reset-request'].includes(\n _unref(action)\n )\n )\n ? (_openBlock(), _createBlock(PasswordInput, {\n key: 4,\n disabled: _unref(registration_disabled),\n required: true,\n placeholder: \n _unref(action) === 'reset'\n ? _ctx.$t('user.ENTER_PASSWORD')\n : _ctx.$t('user.PASSWORD')\n ,\n password: formData.password,\n checkStrength: ['reset', 'register'].includes(_unref(action)),\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"placeholder\", \"password\", \"checkStrength\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled)\n }, _toDisplayString(_ctx.$t(_unref(buttonText))), 9, _hoisted_10)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/register\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"links\",\n to: \"/password-reset/request\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_FORGOTTEN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.ALREADY_HAVE_ACCOUNT')), 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/login\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (\n ['login', 'register'].includes(_unref(action)) &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_NOT_RECEIVED')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 6,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ], 2))\n}\n}\n\n})","import script from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAuthForm.vue?vue&type=style&index=0&id=b3c885de&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b3c885de\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { computed } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPicture',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n }\n\n \n\n const authUserPictureUrl = computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture?${Date.now()}`\n : ''\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUserPictureUrl) !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _unref(authUserPictureUrl)\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}\n}\n\n})","import script from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=26bea286&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./NoWorkouts.vue?vue&type=template&id=4b4d15fb&scoped=true\"\nconst script = {}\n\nimport \"./NoWorkouts.vue?vue&type=style&index=0&id=4b4d15fb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4d15fb\"]])\n\nexport default __exports__","var map = {\n\t\"./de/de.ts\": 9923,\n\t\"./en/en.ts\": 8757,\n\t\"./fr/fr.ts\": 6625\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4612;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\",\"881\":\"password\"}[chunkId] || chunkId) + \".\" + {\"24\":\"987a4de8\",\"93\":\"97ccdf6e\",\"193\":\"61163b0e\",\"243\":\"27c8fef5\",\"328\":\"ab9e5f5f\",\"401\":\"520d24bf\",\"431\":\"5976068e\",\"633\":\"9a092c9a\",\"845\":\"dd30724d\",\"858\":\"0441e3cc\",\"881\":\"c426a91d\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\"}[chunkId] + \".\" + {\"24\":\"e2527ec6\",\"193\":\"40e24e75\",\"328\":\"73df498d\",\"401\":\"dd7c6bdb\",\"845\":\"203e78e2\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"fittrackee_client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"24\":1,\"193\":1,\"328\":1,\"401\":1,\"845\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfittrackee_client\"] = self[\"webpackChunkfittrackee_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(6331); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["authApi","axios","baseURL","getApiUrl","interceptors","request","use","config","controller","AbortController","signal","requestKey","removeRequestIfPending","pendingRequests","authToken","store","AUTH_USER_STORE","auth","headers","Authorization","error","Promise","reject","response","message","Map","generateRequestKey","method","url","params","data","JSON","stringify","join","has","get","abort","delete","loadLocaleMessages","locales","require","messages","keys","forEach","key","matched","match","length","locale","default","createI18n","legacy","fallbackLocale","globalInjection","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","about","AboutTranslations","admin","AdministrationTranslations","api","ApiTranslations","buttons","ButtonsTranslations","common","CommonTranslations","dashboard","DashboardTranslations","ErrorTranslations","oauth2","OAuth2Translations","sports","SportsTranslations","statistics","StatisticsTranslations","user","UserTranslations","workouts","WorkoutsTranslations","register","ready","console","log","registered","cached","updatefound","updated","offline","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","_hoisted_2","class","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","href","target","rel","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","__exports__","emits","emit","useStore","authUser","computed","getters","isAuthenticated","language","ROOT_STORE","isMenuOpen","ref","openMenu","value","closeMenu","updateLanguage","option","dispatch","toString","logout","_component_Dropdown","onClick","$event","$router","push","_normalizeClass","capitalize","_createBlock","UserPicture","username","availableLanguages","options","selected","onSelected","ErrorImg","innerHTML","appConfig","appLoading","hideScrollBar","displayScrollButton","updateHideScrollBar","isScrolledToBottom","element","getBoundingClientRect","top","window","innerHeight","bottom","scroll","onscroll","document","querySelector","scrollToTop","scrollTo","behavior","setTimeout","initLanguage","navigatorLanguage","navigator","split","localeFromLanguage","e","onBeforeMount","onMounted","_component_Loader","_component_router_view","_Fragment","NavBar","onMenuInteraction","NoConfig","Footer","admin_contact","name","charLimit","disabled","type","Boolean","input","text","updateText","event","watch","_withDirectives","maxLenght","onInput","_vModelText","distance","unitFrom","useImperialUnits","digits","displayUnit","speed","strong","unitTo","units","defaultTarget","convertedDistance","convertDistance","parseFloat","toFixed","route","useRoute","isOpen","dropdownOptions","map","toggleDropdown","updateSelected","path","_renderSlot","$slots","_renderList","index","label","Array","isArray","subMessage","xmlns","x","y","viewBox","style","d","render","_hoisted_20","cx","cy","r","sportLabel","color","title","sportColors","inject","_normalizeStyle","fill","CyclingSport","CyclingTransport","Hiking","MountainBiking","MountainBikingElectric","Rowing","Running","SkiingAlpine","SkiingCrossCountry","Snowshoes","Trail","Walking","script","strongMessage","errorMessages","onUnmounted","commit","_component_i18n_t","_component_ErrorMessage","_component_Card","content","keypath","customComponents","AlertMessage","Card","CustomTextArea","Distance","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","undefined","Chart","BarElement","LineElement","PointElement","Legend","Title","Tooltip","Filler","BarController","CategoryScale","LineController","LinearScale","ChartDataLabels","app","createApp","App","provide","i18n","router","VueFullscreen","directive","component","mount","for","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","edition","useRouter","appData","reactive","max_users","max_single_file_size","max_zip_file_size","gpx_limit_import","updateForm","Object","includes","getFileSizeInMB","onCancel","onSubmit","formData","assign","_withModifiers","min","step","icon","appStatistics","uploadDirSize","getReadableFileSize","uploads_dir_size","StatCard","users","size","suffix","AppStatsCards","is_registration_enabled","is_email_sending_enabled","t","useI18n","translatedSports","translateSports","SPORTS_STORE","updateSportStatus","isActive","_component_SportImage","sport","translatedLabel","is_active","danger","has_workouts","query","q","searchUsers","resetFilter","onKeyup","_withKeys","placeholder","trim","orderByList","defaultOrderBy","getQuery","USERS_STORE","pagination","loadUsers","queryParams","reloadUsers","updateUser","queryParam","queryValue","page","newQuery","UsersNameFilter","onFilterOnUsername","FilterSelects","sort","sortList","order_by","onUpdateSelect","email","format","getDateWithTZ","created_at","timezone","nb_workouts","Pagination","tabs","selectedTab","getPath","tab","toLocaleLowerCase","checked","UserHeader","UserProfileTabs","languageLabels","fistDayOfWeek","weekm","display_ascent","imperial_units","loading","userForm","password","new_password","isSuccess","emailUpdate","formErrors","displayModal","invalidateForm","updateUserForm","updatePassword","updateNewPassword","updateProfile","payload","updateDisplayModal","deleteAccount","async","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","first_name","last_name","birth_date","location","bio","registrationDate","Date","updateBio","_component_CustomTextArea","onUpdateValue","fileSizeLimit","pictureFile","deleteUserPicture","updatePictureFile","files","updateUserPicture","picture","accept","timeZones","tzList","focusItemIndex","matchTimezone","toLowerCase","onMouseOver","onUpdateTimezone","onEnter","preventDefault","firstElementChild","openDropdown","onKeydown","ref_key","filter","tz","focus","onMouseover","autofocus","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","weekStart","imperialUnits","ascentData","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","start","unit","status","oauth2_scopes","admin_oauth2_scopes","appForm","client_name","client_uri","client_description","redirect_uri","scopes","filtered_scopes","getScopes","redirect_uris","scope","OAUTH2_STORE","updateDescription","updateScopes","indexOf","splice","admin_scopes","description","onChange","client","loadApp","client_id","authorizeApp","response_type","state","code_challenge","code_challenge_method","afterCreation","revocationSuccessful","messageToDisplay","idCopied","secretCopied","clipboardSupport","loadClient","updateMessageToDisplay","forDelete","confirmAction","clientId","copyIdToClipboard","clipboard","writeText","copySecretToClipboard","client_secret","newValue","issued_at","website","clients","getClientsQuery","clientsQuery","getNumberQueryValue","defaultPage","loadClients","_hoisted_25","_hoisted_26","_hoisted_27","isEdition","defaultColor","sports_list","sportPayload","sport_id","stopped_speed_threshold","updateSportInEdition","is_active_for_user","resetSportPayload","isSportInEdition","sportId","updateColor","updateThreshold","updateIsActive","updateSport","resetSport","newIsLoading","src","alt","BikePic","About","workout","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","ascent","descent","per_page","initWorkoutsCount","loadWorkouts","WORKOUTS_STORE","moreWorkoutsExist","previous_workout","defaultOrder","loadMoreWorkouts","WorkoutCard","s","NoWorkouts","displayHARecord","sportColor","records","record","record_type","height","width","colors","datasets","angleOffset","radius","circumference","Math","PI","calculateStrokeDashOffset","percentage","returnCircleTransformValue","rotation","entries","stroke","transform","isHidden","togglePane","stopPropagation","_directive_click_outside","_resolveDirective","DonutChart","CalendarWorkout","getSportLabel","getSportColor","chartDatasets","getDonutDatasets","sportIdColors","displayedWorkoutCount","slice","CalendarWorkoutsChart","currentDay","endDate","startDate","weekStartingMonday","rows","getDays","day","days","i","addDays","isWeekEnd","filterWorkouts","isSameDay","reverse","row","isSameMonth","today","isToday","CalendarWorkouts","localeOptions","dateFormat","calendarDates","getCalendarStartAndEnd","calendarWorkouts","getCalendarWorkouts","apiParams","from","end","displayNextMonth","addMonths","displayPreviousMonth","subMonths","CalendarHeader","onDisplayNextMonth","onDisplayPreviousMonth","CalendarDays","CalendarCells","date","chartParams","duration","startOfMonth","endOfMonth","selectedSportIds","StatChart","formatRecord","distanceUnitFrom","distanceUnitTo","ascentUnitFrom","ascentUnitTo","Error","formatWorkoutDate","workout_id","sortRecords","a","b","recordALabel","recordBLabel","getRecordsBySports","reduce","sportList","find","sportTranslatedLabel","getTranslatedRecords","translatedRecords","recordsBySport","RecordsCard","userTotalDuration","total_duration","totalDuration","get_duration","totalDistance","total_distance","totalAscent","total_ascent","nb_sports","isSelected","updateDisplayColumn","UserStatsCards","UserMonthStats","UserRecords","UserCalendar","Timeline","NotFound","action","LoginOrRegisterForm","getTabFromPath","regex","tag","replace","toUpperCase","routes","Dashboard","LoginOrRegister","children","Profile","UserInfos","UserPreferences","UserSportPreferences","UserApps","UserAppsList","UserApp","AddUserApp","AuthorizeUserApp","ProfileEdition","UserInfosEdition","UserAccountEdition","UserPictureEdition","UserPreferencesEdition","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","then","fullPath","catch","AuthUserActions","AuthUserGetters","AuthUserMutations","OAuth2Actions","OAuth2Getters","OAuth2Mutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ACTIONS","GETTERS","MUTATIONS","STATS_STORE","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","deleteUserAccount","context","res","handleError","actions","finally","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","setAttribute","application","root","enUS","sportsState","filterType","statisticsState","updatedUser","usersState","getWorkouts","segmentUrl","segmentId","segments","chart_data","gpx","file","notes","calendar_workouts","timeline_workouts","user_workouts","workoutData","concat","chartData","workoutsState","modules","authUserModule","oAuthModule","sportsModule","statsModule","usersModule","workoutsModule","createStore","VuexStore","defaultPerPage","defaultValue","getStringQueryValue","availableValues","locationQuery","queryOptions","defaultSort","order","workoutsPayloadKeys","getRange","stop","rangePagination","pages","currentPage","getStartDate","startOfWeek","weekStartsOn","startOfYear","incrementDate","addYears","dateInUTC","utcToZonedTime","monthStart","monthEnd","endOfWeek","dateTime","timeFormat","workout_time","suffixes","fileSize","asText","floor","pow","msg","m","de","en","fr","availableLocales","l","sortSports","sportATranslatedLabel","sportBTranslatedLabel","activeStatus","sportsToInclude","dateFormats","week","chart","month","year","datasetKeys","getDateKeys","getStatisticsChartDataset","isLineChart","dataset","backgroundColor","borderColor","spanGaps","getDatasets","displayedSports","average_speed","total_descent","convertStatsValue","datasetKey","convertStatsDistance","formatStats","displayedSportsId","apiStats","dayKeys","labels","sportsId","displayedSport","getStatsDateParams","timeFrame","subYears","endOfYear","updateChartParams","backward","subWeeks","addWeeks","ft","system","multiplier","mi","km","factors","metric","imperial","borderWidth","yAxisID","elevation","distance_labels","duration_labels","coordinates","latitude","longitude","total","count","perPage","onSelectUpdate","nb","buttonText","timer","errorDisplayed","displayError","clearTimeout","cursor","has_prev","navigate","has_next","active","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnEnPackage","zxcvbnFrPackage","zxcvbnDePackage","zxcvbnLangPackages","zxcvbnPackage","graphs","adjacencyGraphs","dictionary","zxcvbnOptions","getPasswordStrength","strength","passwordScore","passwordStrength","passwordSuggestions","backgroundSize","calculatePasswordStrength","zxcvbnResult","zxcvbn","score","feedback","suggestions","newLanguageValue","newPassword","max","suggestion","showPassword","passwordValue","togglePassword","invalidPassword","minlength","_vModelDynamic","PasswordStrength","displayHover","imageUrl","backgroundImage","$props","$setup","$data","$options","_component_Chart","hideChartIfNoData","emptyStats","displayedData","args","updateDisplayData","fullStats","displayedSportIds","_component_BarChart","_mergeProps","barChartProps","formatDuration","totalSeconds","formatWithUnits","String","hours","padStart","minutes","seconds","formatTooltipValue","defineComponent","components","BarChart","getNumber","isNaN","getSum","getUnit","parse","responsive","maintainAspectRatio","animation","layout","padding","scales","stacked","grid","drawOnChartArea","ticks","maxTicksLimit","callback","afterFit","scale","plugins","datalabels","anchor","align","chartArea","display","formatter","dataIndex","datasetIndex","legend","tooltip","interaction","intersect","mode","position","tooltipItem","formattedValue","callbacks","parsed","footer","tooltipItems","sum","useBarChart","formattedStats","getStatistics","getApiParams","time","newParams","birthDate","displayUserEmailForm","newUserEmail","currentAction","resetUserPassword","confirmUserAccount","displayEmailForm","resetErrorsAndSuccess","email_to_confirm","hideEmailForm","updateUserEmail","newIsSuccess","_component_AlertMessage","go","getButtonText","registration_disabled","sendingEmailDisabled","resetFormData","pattern","maxlength","authUserPictureUrl","now","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","this","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","onLinkComplete","errorType","realHref","err","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.39602236.js b/fittrackee/dist/static/js/workouts.520d24bf.js similarity index 99% rename from fittrackee/dist/static/js/workouts.39602236.js rename to fittrackee/dist/static/js/workouts.520d24bf.js index 71c7de59..f63bcf0c 100644 --- a/fittrackee/dist/static/js/workouts.39602236.js +++ b/fittrackee/dist/static/js/workouts.520d24bf.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[401],{2528:function(t,e,o){o.d(e,{Z:function(){return et}});o(7658);var a=o(6252),n=o(3577),l=o(2262),r=o(9963),s=o(9150),i=o(2201),u=o(5801),d=o(9917),c=o(6558),p=o(8966),m=o(631),w=o(3649);const k={id:"workout-form"},f=["onSubmit"],_={class:"form-items"},v={key:0,class:"form-item-radio"},g=["checked","disabled"],y={for:"withGpx"},S=["checked","disabled"],U={for:"withoutGpx"},h={class:"form-item"},b=["disabled"],T=["value"],E={key:1,class:"form-item"},D={for:"gpxFile"},O=["disabled"],I={class:"files-help info-box"},A={key:2,class:"form-item"},C={for:"title"},R=["required","disabled"],$={key:3},N={class:"workout-date-duration"},x={class:"form-item"},z={class:"workout-date-time"},L=["disabled"],j=["disabled"],W={class:"form-item"},B=["disabled"],P=(0,a.Uk)(" : "),F=["disabled"],H=(0,a.Uk)(" : "),M=["disabled"],Z={class:"form-item"},q=["disabled"],G={class:"form-item"},K={key:1},Y={key:2,class:"form-buttons"},V=["disabled"],J=["onClick"];var X=(0,a.aZ)({__name:"WorkoutEdition",props:{authUser:null,sports:null,isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},workout:{default:()=>({})}},setup(t){const e=t,{t:o}=(0,s.QT)(),X=(0,d.o)(),Q=(0,i.tv)(),{authUser:tt,workout:et,isCreation:ot,loading:at}=(0,l.BK)(e),nt=(0,a.Fl)((()=>(0,m.xH)(e.sports,o,"is_active_for_user",et.value.id?[et.value.sport_id]:[]))),lt=(0,a.Fl)((()=>X.getters[u.SY.GETTERS.APP_CONFIG])),rt=lt.value.max_single_file_size?(0,p.Z)(lt.value.max_single_file_size):"",st=lt.value.gpx_limit_import,it=lt.value.max_zip_file_size?(0,p.Z)(lt.value.max_zip_file_size):"",ut=(0,a.Fl)((()=>X.getters[u.SY.GETTERS.ERROR_MESSAGES])),dt=(0,l.qj)({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:""}),ct=(0,l.iH)(e.workout.id?e.workout.with_gpx:e.isCreation);let pt=null;const mt=(0,l.iH)(!1);function wt(t){dt.notes=t}function kt(){ct.value=!ct.value,mt.value=!1}function ft(t){t.target.files&&(pt=t.target.files[0])}function _t(t){if(dt.sport_id=`${t.sport_id}`,dt.title=t.title,dt.notes=t.notes,!t.with_gpx){const o=(0,c.Jo)((0,c.eB)(t.workout_date,e.authUser.timezone),"yyyy-MM-dd"),a=t.duration.split(":");dt.workoutDistance=`${tt.value.imperial_units?(0,w.sC)(t.distance,"km","mi",2):parseFloat(t.distance.toFixed(2))}`,dt.workoutDate=o.workout_date,dt.workoutTime=o.workout_time,dt.workoutDurationHour=a[0],dt.workoutDurationMinutes=a[1],dt.workoutDurationSeconds=a[2]}}function vt(t){t.title=dt.title,t.distance=tt.value.imperial_units?(0,w.sC)(+dt.workoutDistance,"mi","km",3):+dt.workoutDistance,t.duration=3600*+dt.workoutDurationHour+60*+dt.workoutDurationMinutes+ +dt.workoutDurationSeconds,t.workout_date=`${dt.workoutDate} ${dt.workoutTime}`}function gt(){const t={sport_id:+dt.sport_id,notes:dt.notes};if(e.workout.id)e.workout.with_gpx?t.title=dt.title:vt(t),X.dispatch(u.aX.ACTIONS.EDIT_WORKOUT,{workoutId:e.workout.id,data:t});else if(ct.value){if(!pt){const t="workouts.NO_FILE_PROVIDED";return void X.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,t)}t.file=pt,X.dispatch(u.aX.ACTIONS.ADD_WORKOUT,t)}else vt(t),X.dispatch(u.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,t)}function yt(){e.workout.id?Q.push({name:"Workout",params:{workoutId:e.workout.id}}):Q.go(-1)}function St(){mt.value=!0}return(0,a.bv)((()=>{e.workout.id&&_t(e.workout)})),(0,a.Ah)((()=>X.commit(u.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,a.YP)((()=>e.workout),(async(t,e)=>{t!==e&&t&&t.id&&_t(t)})),(t,e)=>{const o=(0,a.up)("CustomTextArea"),s=(0,a.up)("ErrorMessage"),i=(0,a.up)("Loader"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",{id:"workout-edition",class:(0,n.C_)(["center-card with-margin",{"center-form":(0,l.SU)(et)&&(0,l.SU)(et).with_gpx}])},[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,n.zw)(t.$t(`workouts.${(0,l.SU)(ot)?"ADD":"EDIT"}_WORKOUT`)),1)])),content:(0,a.w5)((()=>[(0,a._)("div",k,[(0,a._)("form",{class:(0,n.C_)({errors:mt.value}),onSubmit:(0,r.iM)(gt,["prevent"])},[(0,a._)("div",_,[(0,l.SU)(ot)?((0,a.wg)(),(0,a.iD)("div",v,[(0,a._)("div",null,[(0,a._)("input",{id:"withGpx",type:"radio",checked:ct.value,disabled:(0,l.SU)(at),onClick:kt},null,8,g),(0,a._)("label",y,(0,n.zw)(t.$t("workouts.WITH_GPX")),1)]),(0,a._)("div",null,[(0,a._)("input",{id:"withoutGpx",type:"radio",checked:!ct.value,disabled:(0,l.SU)(at),onClick:kt},null,8,S),(0,a._)("label",U,(0,n.zw)(t.$t("workouts.WITHOUT_GPX")),1)])])):(0,a.kq)("",!0),(0,a._)("div",h,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.SPORT",1))+": ",1),(0,a.wy)((0,a._)("select",{id:"sport",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[0]||(e[0]=t=>dt.sport_id=t)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,l.SU)(nt),(t=>((0,a.wg)(),(0,a.iD)("option",{value:t.id,key:t.id},(0,n.zw)(t.translatedLabel),9,T)))),128))],40,b),[[r.bM,dt.sport_id]])]),(0,l.SU)(ot)&&ct.value?((0,a.wg)(),(0,a.iD)("div",E,[(0,a._)("label",D,(0,n.zw)(t.$t("workouts.GPX_FILE"))+" "+(0,n.zw)(t.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+": ",1),(0,a._)("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:(0,l.SU)(at),required:"",onInvalid:St,onInput:ft},null,40,O),(0,a._)("div",I,[(0,a._)("div",null,[(0,a._)("strong",null,(0,n.zw)(t.$t("workouts.GPX_FILE"))+":",1),(0,a._)("ul",null,[(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_SIZE"))+": "+(0,n.zw)((0,l.SU)(rt)),1)])]),(0,a._)("div",null,[(0,a._)("strong",null,(0,n.zw)(t.$t("workouts.ZIP_ARCHIVE"))+":",1),(0,a._)("ul",null,[(0,a._)("li",null,(0,n.zw)(t.$t("workouts.NO_FOLDER")),1),(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_FILES"))+": "+(0,n.zw)((0,l.SU)(st)),1),(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_SIZE"))+": "+(0,n.zw)((0,l.SU)(it)),1)])])])])):((0,a.wg)(),(0,a.iD)("div",A,[(0,a._)("label",C,(0,n.zw)(t.$t("workouts.TITLE"))+": ",1),(0,a.wy)((0,a._)("input",{id:"title",name:"title",type:"text",required:!(0,l.SU)(ot),onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[1]||(e[1]=t=>dt.title=t)},null,40,R),[[r.nr,dt.title]])])),ct.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$,[(0,a._)("div",N,[(0,a._)("div",x,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.WORKOUT_DATE"))+":",1),(0,a._)("div",z,[(0,a.wy)((0,a._)("input",{id:"workout-date",name:"workout-date",type:"date",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[2]||(e[2]=t=>dt.workoutDate=t)},null,40,L),[[r.nr,dt.workoutDate]]),(0,a.wy)((0,a._)("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[3]||(e[3]=t=>dt.workoutTime=t)},null,40,j),[[r.nr,dt.workoutTime]])])]),(0,a._)("div",W,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DURATION"))+":",1),(0,a._)("div",null,[(0,a.wy)((0,a._)("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:"workout-duration",type:"text",placeholder:"HH",minlength:"1",maxlength:"2",pattern:"^([0-1]?[0-9]|2[0-3])$",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[4]||(e[4]=t=>dt.workoutDurationHour=t)},null,40,B),[[r.nr,dt.workoutDurationHour]]),P,(0,a.wy)((0,a._)("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:"workout-duration",type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"MM",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[5]||(e[5]=t=>dt.workoutDurationMinutes=t)},null,40,F),[[r.nr,dt.workoutDurationMinutes]]),H,(0,a.wy)((0,a._)("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:"workout-duration",type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"SS",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[6]||(e[6]=t=>dt.workoutDurationSeconds=t)},null,40,M),[[r.nr,dt.workoutDurationSeconds]])])])]),(0,a._)("div",Z,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DISTANCE"))+" ("+(0,n.zw)((0,l.SU)(tt).imperial_units?"mi":"km")+"): ",1),(0,a.wy)((0,a._)("input",{name:"workout-distance",type:"number",min:"0",step:"0.001",required:"",onInvalid:St,disabled:(0,l.SU)(at),"onUpdate:modelValue":e[7]||(e[7]=t=>dt.workoutDistance=t)},null,40,q),[[r.nr,dt.workoutDistance]])])])),(0,a._)("div",G,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.NOTES"))+": ",1),(0,a.Wm)(o,{name:"notes",input:dt.notes,disabled:(0,l.SU)(at),onUpdateValue:wt},null,8,["input","disabled"])])]),(0,l.SU)(ut)?((0,a.wg)(),(0,a.j4)(s,{key:0,message:(0,l.SU)(ut)},null,8,["message"])):(0,a.kq)("",!0),(0,l.SU)(at)?((0,a.wg)(),(0,a.iD)("div",K,[(0,a.Wm)(i)])):((0,a.wg)(),(0,a.iD)("div",Y,[(0,a._)("button",{class:"confirm",type:"submit",disabled:(0,l.SU)(at)},(0,n.zw)(t.$t("buttons.SUBMIT")),9,V),(0,a._)("button",{class:"cancel",onClick:(0,r.iM)(yt,["prevent"])},(0,n.zw)(t.$t("buttons.CANCEL")),9,J)]))],42,f)])])),_:1})],2)}}}),Q=o(3744);const tt=(0,Q.Z)(X,[["__scopeId","data-v-886f93f6"]]);var et=tt},4189:function(t,e,o){o.r(e),o.d(e,{default:function(){return p}});var a=o(6252),n=o(2262),l=o(2528),r=o(5801),s=o(9917);const i={id:"add-workout",class:"view"},u={class:"container"};var d=(0,a.aZ)({__name:"AddWorkout",setup(t){const e=(0,s.o)(),o=(0,a.Fl)((()=>e.getters[r.O8.GETTERS.SPORTS])),d=(0,a.Fl)((()=>e.getters[r.YN.GETTERS.AUTH_USER_PROFILE])),c=(0,a.Fl)((()=>e.getters[r.aX.GETTERS.WORKOUT_DATA]));return(t,e)=>((0,a.wg)(),(0,a.iD)("div",i,[(0,a._)("div",u,[(0,a.Wm)(l.Z,{authUser:(0,n.SU)(d),sports:(0,n.SU)(o),isCreation:!0,loading:(0,n.SU)(c).loading},null,8,["authUser","sports","loading"])])]))}});const c=d;var p=c},8237:function(t,e,o){o.r(e),o.d(e,{default:function(){return m}});var a=o(6252),n=o(2262),l=o(2201),r=o(2528),s=o(5801),i=o(9917);const u={id:"edit-workout",class:"view"},d={class:"container"};var c=(0,a.aZ)({__name:"EditWorkout",setup(t){const e=(0,l.yj)(),o=(0,i.o)(),c=(0,a.Fl)((()=>o.getters[s.YN.GETTERS.AUTH_USER_PROFILE])),p=(0,a.Fl)((()=>o.getters[s.O8.GETTERS.SPORTS])),m=(0,a.Fl)((()=>o.getters[s.aX.GETTERS.WORKOUT_DATA]));return(0,a.wF)((()=>{o.dispatch(s.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:e.params.workoutId})})),(0,a.YP)((()=>e.params.workoutId),(async t=>{t||o.commit(s.aX.MUTATIONS.EMPTY_WORKOUT)})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",u,[(0,a._)("div",d,[(0,n.SU)(m).workout.id?((0,a.wg)(),(0,a.j4)(r.Z,{key:0,authUser:(0,n.SU)(c),sports:(0,n.SU)(p),workout:(0,n.SU)(m).workout,loading:(0,n.SU)(m).loading},null,8,["authUser","sports","workout","loading"])):(0,a.kq)("",!0)])]))}});const p=c;var m=p},6466:function(t,e,o){o.r(e),o.d(e,{default:function(){return na}});var a=o(6252),n=o(2262),l=o(2201),r=o(8273),s=(o(7658),o(3577)),i=o(9963),u=o(5167);const d=t=>((0,a.dD)("data-v-4d9f9a8a"),t=t(),(0,a.Cn)(),t),c={id:"workout-card-title"},p=["title"],m=d((()=>(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),w=[m],k={class:"workout-card-title"},f={class:"workout-title-date"},_={key:0,class:"workout-title"},v={key:1,class:"workout-title"},g={class:"workout-segment"},y=(0,a.Uk)(" — "),S=d((()=>(0,a._)("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1))),U={class:"workout-date"},h={class:"workout-link"},b=["title"],T=d((()=>(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1))),E=[T];var D=(0,a.aZ)({__name:"WorkoutCardTitle",props:{sport:null,workoutObject:null},emits:["displayModal"],setup(t,{emit:e}){const o=t,{sport:l,workoutObject:r}=(0,n.BK)(o);async function d(t){await u.Z.get(`workouts/${t}/gpx/download`,{responseType:"blob"}).then((e=>{const o=window.URL.createObjectURL(new Blob([e.data],{type:"application/gpx+xml"})),a=document.createElement("a");a.href=o,a.setAttribute("download",`${t}.gpx`),document.body.appendChild(a),a.click()}))}return(t,o)=>{const u=(0,a.up)("SportImage"),m=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",{class:(0,s.C_)(["workout-previous workout-arrow",{inactive:!(0,n.SU)(r).previousUrl}]),title:(0,n.SU)(r).previousUrl?t.$t(`workouts.PREVIOUS_${(0,n.SU)(r).type}`):t.$t(`workouts.NO_PREVIOUS_${(0,n.SU)(r).type}`),onClick:o[0]||(o[0]=e=>(0,n.SU)(r).previousUrl?t.$router.push((0,n.SU)(r).previousUrl):null)},w,10,p),(0,a._)("div",k,[(0,a.Wm)(u,{"sport-label":(0,n.SU)(l).label,color:(0,n.SU)(l).color},null,8,["sport-label","color"]),(0,a._)("div",f,["WORKOUT"===(0,n.SU)(r).type?((0,a.wg)(),(0,a.iD)("div",_,[(0,a._)("span",null,(0,s.zw)((0,n.SU)(r).title),1),(0,a._)("i",{class:"fa fa-edit","aria-hidden":"true",onClick:o[1]||(o[1]=e=>t.$router.push({name:"EditWorkout",params:{workoutId:(0,n.SU)(r).workoutId}}))}),(0,n.SU)(r).with_gpx?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-download","aria-hidden":"true",onClick:o[2]||(o[2]=(0,i.iM)((t=>d((0,n.SU)(r).workoutId)),["prevent"]))})):(0,a.kq)("",!0),(0,a._)("i",{class:"fa fa-trash","aria-hidden":"true",onClick:o[3]||(o[3]=t=>e("displayModal",!0))})])):((0,a.wg)(),(0,a.iD)("div",v,[(0,a.Uk)((0,s.zw)((0,n.SU)(r).title)+" ",1),(0,a._)("span",g,[y,S,(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.SEGMENT"))+" "+(0,s.zw)((0,n.SU)(r).segmentId+1),1)])])),(0,a._)("div",U,[(0,a.Uk)((0,s.zw)((0,n.SU)(r).workoutDate)+" - "+(0,s.zw)((0,n.SU)(r).workoutTime)+" ",1),(0,a._)("span",h,["SEGMENT"===(0,n.SU)(r).type?((0,a.wg)(),(0,a.j4)(m,{key:0,to:{name:"Workout",params:{workoutId:(0,n.SU)(r).workoutId}}},{default:(0,a.w5)((()=>[(0,a.Uk)(" > "+(0,s.zw)(t.$t("workouts.BACK_TO_WORKOUT")),1)])),_:1},8,["to"])):(0,a.kq)("",!0)])])])]),(0,a._)("div",{class:(0,s.C_)(["workout-next workout-arrow",{inactive:!(0,n.SU)(r).nextUrl}]),title:(0,n.SU)(r).nextUrl?t.$t(`workouts.NEXT_${(0,n.SU)(r).type}`):t.$t(`workouts.NO_NEXT_${(0,n.SU)(r).type}`),onClick:o[4]||(o[4]=e=>(0,n.SU)(r).nextUrl?t.$router.push((0,n.SU)(r).nextUrl):null)},E,10,b)])}}}),O=o(3744);const I=(0,O.Z)(D,[["__scopeId","data-v-4d9f9a8a"]]);var A=I;const C=t=>((0,a.dD)("data-v-1a5282f6"),t=t(),(0,a.Cn)(),t),R={key:0,class:"workout-record"},$=C((()=>(0,a._)("sup",null,[(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1))),N=[$];var x=(0,a.aZ)({__name:"WorkoutRecord",props:{recordType:null,workoutObject:null},setup(t){const e=t,{recordType:o,workoutObject:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).records&&(0,n.SU)(l).records.find((t=>t.record_type===(0,n.SU)(o)))?((0,a.wg)(),(0,a.iD)("span",R,N)):(0,a.kq)("",!0)}});const z=(0,O.Z)(x,[["__scopeId","data-v-1a5282f6"]]);var L=z,j=o(9150);const W=["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"],B=t=>{const e=Math.floor(t/22.5+.5);return W[e%16]},P={class:"wind"},F={class:"wind-bearing"},H=["title"];var M=(0,a.aZ)({__name:"WeatherWind",props:{weather:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{useImperialUnits:o,weather:l}=(0,n.BK)(e),{t:r}=(0,j.QT)();function i(t){return r(`workouts.WEATHER.WIND_DIRECTIONS.${B(t)}`)}return(t,e)=>{const r=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",P,[(0,a.Wm)(r,{distance:(0,n.SU)(l).wind,unitFrom:"m",digits:1,displayUnit:!1,useImperialUnits:(0,n.SU)(o)},null,8,["distance","useImperialUnits"]),(0,a.Uk)(" "+(0,s.zw)((0,n.SU)(o)?"ft":"m")+"/s ",1),(0,a._)("div",F,[(0,n.SU)(l).windBearing?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-long-arrow-down",style:(0,s.j5)({transform:`rotate(${(0,n.SU)(l).windBearing}deg)`}),"aria-hidden":"true",title:i((0,n.SU)(l).windBearing)},null,12,H)):(0,a.kq)("",!0)])])}}});const Z=(0,O.Z)(M,[["__scopeId","data-v-46a7c31c"]]);var q=Z;const G=t=>((0,a.dD)("data-v-76e9ab62"),t=t(),(0,a.Cn)(),t),K={key:0,id:"workout-weather"},Y={class:"weather-table"},V=G((()=>(0,a._)("th",null,null,-1))),J={class:"weather-th"},X=["src","alt","title"],Q={class:"weather-th"},tt=["src","alt","title"],et=["alt","title"],ot=["alt","title"],at=["alt","title"];var nt=(0,a.aZ)({__name:"WorkoutWeather",props:{workoutObject:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{useImperialUnits:o,workoutObject:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).weatherStart&&(0,n.SU)(l).weatherEnd?((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("table",Y,[(0,a._)("thead",null,[(0,a._)("tr",null,[V,(0,a._)("th",null,[(0,a._)("div",J,[(0,a.Uk)((0,s.zw)(t.$t("workouts.START"))+" ",1),(0,a._)("img",{class:"weather-img",src:`/img/weather/${(0,n.SU)(l).weatherStart.icon}.svg`,alt:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherStart.icon}`),title:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherStart.icon}`)},null,8,X)])]),(0,a._)("th",null,[(0,a._)("div",Q,[(0,a.Uk)((0,s.zw)(t.$t("workouts.END"))+" ",1),(0,a._)("img",{class:"weather-img",src:`/img/weather/${(0,n.SU)(l).weatherEnd.icon}.svg`,alt:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherEnd.icon}`),title:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherEnd.icon}`)},null,8,tt)])])])]),(0,a._)("tbody",null,[(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/temperature.svg",alt:t.$t("workouts.WEATHER.TEMPERATURE"),title:t.$t("workouts.WEATHER.TEMPERATURE")},null,8,et)]),(0,a._)("td",null,(0,s.zw)(Number((0,n.SU)(l).weatherStart.temperature).toFixed(1))+"°C ",1),(0,a._)("td",null,(0,s.zw)(Number((0,n.SU)(l).weatherEnd.temperature).toFixed(1))+"°C ",1)]),(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/pour-rain.svg",alt:t.$t("workouts.WEATHER.HUMIDITY"),title:t.$t("workouts.WEATHER.HUMIDITY")},null,8,ot)]),(0,a._)("td",null,(0,s.zw)(Number(100*(0,n.SU)(l).weatherStart.humidity).toFixed(1))+"% ",1),(0,a._)("td",null,(0,s.zw)(Number(100*(0,n.SU)(l).weatherEnd.humidity).toFixed(1))+"% ",1)]),(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/breeze.svg",alt:t.$t("workouts.WEATHER.WIND"),title:t.$t("workouts.WEATHER.WIND")},null,8,at)]),(0,a._)("td",null,[(0,a.Wm)(q,{weather:(0,n.SU)(l).weatherStart,useImperialUnits:(0,n.SU)(o)},null,8,["weather","useImperialUnits"])]),(0,a._)("td",null,[(0,a.Wm)(q,{weather:(0,n.SU)(l).weatherEnd,useImperialUnits:(0,n.SU)(o)},null,8,["weather","useImperialUnits"])])])])])])):(0,a.kq)("",!0)}});const lt=(0,O.Z)(nt,[["__scopeId","data-v-76e9ab62"]]);var rt=lt;const st=t=>((0,a.dD)("data-v-74c5993b"),t=t(),(0,a.Cn)(),t),it={id:"workout-info"},ut={class:"workout-data"},dt=st((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),ct={class:"label"},pt=(0,a.Uk)(": "),mt={class:"value"},wt={key:0},kt={class:"value"},ft={class:"value"},_t={class:"workout-data"},vt=st((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),gt={class:"label"},yt=(0,a.Uk)(": "),St={class:"workout-data"},Ut=st((()=>(0,a._)("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1))),ht={class:"label"},bt=(0,a.Uk)(": "),Tt=st((()=>(0,a._)("br",null,null,-1))),Et={class:"label"},Dt=(0,a.Uk)(": "),Ot={key:0,class:"workout-data"},It=["alt"],At={class:"label"},Ct=(0,a.Uk)(": "),Rt=st((()=>(0,a._)("br",null,null,-1))),$t={class:"label"},Nt=(0,a.Uk)(": "),xt={key:1,class:"workout-data"},zt=st((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Lt={class:"label"},jt=(0,a.Uk)(": "),Wt=st((()=>(0,a._)("br",null,null,-1))),Bt={class:"label"},Pt=(0,a.Uk)(": ");var Ft=(0,a.aZ)({__name:"WorkoutData",props:{workoutObject:null,useImperialUnits:{type:Boolean},displayHARecord:{type:Boolean}},setup(t){const e=t,{displayHARecord:o,workoutObject:l,useImperialUnits:r}=(0,n.BK)(e),i=(0,a.Fl)((()=>"0:00:00"!==e.workoutObject.pauses&&null!==e.workoutObject.pauses));return(t,e)=>{const u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",it,[(0,a._)("div",ut,[dt,(0,a._)("span",ct,(0,s.zw)(t.$t("workouts.DURATION")),1),pt,(0,a._)("span",mt,(0,s.zw)((0,n.SU)(l).moving),1),(0,a.Wm)(L,{workoutObject:(0,n.SU)(l),recordType:"LD"},null,8,["workoutObject"]),(0,n.SU)(i)?((0,a.wg)(),(0,a.iD)("div",wt,[(0,a.Uk)(" ("+(0,s.zw)(t.$t("workouts.PAUSES"))+": ",1),(0,a._)("span",kt,(0,s.zw)((0,n.SU)(l).pauses),1),(0,a.Uk)(" - "+(0,s.zw)(t.$t("workouts.TOTAL_DURATION"))+": ",1),(0,a._)("span",ft,(0,s.zw)((0,n.SU)(l).duration)+")",1)])):(0,a.kq)("",!0)]),(0,a._)("div",_t,[vt,(0,a._)("span",gt,(0,s.zw)(t.$t("workouts.DISTANCE")),1),yt,(0,a.Wm)(u,{distance:(0,n.SU)(l).distance,digits:3,unitFrom:"km",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(L,{workoutObject:(0,n.SU)(l),recordType:"FD"},null,8,["workoutObject"])]),(0,a._)("div",St,[Ut,(0,a._)("span",ht,(0,s.zw)(t.$t("workouts.AVERAGE_SPEED")),1),bt,(0,a.Wm)(u,{distance:(0,n.SU)(l).aveSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(L,{workoutObject:(0,n.SU)(l),recordType:"AS"},null,8,["workoutObject"]),Tt,(0,a._)("span",Et,(0,s.zw)(t.$t("workouts.MAX_SPEED")),1),Dt,(0,a.Wm)(u,{distance:(0,n.SU)(l).maxSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(L,{workoutObject:(0,n.SU)(l),recordType:"MS"},null,8,["workoutObject"])]),null!==(0,n.SU)(l).maxAlt&&null!==(0,n.SU)(l).minAlt?((0,a.wg)(),(0,a.iD)("div",Ot,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:t.$t("workouts.ELEVATION")},null,8,It),(0,a._)("span",At,(0,s.zw)(t.$t("workouts.MIN_ALTITUDE")),1),Ct,(0,a.Wm)(u,{distance:(0,n.SU)(l).minAlt,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),Rt,(0,a._)("span",$t,(0,s.zw)(t.$t("workouts.MAX_ALTITUDE")),1),Nt,(0,a.Wm)(u,{distance:(0,n.SU)(l).maxAlt,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"])])):(0,a.kq)("",!0),null!==(0,n.SU)(l).ascent&&null!==(0,n.SU)(l).descent?((0,a.wg)(),(0,a.iD)("div",xt,[zt,(0,a._)("span",Lt,(0,s.zw)(t.$t("workouts.ASCENT")),1),jt,(0,a.Wm)(u,{distance:(0,n.SU)(l).ascent,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,n.SU)(o)?((0,a.wg)(),(0,a.j4)(L,{key:0,workoutObject:(0,n.SU)(l),recordType:"HA"},null,8,["workoutObject"])):(0,a.kq)("",!0),Wt,(0,a._)("span",Bt,(0,s.zw)(t.$t("workouts.DESCENT")),1),Pt,(0,a.Wm)(u,{distance:(0,n.SU)(l).descent,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"])])):(0,a.kq)("",!0),(0,a.Wm)(rt,{workoutObject:(0,n.SU)(l),useImperialUnits:(0,n.SU)(r)},null,8,["workoutObject","useImperialUnits"])])}}});const Ht=(0,O.Z)(Ft,[["__scopeId","data-v-74c5993b"]]);var Mt=Ht;function Zt(t,e){return Array.from(t.getElementsByTagName(e))}function qt(t){return t?.normalize(),t&&t.textContent||""}function Gt(t,e,o){const a=t.getElementsByTagName(e),n=a.length?a[0]:null;return n&&o&&o(n),n}function Kt(t,e,o){const a={};if(!t)return a;const n=t.getElementsByTagName(e),l=n.length?n[0]:null;return l&&o?o(l,a):a}function Yt(t,e,o){const a=qt(Gt(t,e));return a&&o&&o(a)||{}}function Vt(t,e,o){const a=parseFloat(qt(Gt(t,e)));if(!isNaN(a))return a&&o&&o(a)||{}}function Jt(t,e,o){const a=parseFloat(qt(Gt(t,e)));if(!isNaN(a))return a&&o&&o(a),a}function Xt(t,e){const o={};for(const a of e)Yt(t,a,(t=>{o[a]=t}));return o}function Qt(t){return 1===t?.nodeType}function te(t){return Kt(t,"line",(t=>{const e=Object.assign({},Yt(t,"color",(t=>({stroke:`#${t}`}))),Vt(t,"opacity",(t=>({"stroke-opacity":t}))),Vt(t,"width",(t=>({"stroke-width":96*t/25.4}))));return e}))}function ee(t){let e=[];if(null===t)return e;for(const o of Array.from(t.childNodes)){if(!Qt(o))continue;const t=oe(o.nodeName);if("gpxtpx:TrackPointExtension"===t)e=e.concat(ee(o));else{const a=qt(o);e.push([t,ae(a)])}}return e}function oe(t){return["heart","gpxtpx:hr","hr"].includes(t)?"heart":t}function ae(t){const e=parseFloat(t);return isNaN(e)?t:e}function ne(t){const e=[parseFloat(t.getAttribute("lon")||""),parseFloat(t.getAttribute("lat")||"")];if(isNaN(e[0])||isNaN(e[1]))return null;Jt(t,"ele",(t=>{e.push(t)}));const o=Gt(t,"time");return{coordinates:e,time:o?qt(o):null,extendedValues:ee(Gt(t,"extensions"))}}function le(t){const e=Xt(t,["name","cmt","desc","type","time","keywords"]),o=Array.from(t.getElementsByTagNameNS("http://www.garmin.com/xmlschemas/GpxExtensions/v3","*"));for(const n of o)n.parentNode?.parentNode===t&&(e[n.tagName.replace(":","_")]=qt(n));const a=Zt(t,"link");return a.length&&(e.links=a.map((t=>Object.assign({href:t.getAttribute("href")},Xt(t,["text","type"]))))),e}function re(t,e){const o=Zt(t,e),a=[],n=[],l={};for(let r=0;r1,r=Object.assign({_gpxType:"trk"},le(t),te(Gt(t,"extensions")),a.length?{coordinateProperties:{times:l?a:a[0]}}:{});for(const s of n){o.push(s.line),r.coordinateProperties||(r.coordinateProperties={});const t=r.coordinateProperties,e=Object.entries(s.extendedValues);for(let o=0;onew Array(t.line.length).fill(null)))),t[a][o]=r):t[a]=r}}return{type:"Feature",properties:r,geometry:l?{type:"MultiLineString",coordinates:o}:{type:"LineString",coordinates:o[0]}}}function ue(t){const e=Object.assign(le(t),Xt(t,["sym"])),o=ne(t);return o?{type:"Feature",properties:e,geometry:{type:"Point",coordinates:o.coordinates}}:null}function*de(t){for(const e of Zt(t,"trk")){const t=ie(e);t&&(yield t)}for(const e of Zt(t,"rte")){const t=se(e);t&&(yield t)}for(const e of Zt(t,"wpt")){const t=ue(e);t&&(yield t)}}function ce(t){return{type:"FeatureCollection",features:Array.from(de(t))}}const pe=(t,e)=>{let o;return function(...a){const n=this;o&&clearTimeout(o),o=setTimeout((()=>{t.apply(n,a),o=null}),e)}},me=t=>t&&"function"===typeof t.charAt?t.charAt(0).toUpperCase()+t.slice(1):t,we=(t,e,o)=>{for(const n in o){const l="set"+me(n);t[l]?(0,a.YP)((()=>o[n]),((e,o)=>{t[l](e,o)})):e[l]&&(0,a.YP)((()=>o[n]),(t=>{e[l](t)}))}},ke=t=>{const e={};for(const o in t)if(o.startsWith("on")&&!o.startsWith("onUpdate")&&"onReady"!==o){const a=o.slice(2).toLocaleLowerCase();e[a]=t[o]}return e},fe=async t=>{const e=await Promise.all([o.e(431).then(o.t.bind(o,6431,17)),o.e(93).then(o.t.bind(o,7093,17)),o.e(858).then(o.t.bind(o,8858,17))]);delete t.Default.prototype._getIconUrl,t.Default.mergeOptions({iconRetinaUrl:e[0].default,iconUrl:e[1].default,shadowUrl:e[2].default})},_e=t=>{const e=(0,n.iH)((()=>console.warn(`Method ${t} has been invoked without being replaced`))),o=(...t)=>e.value(...t);return o.wrapped=e,(0,a.JJ)(t,o),o},ve=(t,e)=>t.wrapped.value=e,ge="object"===typeof self&&self.self===self&&self||"object"===typeof o.g&&o.g.global===o.g&&o.g||void 0,ye="useGlobalLeaflet",Se={options:{type:Object,default:()=>({})}},Ue=t=>({options:t.options,methods:{}}),he={...Se,pane:{type:String,default:"overlayPane"},attribution:{type:String,default:null},name:{type:String,custom:!0,default:void 0},layerType:{type:String,custom:!0,default:void 0},visible:{type:Boolean,custom:!0,default:!0}},be=(t,e,o)=>{const n=(0,a.f3)("addLayer"),l=(0,a.f3)("removeLayer"),{options:r,methods:s}=Ue(t),i={...r,attribution:t.attribution,pane:t.pane},u=()=>n({leafletObject:e.value}),d=()=>l({leafletObject:e.value}),c={...s,setAttribution(t,e){const o=this.$parent.leafletObject.attributionControl;o.removeAttribution(e).addAttribution(t)},setName(){d(),t.visible&&u()},setLayerType(){d(),t.visible&&u()},setVisible(t){e.value&&(t?u():d())},bindPopup({leafletObject:t}){e.value.bindPopup(t)},bindTooltip({leafletObject:t}){e.value.bindTooltip(t)},unbindTooltip(){const t=e.value?e.value.getTooltip():null;t&&t.unbindTooltip()},unbindPopup(){const t=e.value?e.value.getPopup():null;t&&t.unbindPopup()},updateVisibleProp(t){o.emit("update:visible",t)}};return(0,a.JJ)("bindPopup",c.bindPopup),(0,a.JJ)("bindTooltip",c.bindTooltip),(0,a.JJ)("unbindTooltip",c.unbindTooltip),(0,a.JJ)("unbindPopup",c.unbindPopup),(0,a.Ah)((()=>{c.unbindPopup(),c.unbindTooltip(),d()})),{options:i,methods:c}},Te=(t,e)=>{if(t&&e.default)return(0,a.h)("div",{style:{display:"none"}},e.default())},Ee={...Se,interactive:{type:Boolean,default:!0},bubblingMouseEvents:{type:Boolean,default:!0}},De={...he,...Ee,stroke:{type:Boolean,custom:!0,default:!0},color:{type:String,custom:!0,default:"#3388ff"},weight:{type:Number,custom:!0,default:3},opacity:{type:Number,custom:!0,default:1},lineCap:{type:String,custom:!0,default:"round"},lineJoin:{type:String,custom:!0,default:"round"},dashArray:{type:String,custom:!0,default:null},dashOffset:{type:String,custom:!0,default:null},fill:{type:Boolean,custom:!0,default:!1},fillColor:{type:String,custom:!0,default:"#3388ff"},fillOpacity:{type:Number,custom:!0,default:.2},fillRule:{type:String,custom:!0,default:"evenodd"},className:{type:String,custom:!0,default:null}},Oe={...De,latLng:{type:[Object,Array],custom:!0,default:null},radius:{type:Number,default:null}};const Ie={...Se,position:{type:String,default:"topright"}},Ae=(t,e)=>{const{options:o,methods:n}=Ue(t),l={...o,position:t.position},r={...n,setPosition(t){e.value&&e.value.setPosition(t)}};return(0,a.Ah)((()=>{e.value&&e.value.remove()})),{options:l,methods:r}},Ce=t=>t.default?(0,a.h)("div",{ref:"root"},t.default()):null;var Re={name:"LControl",props:{...Ie,disableClickPropagation:{type:Boolean,custom:!0,default:!0},disableScrollPropagation:{type:Boolean,custom:!0,default:!1}},setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(null),s=(0,a.f3)(ye),i=(0,a.f3)("registerControl"),{options:u,methods:d}=Ae(t,l);return(0,a.bv)((async()=>{const{Control:n,DomEvent:c}=s?ge.L:await o.e(633).then(o.bind(o,6633)),p=n.extend({onAdd(){return r.value}});l.value=new p(u),we(d,l.value,t),i({leafletObject:l.value}),t.disableClickPropagation&&c.disableClickPropagation(r.value),t.disableScrollPropagation&&c.disableScrollPropagation(r.value),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{root:r,leafletObject:l}},render(){return Ce(this.$slots)},__file:"src/components/LControl.vue"};const $e={...Ie,collapsed:{type:Boolean,default:!0},autoZIndex:{type:Boolean,default:!0},hideSingleBase:{type:Boolean,default:!1},sortLayers:{type:Boolean,default:!1},sortFunction:{type:Function,default:void 0}},Ne=(t,e)=>{const{options:o}=Ae(t,e),a={...o,collapsed:t.collapsed,autoZIndex:t.autoZIndex,hideSingleBase:t.hideSingleBase,sortLayers:t.sortLayers,sortFunction:t.sortFunction},n={addLayer(t){"base"===t.layerType?e.value.addBaseLayer(t.leafletObject,t.name):"overlay"===t.layerType&&e.value.addOverlay(t.leafletObject,t.name)},removeLayer(t){e.value.removeLayer(t.leafletObject)}};return{options:a,methods:n}};var xe={name:"LControlLayers",props:$e,setup(t,e){const l=(0,n.iH)({}),r=(0,a.f3)(ye),s=(0,a.f3)("registerLayerControl"),{options:i,methods:u}=Ne(t,l);return(0,a.bv)((async()=>{const{control:n}=r?ge.L:await o.e(633).then(o.bind(o,6633));l.value=n.layers(null,null,i),we(u,l.value,t),s({...t,...u,leafletObject:l.value}),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{leafletObject:l.value}},render(){return null},__file:"src/components/LControlLayers.vue"};Boolean,Boolean,Boolean;const ze={...he},Le=(t,e,o)=>{const{options:n,methods:l}=be(t,e,o),r={...n},s={...l,addLayer(t){e.value.addLayer(t.leafletObject)},removeLayer(t){e.value.removeLayer(t.leafletObject)}};return(0,a.JJ)("addLayer",s.addLayer),(0,a.JJ)("removeLayer",s.removeLayer),{options:r,methods:s}};const je={...ze,geojson:{type:[Object,Array],default:()=>({})}},We=(t,e)=>{const{options:o,methods:a}=Le(t,e),n={...o,...t},l={...a,setGeojson(t){e.value.clearLayers(),e.value.addData(t)},getGeoJSONData(){return e.value.toGeoJSON()},getBounds(){return e.value.getBounds()}};return{options:n,methods:l}};var Be={props:je,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ye),i=(0,a.f3)("addLayer"),{methods:u,options:d}=We(t,l);return(0,a.bv)((async()=>{const{geoJSON:n,DomEvent:c}=s?ge.L:await o.e(633).then(o.bind(o,6633));l.value=n(t.geojson,d);const p=ke(e.attrs);c.on(l.value,p),we(u,l.value,t),i({...t,...u,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return Te(this.ready,this.$slots)},__file:"src/components/LGeoJson.vue"};const Pe={...he,pane:{type:String,default:"tilePane"},opacity:{type:Number,custom:!1,default:1},zIndex:{type:Number,default:1},tileSize:{type:Number,default:256},noWrap:{type:Boolean,default:!1},minZoom:{type:Number,default:0},maxZoom:{type:Number,default:void 0}},Fe=(t,e,o)=>{const{options:a,methods:n}=be(t,e,o),l={...a,pane:t.pane,opacity:t.opacity,zIndex:t.zIndex,tileSize:t.tileSize,noWrap:t.noWrap,minZoom:t.minZoom,maxZoom:t.maxZoom};return{options:l,methods:{...n}}};const He={iconUrl:{type:String,custom:!0,default:null},iconRetinaUrl:{type:String,custom:!0,default:null},iconSize:{type:[Object,Array],custom:!0,default:null},iconAnchor:{type:[Object,Array],custom:!0,default:null},popupAnchor:{type:[Object,Array],custom:!0,default:()=>[0,0]},tooltipAnchor:{type:[Object,Array],custom:!0,default:()=>[0,0]},shadowUrl:{type:String,custom:!0,default:null},shadowRetinaUrl:{type:String,custom:!0,default:null},shadowSize:{type:[Object,Array],custom:!0,default:null},shadowAnchor:{type:[Object,Array],custom:!0,default:null},bgPos:{type:[Object,Array],custom:!0,default:()=>[0,0]},className:{type:String,custom:!0,default:""},options:{type:Object,custom:!0,default:()=>({})}};var Me={name:"LIcon",props:{...He,...Se},setup(t,e){const l=(0,n.iH)(null),r=(0,a.f3)(ye),s=(0,a.f3)("canSetParentHtml"),i=(0,a.f3)("setParentHtml"),u=(0,a.f3)("setIcon");let d,c,p,m,w;const k=(o,a,n)=>{const l=o&&o.innerHTML;if(!a)return void(n&&w&&s()&&i(l));const r=ke(e.attrs);w&&c(w,r);const{options:k}=Ue(t),f={...k,iconUrl:t.iconUrl,iconRetinaUrl:t.iconRetinaUrl,iconSize:t.iconSize,iconAnchor:t.iconAnchor,popupAnchor:t.popupAnchor,tooltipAnchor:t.tooltipAnchor,shadowUrl:t.shadowUrl,shadowRetinaUrl:t.shadowRetinaUrl,shadowSize:t.shadowSize,shadowAnchor:t.shadowAnchor,bgPos:t.bgPos,className:t.className,html:l||t.html};w=f.html?p(f):m(f),d(w,r),u(w)},f=()=>{(0,a.Y3)((()=>k(l.value,!0,!1)))},_=()=>{(0,a.Y3)((()=>k(l.value,!1,!0)))},v={setIconUrl:f,setIconRetinaUrl:f,setIconSize:f,setIconAnchor:f,setPopupAnchor:f,setTooltipAnchor:f,setShadowUrl:f,setShadowRetinaUrl:f,setShadowAnchor:f,setBgPos:f,setClassName:f,setHtml:f};return(0,a.bv)((async()=>{const{DomEvent:e,divIcon:a,icon:n}=r?ge.L:await o.e(633).then(o.bind(o,6633));d=e.on,c=e.off,p=a,m=n,we(v,{},t);const s=new MutationObserver(_);s.observe(l.value,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),f()})),{root:l}},render(){const t=this.$slots.default?this.$slots.default():void 0;return(0,a.h)("div",{ref:"root"},t)},__file:"src/components/LIcon.vue"};Boolean,Boolean;var Ze={props:ze,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ye),i=(0,a.f3)("addLayer"),{methods:u}=Le(t,l,e);return(0,a.bv)((async()=>{const{layerGroup:n,DomEvent:d}=s?ge.L:await o.e(633).then(o.bind(o,6633));l.value=n(t.options);const c=ke(e.attrs);d.on(l.value,c),we(u,l.value,t),i({...t,...u,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return Te(this.ready,this.$slots)},__file:"src/components/LLayerGroup.vue"},qe={emits:["ready","update:zoom","update:center","update:bounds"],props:{...Se,center:{type:[Object,Array],default:()=>[0,0]},bounds:{type:[Array,Object],default:void 0},maxBounds:{type:[Array,Object],default:void 0},zoom:{type:Number,default:0},minZoom:{type:Number,default:void 0},maxZoom:{type:Number,default:void 0},paddingBottomRight:{type:Array,default:void 0},paddingTopLeft:{type:Array,default:void 0},padding:{type:Array,default:void 0},worldCopyJump:{type:Boolean,default:!1},crs:{type:[String,Object],default:"EPSG3857"},maxBoundsViscosity:{type:Number,default:void 0},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number,default:void 0},inertiaMaxSpeed:{type:Number,default:void 0},easeLinearity:{type:Number,default:void 0},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number,default:void 0},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:!1},useGlobalLeaflet:{type:Boolean,default:!1}},setup(t,e){const l=(0,n.iH)(null),r=(0,n.qj)({ready:!1,leafletRef:{},layersToAdd:[],layersInControl:[]}),{options:s}=Ue(t),i={...s,minZoom:t.minZoom,maxZoom:t.maxZoom,maxBounds:t.maxBounds,maxBoundsViscosity:t.maxBoundsViscosity,worldCopyJump:t.worldCopyJump,crs:t.crs,center:t.center,zoom:t.zoom,inertia:t.inertia,inertiaDeceleration:t.inertiaDeceleration,inertiaMaxSpeed:t.inertiaMaxSpeed,easeLinearity:t.easeLinearity,zoomAnimation:t.zoomAnimation,zoomAnimationThreshold:t.zoomAnimationThreshold,fadeAnimation:t.fadeAnimation,markerZoomAnimation:t.markerZoomAnimation},u=_e("addLayer"),d=_e("removeLayer"),c=_e("registerControl"),p=_e("registerLayerControl");(0,a.JJ)(ye,t.useGlobalLeaflet);const m={moveEndHandler(){e.emit("update:zoom",r.leafletRef.getZoom()),e.emit("update:center",r.leafletRef.getCenter()),e.emit("update:bounds",r.leafletRef.getBounds())},overlayAddHandler(t){const e=r.layersInControl.find((e=>e.name===t.name));e&&e.updateVisibleProp(!0)},overlayRemoveHandler(t){const e=r.layersInControl.find((e=>e.name===t.name));e&&e.updateVisibleProp(!1)}};(0,a.bv)((async()=>{t.useGlobalLeaflet&&(ge.L=ge.L||await o.e(243).then(o.t.bind(o,5243,23)));const{map:n,CRS:s,Icon:w,latLngBounds:k,latLng:f,DomEvent:_}=t.useGlobalLeaflet?ge.L:await o.e(633).then(o.bind(o,6633));try{i.beforeMapMount&&await i.beforeMapMount()}catch(S){console.error(`The following error occurred running the provided beforeMapMount hook ${S.message}`)}await fe(w);const v="string"==typeof i.crs?s[i.crs]:i.crs;i.crs=v||s.EPSG3857;const g={addLayer(t){if(void 0!==t.layerType)if(void 0===r.layerControl)r.layersToAdd.push(t);else{const e=r.layersInControl.find((e=>e.leafletObject._leaflet_id===t.leafletObject._leaflet_id));e||(r.layerControl.addLayer(t),r.layersInControl.push(t))}!1!==t.visible&&r.leafletRef.addLayer(t.leafletObject)},removeLayer(t){void 0!==t.layerType&&(void 0===r.layerControl?r.layersToAdd=r.layersToAdd.filter((e=>e.name!==t.name)):(r.layerControl.removeLayer(t.leafletObject),r.layersInControl=r.layersInControl.filter((e=>e.leafletObject._leaflet_id!==t.leafletObject._leaflet_id)))),r.leafletRef.removeLayer(t.leafletObject)},registerLayerControl(t){r.layerControl=t,r.layersToAdd.forEach((t=>{r.layerControl.addLayer(t)})),r.layersToAdd=[],c(t)},registerControl(t){r.leafletRef.addControl(t.leafletObject)},setZoom(e){const o=r.leafletRef.getZoom();e!==o&&r.leafletRef.setZoom(e,{animate:!t.noBlockingAnimations&&null})},setPaddingBottomRight(t){r.paddingBottomRight=t},setPaddingTopLeft(t){r.paddingTopLeft=t},setPadding(t){r.padding=t},setCrs(t){const e=r.leafletRef.getBounds();r.leafletRef.options.crs=t,r.leafletRef.fitBounds(e,{animate:!1,padding:[0,0]})},fitBounds(t){r.leafletRef.fitBounds(t,{animate:!this.noBlockingAnimations&&null})},setBounds(t){if(!t)return;const e=k(t);if(!e.isValid())return;const o=r.lastSetBounds||r.leafletRef.getBounds(),a=!o.equals(e,0);a&&(r.lastSetBounds=e,r.leafletRef.fitBounds(e,this.fitBoundsOptions))},setCenter(t){if(null==t)return;const e=f(t),o=r.lastSetCenter||r.leafletRef.getCenter();o.lat===e.lat&&o.lng===e.lng||(r.lastSetCenter=e,r.leafletRef.panTo(e,{animate:!this.noBlockingAnimations&&null}))}};ve(u,g.addLayer),ve(d,g.removeLayer),ve(c,g.registerControl),ve(p,g.registerLayerControl),r.leafletRef=n(l.value,i),we(g,r.leafletRef,t);const y=ke(e.attrs);r.leafletRef.on("moveend",pe(m.moveEndHandler,100)),r.leafletRef.on("overlayadd",m.overlayAddHandler),r.leafletRef.on("overlayremove",m.overlayRemoveHandler),_.on(r.leafletRef,y),r.ready=!0,(0,a.Y3)((()=>e.emit("ready",r.leafletRef)))})),(0,a.Jd)((()=>{r.leafletRef&&r.leafletRef.remove()}));const w=(0,a.Fl)((()=>r.leafletRef)),k=(0,a.Fl)((()=>r.ready));return{root:l,ready:k,leafletObject:w}},render(){return(0,a.h)("div",{style:{width:"100%",height:"100%"},ref:"root"},this.ready?this.$slots.default():{})},__file:"src/components/LMap.vue"};const Ge={...he,pane:{type:String,default:"markerPane"},draggable:{type:Boolean,custom:!0,default:!1},latLng:{type:[Object,Array],custom:!0,default:null},icon:{type:[Object],default:()=>{},custom:!1},zIndexOffset:{type:Number,custom:!1,default:null}},Ke=(t,e,o)=>{const{options:a,methods:n}=be(t,e,o),l={...a,...t},r={...n,setDraggable(t){e.value.dragging&&(t?e.value.dragging.enable():e.value.dragging.disable())},latLngSync(t){o.emit("update:latLng",t.latlng),o.emit("update:lat-lng",t.latlng)},setLatLng(t){if(null!=t&&e.value){const o=e.value.getLatLng();o&&o.equals(t)||e.value.setLatLng(t)}}};return{options:l,methods:r}};var Ye={name:"LMarker",props:Ge,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ye),i=(0,a.f3)("addLayer");(0,a.JJ)("canSetParentHtml",(()=>!!l.value.getElement())),(0,a.JJ)("setParentHtml",(t=>l.value.getElement().innerHTML=t)),(0,a.JJ)("setIcon",(t=>l.value.setIcon&&l.value.setIcon(t)));const{options:u,methods:d}=Ke(t,l,e);return void 0===u.icon&&delete u.icon,(0,a.bv)((async()=>{const{marker:n,DomEvent:c}=s?ge.L:await o.e(633).then(o.bind(o,6633));l.value=n(t.latLng,u);const p=ke(e.attrs);c.on(l.value,p),l.value.on("move",pe(d.latLngSync,100)),we(d,l.value,t),i({...t,...d,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return Te(this.ready,this.$slots)},__file:"src/components/LMarker.vue"};const Ve={...De,latLngs:{type:Array,default:()=>[]},smoothFactor:{type:Number,custom:!0,default:1},noClip:{type:Boolean,custom:!0,default:!1}},Je={...Ve};const Xe={...Se,content:{type:String,default:null}};const Qe={...Pe,tms:{type:Boolean,default:!1},subdomains:{type:String,default:"abc"},detectRetina:{type:Boolean,default:!1},url:{type:String,default:null}},to=(t,e)=>{const{options:o,methods:a}=Fe(t,e),n={...o,tms:t.tms,subdomains:t.subdomains,detectRetina:t.detectRetina};return{options:n,methods:{...a}}};var eo={props:Qe,setup(t,e){const l=(0,n.iH)({}),r=(0,a.f3)(ye),s=(0,a.f3)("addLayer"),{options:i,methods:u}=to(t,l);return(0,a.bv)((async()=>{const{tileLayer:n,DomEvent:d}=r?ge.L:await o.e(633).then(o.bind(o,6633));l.value=n(t.url,i);const c=ke(e.attrs);d.on(l.value,c),we(u,l.value,t),s({...t,...u,leafletObject:l.value}),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{leafletObject:l}},render(){return null},__file:"src/components/LTileLayer.vue"};Boolean,Boolean;var oo=(0,a.aZ)({__name:"CustomMarker",props:{markerCoordinates:null,isStart:{type:Boolean}},setup(t){const e=t,{isStart:o,markerCoordinates:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).latitude?((0,a.wg)(),(0,a.j4)((0,n.SU)(Ye),{key:0,"lat-lng":[(0,n.SU)(l).latitude,(0,n.SU)(l).longitude]},{default:(0,a.w5)((()=>[(0,a.Wm)((0,n.SU)(Me),{"icon-url":`/img/workouts/${(0,n.SU)(o)?"start":"finish"}.svg`,iconSize:[15,15]},null,8,["icon-url"])])),_:1},8,["lat-lng"])):(0,a.kq)("",!0)}});const ao=oo;var no=ao,lo=o(5801),ro=o(9917),so=o(2024);const io=t=>((0,a.dD)("data-v-6b490f5d"),t=t(),(0,a.Cn)(),t),uo={id:"workout-map"},co={key:0,class:"leaflet-container"},po={key:1},mo=io((()=>(0,a._)("i",{class:"fa fa-refresh","aria-hidden":"true"},null,-1))),wo={key:1,class:"no-map"};var ko=(0,a.aZ)({__name:"index",props:{workoutData:null,markerCoordinates:{default:()=>({})}},setup(t){const e=t,o=(0,ro.o)(),{workoutData:l,markerCoordinates:r}=(0,n.BK)(e),i=(0,n.iH)(null),u=(0,a.Fl)((()=>g())),d=(0,a.Fl)((()=>o.getters[lo.SY.GETTERS.APP_CONFIG])),c=(0,a.Fl)((()=>_(u))),p=(0,a.Fl)((()=>e.workoutData&&e.workoutData.gpx?f(e.workoutData.gpx):{})),m=(0,a.Fl)((()=>e.workoutData&&e.workoutData.chartData.length>0?{latitude:e.workoutData.chartData[0].latitude,longitude:e.workoutData.chartData[0].longitude}:{})),w=(0,a.Fl)((()=>e.workoutData&&e.workoutData.chartData.length>0?{latitude:e.workoutData.chartData[e.workoutData.chartData.length-1].latitude,longitude:e.workoutData.chartData[e.workoutData.chartData.length-1].longitude}:{})),k=(0,n.iH)(!1);function f(t){if(!t||""!==t)try{const e=ce((new DOMParser).parseFromString(t,"text/xml"));return{jsonData:e}}catch(e){return console.error("Invalid gpx content"),{}}return{}}function _(t){return[(t.value[0][0]+t.value[1][0])/2,(t.value[0][1]+t.value[1][1])/2]}function v(t){i.value?.leafletObject&&i.value?.leafletObject.fitBounds(t)}function g(){return e.workoutData?[[e.workoutData.workout.bounds[0],e.workoutData.workout.bounds[1]],[e.workoutData.workout.bounds[2],e.workoutData.workout.bounds[3]]]:[]}function y(){i.value?.leafletObject.fitBounds(g())}function S(){k.value=!k.value,k.value||setTimeout((()=>{y()}),100)}return(t,e)=>{const o=(0,a.up)("VFullscreen");return(0,a.wg)(),(0,a.iD)("div",uo,[(0,n.SU)(l).loading?((0,a.wg)(),(0,a.iD)("div",co)):((0,a.wg)(),(0,a.iD)("div",po,[(0,n.SU)(l).workout.with_gpx?((0,a.wg)(),(0,a.j4)(o,{key:0,modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=t=>k.value=t)},{default:(0,a.w5)((()=>[(0,a._)("div",{class:(0,s.C_)(["leaflet-container",{"fullscreen-map":k.value}])},[(0,n.SU)(p).jsonData&&(0,n.SU)(c)&&2===(0,n.SU)(u).length?((0,a.wg)(),(0,a.j4)((0,n.SU)(qe),{key:0,zoom:13,maxZoom:19,center:(0,n.SU)(c),bounds:(0,n.SU)(u),ref_key:"workoutMap",ref:i,onReady:e[0]||(e[0]=t=>v((0,n.SU)(u)))},{default:(0,a.w5)((()=>[(0,a.Wm)((0,n.SU)(xe)),(0,a.Wm)((0,n.SU)(Re),{position:"topleft",class:"map-control",onClick:y},{default:(0,a.w5)((()=>[mo])),_:1}),(0,a.Wm)((0,n.SU)(Re),{position:"topleft",class:"map-control",onClick:S},{default:(0,a.w5)((()=>[(0,a._)("i",{class:(0,s.C_)("fa fa-"+(k.value?"compress":"arrows-alt")),"aria-hidden":"true"},null,2)])),_:1}),(0,a.Wm)((0,n.SU)(eo),{url:`${(0,n.SU)(so.k)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,attribution:(0,n.SU)(d).map_attribution,bounds:(0,n.SU)(u)},null,8,["url","attribution","bounds"]),(0,a.Wm)((0,n.SU)(Be),{geojson:(0,n.SU)(p).jsonData},null,8,["geojson"]),(0,n.SU)(r).latitude?((0,a.wg)(),(0,a.j4)((0,n.SU)(Ye),{key:0,"lat-lng":[(0,n.SU)(r).latitude,(0,n.SU)(r).longitude]},null,8,["lat-lng"])):(0,a.kq)("",!0),(0,a.Wm)((0,n.SU)(Ze),{name:t.$t("workouts.START_AND_FINISH"),"layer-type":"overlay"},{default:(0,a.w5)((()=>[(0,n.SU)(m).latitude?((0,a.wg)(),(0,a.j4)(no,{key:0,markerCoordinates:(0,n.SU)(m),isStart:!0},null,8,["markerCoordinates"])):(0,a.kq)("",!0),(0,n.SU)(w).latitude?((0,a.wg)(),(0,a.j4)(no,{key:1,markerCoordinates:(0,n.SU)(w),isStart:!1},null,8,["markerCoordinates"])):(0,a.kq)("",!0)])),_:1},8,["name"])])),_:1},8,["center","bounds"])):(0,a.kq)("",!0)],2)])),_:1},8,["modelValue"])):((0,a.wg)(),(0,a.iD)("div",wo,(0,s.zw)(t.$t("workouts.NO_MAP")),1))]))])}}});const fo=(0,O.Z)(ko,[["__scopeId","data-v-6b490f5d"]]);var _o=fo,vo=o(6558);const go={class:"workout-detail"};var yo=(0,a.aZ)({__name:"index",props:{authUser:null,displaySegment:{type:Boolean},sports:null,workoutData:null,markerCoordinates:{default:()=>({})}},setup(t){const e=t,o=(0,l.yj)(),r=(0,ro.o)(),{authUser:s,markerCoordinates:i,workoutData:u}=(0,n.BK)(e),d=(0,a.Fl)((()=>e.workoutData.workout)),c=(0,n.iH)(o.params.workoutId?+o.params.segmentId:null),p=(0,a.Fl)((()=>d.value.segments.length>0&&c.value?d.value.segments[+c.value-1]:null)),m=(0,n.iH)(!1),w=(0,a.Fl)((()=>e.sports?e.sports.find((t=>t.id===e.workoutData.workout.sport_id)):{})),k=(0,a.Fl)((()=>_(d.value,p.value)));function f(t,e,o){const a=e&&o&&1!==o?`/workouts/${t.id}/segment/${o-1}`:!e&&t.previous_workout?`/workouts/${t.previous_workout}`:null,n=e&&o&&oo.params.segmentId),(async t=>{t&&(c.value=+t)})),(t,e)=>{const o=(0,a.up)("Modal"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",go,[m.value?((0,a.wg)(),(0,a.j4)(o,{key:0,title:t.$t("common.CONFIRMATION"),message:t.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:e[0]||(e[0]=t=>g((0,n.SU)(k).workoutId)),onCancelAction:e[1]||(e[1]=t=>v(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Wm)(A,{sport:(0,n.SU)(w),workoutObject:(0,n.SU)(k),onDisplayModal:e[2]||(e[2]=t=>v(!0))},null,8,["sport","workoutObject"])])),content:(0,a.w5)((()=>[(0,a.Wm)(_o,{workoutData:(0,n.SU)(u),markerCoordinates:(0,n.SU)(i)},null,8,["workoutData","markerCoordinates"]),(0,a.Wm)(Mt,{workoutObject:(0,n.SU)(k),useImperialUnits:(0,n.SU)(s).imperial_units,displayHARecord:(0,n.SU)(s).display_ascent},null,8,["workoutObject","useImperialUnits","displayHARecord"])])),_:1})])}}});const So=(0,O.Z)(yo,[["__scopeId","data-v-40fe2f7b"]]);var Uo=So,ho=o(6518);o(1703);const bo=t=>{const e=document.getElementById(t);if(e){let t=e.querySelector("ul");return t||(t=document.createElement("ul"),e.appendChild(t)),t}throw new Error("No legend container")},To={id:"htmlLegend",afterUpdate(t,e,o){const a=bo(o.containerID);while(a.firstChild)a.firstChild.remove();const n=t.options.plugins?.legend?.labels?.generateLabels?t.options.plugins?.legend?.labels?.generateLabels(t):[];n.forEach((e=>{const o=document.createElement("li");o.onclick=()=>{void 0!==e.datasetIndex&&(t.setDatasetVisibility(e.datasetIndex,!t.isDatasetVisible(e.datasetIndex)),t.update())};const n=document.createElement("input");n&&(n.type="checkbox",n.id=e.text,n.checked=!e.hidden);const l=document.createTextNode(e.text),r=document.createElement("span");r&&(r.style.background=String(e.fillStyle),r.style.borderColor=String(e.strokeStyle)),o.appendChild(n),o.appendChild(l),o.appendChild(r),a.appendChild(o)}))}};var Eo=o(3649),Do=o(3768);const Oo=t=>((0,a.dD)("data-v-dcea1168"),t=t(),(0,a.Cn)(),t),Io={id:"workout-chart"},Ao={class:"chart-radio"},Co=["checked"],Ro=["checked"],$o=Oo((()=>(0,a._)("div",{id:"chart-legend"},null,-1))),No={class:"chart-info"},xo={class:"no-data-cleaning"},zo={class:"elevation-start"},Lo=["checked"];var jo=(0,a.aZ)({__name:"index",props:{authUser:null,workoutData:null},emits:["getCoordinates"],setup(t,{emit:e}){const o=t,{t:l}=(0,j.QT)(),r=(0,n.iH)(!0),i=(0,n.iH)(!0),u=(0,a.Fl)((()=>(0,Do.EX)(o.workoutData.chartData,l,o.authUser.imperial_units))),d=y("km"),c=y("m"),p=(0,a.Fl)((()=>({labels:r.value?u.value.distance_labels:u.value.duration_labels,datasets:JSON.parse(JSON.stringify([u.value.datasets.speed,u.value.datasets.elevation]))}))),m=(0,a.Fl)((()=>u.value.coordinates)),w=(0,a.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:22}},scales:{[r.value?"xDistance":"xDuration"]:{grid:{drawOnChartArea:!1},ticks:{count:10,callback:function(t){return r.value?Number(t).toFixed(2):_(t)}},type:"linear",bounds:"data",title:{display:!0,text:r.value?l("workouts.DISTANCE")+` (${d})`:l("workouts.DURATION")}},ySpeed:{grid:{drawOnChartArea:!1},position:"left",title:{display:!0,text:l("workouts.SPEED")+` (${d}/h)`}},yElevation:{beginAtZero:i.value,grid:{drawOnChartArea:!1},position:"right",title:{display:!0,text:l("workouts.ELEVATION")+` (${c})`}}},elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(t){const e=` ${t.dataset.label}: ${t.formattedValue}`;return"yElevation"===t.dataset.yAxisID?e+` ${c}`:e+` ${d}/h`},title:function(t){return t.length>0&&v(m.value[t[0].dataIndex]),0===t.length?"":r.value?`${l("workouts.DISTANCE")}: ${t[0].label} ${d}`:`${l("workouts.DURATION")}: ${_(t[0].label.replace(",",""))}`}}},legend:{display:!1},htmlLegend:{containerID:"chart-legend"}}}))),{lineChartProps:k}=(0,ho.tn)({chartData:p,options:w,plugins:[To]});function f(){r.value=!r.value}function _(t){return new Date(1e3*+t).toISOString().substr(11,8)}function v(t){e("getCoordinates",t)}function g(){v({latitude:null,longitude:null})}function y(t){return o.authUser.imperial_units?Eo.Dl[t].defaultTarget:t}return(t,e)=>{const o=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Io,[(0,a.Wm)(o,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.ANALYSIS")),1)])),content:(0,a.w5)((()=>[(0,a._)("div",Ao,[(0,a._)("label",null,[(0,a._)("input",{type:"radio",name:"distance",checked:r.value,onClick:f},null,8,Co),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.DISTANCE")),1)]),(0,a._)("label",null,[(0,a._)("input",{type:"radio",name:"duration",checked:!r.value,onClick:f},null,8,Ro),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.DURATION")),1)])]),$o,(0,a.Wm)((0,n.SU)(ho.wW),(0,a.dG)((0,n.SU)(k),{class:"line-chart",onMouseleave:g}),null,16),(0,a._)("div",No,[(0,a._)("div",xo,(0,s.zw)(t.$t("workouts.NO_DATA_CLEANING")),1),(0,a._)("div",zo,[(0,a._)("label",null,[(0,a._)("input",{type:"checkbox",checked:i.value,onClick:e[0]||(e[0]=t=>i.value=!i.value)},null,8,Lo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.START_ELEVATION_AT_ZERO")),1)])])])])),_:1})])}}});const Wo=(0,O.Z)(jo,[["__scopeId","data-v-dcea1168"]]);var Bo=Wo;const Po={id:"workout-note"};var Fo=(0,a.aZ)({__name:"WorkoutNotes",props:{notes:{default:()=>null}},setup(t){const e=t,{notes:o}=(0,n.BK)(e);return(t,e)=>{const l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Po,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.NOTES")),1)])),content:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)((0,n.SU)(o)&&""!==(0,n.SU)(o)?(0,n.SU)(o):t.$t("workouts.NO_NOTES")),1)])),_:1})])}}});const Ho=(0,O.Z)(Fo,[["__scopeId","data-v-028ad527"]]);var Mo=Ho;const Zo={id:"workout-segments"};var qo=(0,a.aZ)({__name:"WorkoutSegments",props:{segments:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{segments:o,useImperialUnits:l}=(0,n.BK)(e);return(t,e)=>{const r=(0,a.up)("router-link"),i=(0,a.up)("Distance"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Zo,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.SEGMENT",2)),1)])),content:(0,a.w5)((()=>[(0,a._)("ul",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(o),((e,o)=>((0,a.wg)(),(0,a.iD)("li",{key:e.segment_id},[(0,a.Wm)(r,{to:{name:"WorkoutSegment",params:{workoutId:e.workout_id,segmentId:o+1}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.SEGMENT",1))+" "+(0,s.zw)(o+1),1)])),_:2},1032,["to"]),(0,a.Uk)(" ("+(0,s.zw)(t.$t("workouts.DISTANCE"))+": ",1),(0,a.Wm)(i,{distance:e.distance,unitFrom:"km",useImperialUnits:(0,n.SU)(l)},null,8,["distance","useImperialUnits"]),(0,a.Uk)(", "+(0,s.zw)(t.$t("workouts.DURATION"))+": "+(0,s.zw)(e.duration)+") ",1)])))),128))])])),_:1})])}}});const Go=(0,O.Z)(qo,[["__scopeId","data-v-6b8a27cd"]]);var Ko=Go;const Yo=t=>((0,a.dD)("data-v-53c4e53a"),t=t(),(0,a.Cn)(),t),Vo={id:"workout",class:"view"},Jo={class:"container"},Xo={key:0,class:"workout-container"},Qo={key:0},ta=Yo((()=>(0,a._)("div",{id:"bottom"},null,-1))),ea={key:1};var oa=(0,a.aZ)({__name:"Workout",props:{displaySegment:{type:Boolean}},setup(t){const e=t,o=(0,l.yj)(),s=(0,ro.o)(),{displaySegment:i}=(0,n.BK)(e),u=(0,a.Fl)((()=>s.getters[lo.aX.GETTERS.WORKOUT_DATA])),d=(0,a.Fl)((()=>s.getters[lo.YN.GETTERS.AUTH_USER_PROFILE])),c=(0,a.Fl)((()=>s.getters[lo.O8.GETTERS.SPORTS])),p=(0,n.iH)({latitude:null,longitude:null});function m(t){p.value={latitude:t.latitude,longitude:t.longitude}}return(0,a.wF)((()=>{const t={workoutId:o.params.workoutId};e.displaySegment&&(t.segmentId=o.params.segmentId),s.dispatch(lo.aX.ACTIONS.GET_WORKOUT_DATA,t)})),(0,a.Ah)((()=>{s.commit(lo.aX.MUTATIONS.EMPTY_WORKOUT)})),(0,a.YP)((()=>o.params.workoutId),(async t=>{t&&s.dispatch(lo.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t})})),(0,a.YP)((()=>o.params.segmentId),(async t=>{if(o.params.workoutId){const e={workoutId:o.params.workoutId};t&&(e.segmentId=t),s.dispatch(lo.aX.ACTIONS.GET_WORKOUT_DATA,e)}})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",Vo,[(0,a._)("div",Jo,[(0,n.SU)(c).length>0?((0,a.wg)(),(0,a.iD)("div",Xo,[(0,n.SU)(u).workout.id?((0,a.wg)(),(0,a.iD)("div",Qo,[(0,a.Wm)(Uo,{workoutData:(0,n.SU)(u),sports:(0,n.SU)(c),authUser:(0,n.SU)(d),markerCoordinates:p.value,displaySegment:(0,n.SU)(i)},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment"]),(0,n.SU)(u).workout.with_gpx&&(0,n.SU)(u).chartData.length>0?((0,a.wg)(),(0,a.j4)(Bo,{key:0,workoutData:(0,n.SU)(u),authUser:(0,n.SU)(d),displaySegment:(0,n.SU)(i),onGetCoordinates:m},null,8,["workoutData","authUser","displaySegment"])):(0,a.kq)("",!0),!(0,n.SU)(i)&&(0,n.SU)(u).workout.segments.length>1?((0,a.wg)(),(0,a.j4)(Ko,{key:1,segments:(0,n.SU)(u).workout.segments,useImperialUnits:(0,n.SU)(d).imperial_units},null,8,["segments","useImperialUnits"])):(0,a.kq)("",!0),(0,n.SU)(i)?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(Mo,{key:2,notes:(0,n.SU)(u).workout.notes},null,8,["notes"])),ta])):((0,a.wg)(),(0,a.iD)("div",ea,[(0,n.SU)(u).loading?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(r.Z,{key:0,target:"WORKOUT"}))]))])):(0,a.kq)("",!0)])]))}});const aa=(0,O.Z)(oa,[["__scopeId","data-v-53c4e53a"]]);var na=aa},7017:function(t,e,o){o.r(e),o.d(e,{default:function(){return Ft}});var a=o(6252),n=o(2262),l=o(3577),r=o(9150),s=(o(7658),o(2201)),i=o(631),u=o(3649);const d=t=>((0,a.dD)("data-v-6c38593a"),t=t(),(0,a.Cn)(),t),c={class:"workouts-filters"},p={class:"box"},m={class:"form"},w={class:"form-items-group"},k={class:"form-item"},f=["value"],_={class:"form-item"},v=["value"],g={class:"form-items-group"},y={class:"form-item"},S=["value"],U=d((()=>(0,a._)("option",{value:""},null,-1))),h=["value"],b={class:"form-items-group"},T={class:"form-item"},E={class:"form-inputs-group"},D=["value"],O=["value"],I={class:"form-items-group"},A={class:"form-item"},C={class:"form-inputs-group"},R=["value"],$=["value"],N={class:"form-items-group"},x={class:"form-item"},z={class:"form-inputs-group"},L=["value"],j=["value"],W={class:"form-items-group"},B={class:"form-item"},P={class:"form-inputs-group"},F=["value"],H=["value"],M={class:"form-button"};var Z=(0,a.aZ)({__name:"WorkoutsFilters",props:{authUser:null,sports:null},emits:["filter"],setup(t,{emit:e}){const o=t,{t:d}=(0,r.QT)(),Z=(0,s.yj)(),q=(0,s.tv)(),{authUser:G}=(0,n.BK)(o),K=G.value.imperial_units?u.Dl.km.defaultTarget:"km",Y=(0,a.Fl)((()=>(0,i.xH)(o.sports,d)));let V=Object.assign({},Z.query);function J(t){""===t.target.value?delete V[t.target.name]:V[t.target.name]=t.target.value}function X(){e("filter"),"page"in V&&(V["page"]="1"),q.push({path:"/workouts",query:V})}function Q(){e("filter"),q.push({path:"/workouts",query:{}})}return(0,a.YP)((()=>Z.query),(t=>{V=Object.assign({},t)})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",p,[(0,a._)("div",m,[(0,a._)("div",w,[(0,a._)("div",k,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.FROM"))+": ",1),(0,a._)("input",{name:"from",type:"date",value:t.$route.query.from,onChange:J},null,40,f)]),(0,a._)("div",_,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.TO"))+": ",1),(0,a._)("input",{name:"to",type:"date",value:t.$route.query.to,onChange:J},null,40,v)])]),(0,a._)("div",g,[(0,a._)("div",y,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.SPORT",1))+":",1),(0,a._)("select",{name:"sport_id",value:t.$route.query.sport_id,onChange:J},[U,((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(Y).filter((t=>(0,n.SU)(G).sports_list.includes(t.id))),(t=>((0,a.wg)(),(0,a.iD)("option",{value:t.id,key:t.id},(0,l.zw)(t.translatedLabel),9,h)))),128))],40,S)])]),(0,a._)("div",b,[(0,a._)("div",T,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.DISTANCE"))+" ("+(0,l.zw)((0,n.SU)(K))+"): ",1),(0,a._)("div",E,[(0,a._)("input",{name:"distance_from",type:"number",min:"0",step:"0.1",value:t.$route.query.distance_from,onChange:J},null,40,D),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{name:"distance_to",type:"number",min:"0",step:"0.1",value:t.$route.query.distance_to,onChange:J},null,40,O)])])]),(0,a._)("div",I,[(0,a._)("div",A,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.DURATION"))+": ",1),(0,a._)("div",C,[(0,a._)("input",{name:"duration_from",value:t.$route.query.duration_from,onChange:J,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,R),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{name:"duration_to",value:t.$route.query.duration_to,onChange:J,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,$)])])]),(0,a._)("div",N,[(0,a._)("div",x,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.AVE_SPEED"))+" ("+(0,l.zw)((0,n.SU)(K))+"/h): ",1),(0,a._)("div",z,[(0,a._)("input",{min:"0",name:"ave_speed_from",value:t.$route.query.ave_speed_from,onChange:J,step:"0.1",type:"number"},null,40,L),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{min:"0",name:"ave_speed_to",value:t.$route.query.ave_speed_to,onChange:J,step:"0.1",type:"number"},null,40,j)])])]),(0,a._)("div",W,[(0,a._)("div",B,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.MAX_SPEED"))+" ("+(0,l.zw)((0,n.SU)(K))+"/h): ",1),(0,a._)("div",P,[(0,a._)("input",{min:"0",name:"max_speed_from",value:t.$route.query.max_speed_from,onChange:J,step:"0.1",type:"number"},null,40,F),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{min:"0",name:"max_speed_to",value:t.$route.query.max_speed_to,onChange:J,step:"0.1",type:"number"},null,40,H)])])])]),(0,a._)("div",M,[(0,a._)("button",{class:"confirm",onClick:X},(0,l.zw)(t.$t("buttons.FILTER")),1),(0,a._)("button",{class:"confirm",onClick:Q},(0,l.zw)(t.$t("buttons.CLEAR_FILTER")),1)])])]))}}),q=o(3744);const G=(0,q.Z)(Z,[["__scopeId","data-v-6c38593a"]]);var K=G,Y=o(4850),V=o(8626),J=o(5020),X=o(2056),Q=o(5630),tt=o(5801),et=o(9917),ot=o(2766),at=o(6558),nt=o(3768);const lt=t=>((0,a.dD)("data-v-7637d6de"),t=t(),(0,a.Cn)(),t),rt={class:"workouts-list"},st={class:"total"},it={class:"total-label"},ut={key:0},dt={key:0,class:"workouts-table responsive-table"},ct=lt((()=>(0,a._)("th",{class:"sport-col"},null,-1))),pt={class:"sport-col"},mt={class:"cell-heading"},wt=["onMouseover"],kt={class:"cell-heading"},ft={key:0,class:"fa fa-map-o","aria-hidden":"true"},_t={class:"title"},vt={class:"workout-date"},gt={class:"cell-heading"},yt={class:"text-right"},St={class:"cell-heading"},Ut={class:"text-right"},ht={class:"cell-heading"},bt={class:"text-right"},Tt={class:"cell-heading"},Et={class:"text-right"},Dt={class:"cell-heading"},Ot={class:"text-right"},It={class:"cell-heading"},At={class:"text-right"},Ct={class:"cell-heading"},Rt=lt((()=>(0,a._)("div",{id:"bottom"},null,-1)));var $t=(0,a.aZ)({__name:"WorkoutsList",props:{user:null,sports:null},setup(t){const e=t,o=(0,et.o)(),r=(0,s.yj)(),d=(0,s.tv)(),{user:c,sports:p}=(0,n.BK)(e),m=["ave_speed","distance","duration","workout_date"],w=(0,a.Fl)((()=>o.getters[tt.aX.GETTERS.USER_WORKOUTS])),k=(0,a.Fl)((()=>o.getters[tt.aX.GETTERS.WORKOUTS_PAGINATION])),f=(0,a.Fl)((()=>o.getters[tt.SY.GETTERS.LANGUAGE]));let _=S(r.query);const v=(0,n.iH)(null);function g(t){o.dispatch(tt.aX.ACTIONS.GET_USER_WORKOUTS,c.value.imperial_units?U(t):t)}function y(t,e){const o=Object.assign({},r.query);o[t]=e,"per_page"===t&&(o["page"]="1"),_=S(o),d.push({path:"/workouts",query:_})}function S(t){const e=(0,ot.pm)(t,m,nt.eR.order_by,{defaultSort:nt.eR.order});return Object.keys(t).filter((t=>ot.Ne.includes(t))).map((o=>{"string"===typeof t[o]&&(e[o]=t[o])})),e}function U(t){const e={...t};return Object.entries(e).map((t=>{t[0].match("speed|distance")&&t[1]&&(e[t[0]]=(0,u.sC)(+t[1],"mi","km"))})),e}function h(t){v.value=t}return(0,a.wF)((()=>{g(_)})),(0,a.YP)((()=>r.query),(async t=>{_=S(t),g(_)})),(t,e)=>{const o=(0,a.up)("SportImage"),r=(0,a.up)("router-link"),s=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",rt,[(0,a._)("div",{class:(0,l.C_)(["box",{"empty-table":0===(0,n.SU)(w).length}])},[(0,a._)("div",st,[(0,a._)("span",it,(0,l.zw)(t.$t("common.TOTAL").toLowerCase())+": ",1),null!==(0,n.SU)(k).total?((0,a.wg)(),(0,a.iD)("span",ut,(0,l.zw)((0,n.SU)(k).total)+" "+(0,l.zw)(t.$t("workouts.WORKOUT",(0,n.SU)(k).total)),1)):(0,a.kq)("",!0)]),(0,a.Wm)(V.Z,{sort:(0,n.SU)(ot.fS),order_by:m,query:(0,n.SU)(_),message:"workouts",onUpdateSelect:y},null,8,["sort","query"]),(0,n.SU)(w).length>0?((0,a.wg)(),(0,a.iD)("div",dt,[(0,a.Wm)(J.Z,{class:"top-pagination",pagination:(0,n.SU)(k),path:"/workouts",query:(0,n.SU)(_)},null,8,["pagination","query"]),(0,a._)("table",null,[(0,a._)("thead",{class:(0,l.C_)({smaller:"de"===(0,n.SU)(f)})},[(0,a._)("tr",null,[ct,(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.WORKOUT",1))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DATE"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DISTANCE"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DURATION"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.AVE_SPEED"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.MAX_SPEED"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.ASCENT"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DESCENT"))),1)])],2),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(w),(u=>((0,a.wg)(),(0,a.iD)("tr",{key:u.id},[(0,a._)("td",pt,[(0,a._)("span",mt,(0,l.zw)(t.$t("workouts.SPORT",1)),1),(0,n.SU)(p).length>0?((0,a.wg)(),(0,a.j4)(o,{key:0,title:(0,n.SU)(p).find((t=>t.id===u.sport_id)).translatedLabel,"sport-label":(0,n.SU)(i.PA)(u,(0,n.SU)(p)),color:(0,n.SU)(i.CM)(u,(0,n.SU)(p))},null,8,["title","sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("td",{class:"workout-title",onMouseover:t=>h(u.id),onMouseleave:e[0]||(e[0]=t=>h(null))},[(0,a._)("span",kt,(0,l.zw)((0,l.kC)(t.$t("workouts.WORKOUT",1))),1),(0,a.Wm)(r,{class:"nav-item",to:{name:"Workout",params:{workoutId:u.id}}},{default:(0,a.w5)((()=>[u.with_gpx?((0,a.wg)(),(0,a.iD)("i",ft)):(0,a.kq)("",!0),(0,a._)("span",_t,(0,l.zw)(u.title),1)])),_:2},1032,["to"]),u.with_gpx&&v.value===u.id?((0,a.wg)(),(0,a.j4)(X.Z,{key:0,workout:u,"display-hover":!0},null,8,["workout"])):(0,a.kq)("",!0)],40,wt),(0,a._)("td",vt,[(0,a._)("span",gt,(0,l.zw)(t.$t("workouts.DATE")),1),(0,a.Uk)(" "+(0,l.zw)((0,n.SU)(Y.Z)((0,n.SU)(at.eB)(u.workout_date,(0,n.SU)(c).timezone),"dd/MM/yyyy HH:mm")),1)]),(0,a._)("td",yt,[(0,a._)("span",St,(0,l.zw)(t.$t("workouts.DISTANCE")),1),(0,a.Wm)(s,{distance:u.distance,unitFrom:"km",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Ut,[(0,a._)("span",ht,(0,l.zw)(t.$t("workouts.DURATION")),1),(0,a.Uk)(" "+(0,l.zw)(u.moving),1)]),(0,a._)("td",bt,[(0,a._)("span",Tt,(0,l.zw)(t.$t("workouts.AVE_SPEED")),1),(0,a.Wm)(s,{distance:u.ave_speed,unitFrom:"km",speed:!0,useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Et,[(0,a._)("span",Dt,(0,l.zw)(t.$t("workouts.MAX_SPEED")),1),(0,a.Wm)(s,{distance:u.max_speed,unitFrom:"km",speed:!0,useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Ot,[(0,a._)("span",It,(0,l.zw)(t.$t("workouts.ASCENT")),1),u.with_gpx?((0,a.wg)(),(0,a.j4)(s,{key:0,distance:u.ascent,unitFrom:"m",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,a._)("td",At,[(0,a._)("span",Ct,(0,l.zw)(t.$t("workouts.DESCENT")),1),u.with_gpx?((0,a.wg)(),(0,a.j4)(s,{key:0,distance:u.descent,unitFrom:"m",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])))),128))])]),(0,a.Wm)(J.Z,{pagination:(0,n.SU)(k),path:"/workouts",query:(0,n.SU)(_)},null,8,["pagination","query"])])):(0,a.kq)("",!0)],2),0===(0,n.SU)(w).length?((0,a.wg)(),(0,a.j4)(Q.Z,{key:0})):(0,a.kq)("",!0),Rt])}}});const Nt=(0,q.Z)($t,[["__scopeId","data-v-7637d6de"]]);var xt=Nt;const zt={key:0,id:"workouts",class:"view"},Lt={class:"container workouts-container"},jt={class:"display-filters"},Wt={class:"list-container"};var Bt=(0,a.aZ)({__name:"WorkoutsView",setup(t){const{t:e}=(0,r.QT)(),o=(0,et.o)(),s=(0,a.Fl)((()=>o.getters[tt.YN.GETTERS.AUTH_USER_PROFILE])),u=(0,a.Fl)((()=>o.getters[tt.O8.GETTERS.SPORTS])),d=(0,a.Fl)((()=>(0,i.xH)(u.value,e))),c=(0,n.iH)(!0);function p(){c.value=!c.value}return(t,e)=>(0,n.SU)(s).username?((0,a.wg)(),(0,a.iD)("div",zt,[(0,a._)("div",Lt,[(0,a._)("div",{class:(0,l.C_)(["filters-container",{hidden:c.value}])},[(0,a.Wm)(K,{sports:(0,n.SU)(d),authUser:(0,n.SU)(s),onFilter:p},null,8,["sports","authUser"])],2),(0,a._)("div",jt,[(0,a._)("div",{onClick:p},[(0,a._)("i",{class:(0,l.C_)("fa fa-caret-"+(c.value?"down":"up")),"aria-hidden":"true"},null,2),(0,a._)("span",null,(0,l.zw)(t.$t(`workouts.${c.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),(0,a._)("div",Wt,[(0,a.Wm)(xt,{user:(0,n.SU)(s),sports:(0,n.SU)(d)},null,8,["user","sports"])])])])):(0,a.kq)("",!0)}});const Pt=(0,q.Z)(Bt,[["__scopeId","data-v-77e54012"]]);var Ft=Pt}}]); -//# sourceMappingURL=workouts.39602236.js.map \ No newline at end of file +//# sourceMappingURL=workouts.520d24bf.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.39602236.js.map b/fittrackee/dist/static/js/workouts.520d24bf.js.map similarity index 99% rename from fittrackee/dist/static/js/workouts.39602236.js.map rename to fittrackee/dist/static/js/workouts.520d24bf.js.map index 15ab0503..460c87e8 100644 --- a/fittrackee/dist/static/js/workouts.39602236.js.map +++ b/fittrackee/dist/static/js/workouts.520d24bf.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/workouts.39602236.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.esm.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-886f93f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_30 = [\"disabled\"]\nconst _hoisted_31 = { class: \"form-item\" }\nconst _hoisted_32 = [\"disabled\"]\nconst _hoisted_33 = { class: \"form-item\" }\nconst _hoisted_34 = { key: 1 }\nconst _hoisted_35 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_36 = [\"disabled\"]\nconst _hoisted_37 = [\"onClick\"]\n\nimport {\n ComputedRef,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout }\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n })\n const withGpx = ref(\n props.workout.id ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n\n onMounted(() => {\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 2)\n : parseFloat(workout.distance.toFixed(2))\n }`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n }\n }\n function formatPayload(payload: IWorkoutForm) {\n payload.title = workoutForm.title\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX, payload)\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \": \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \": \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \":\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: \"workout-duration\",\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 40, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _hoisted_27,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 40, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _hoisted_29,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 40, _hoisted_30), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 40, _hoisted_32), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_33, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_35, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_36),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_37)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=886f93f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-886f93f6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { ComputedRef, computed } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4d9f9a8a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" — \")\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_12 = { class: \"workout-date\" }\nconst _hoisted_13 = { class: \"workout-link\" }\nconst _hoisted_14 = [\"title\"]\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_unref(workoutObject).previousUrl }]),\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n ))\n }),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"]))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _hoisted_11,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_13, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workoutObject).workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_unref(workoutObject).nextUrl }]),\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_16, 10, _hoisted_14)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=4d9f9a8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4d9f9a8a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a5282f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n }\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-46a7c31c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n }\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Distance, {\n distance: _unref(weather).wind,\n unitFrom: \"m\",\n digits: 1,\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(useImperialUnits) ? 'ft' : 'm') + \"/s \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=46a7c31c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-46a7c31c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76e9ab62\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(workoutObject).weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.temperature).toFixed(1)) + \"°C \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.temperature).toFixed(1)) + \"°C \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=76e9ab62&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-76e9ab62\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74c5993b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"label\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_6 = { class: \"value\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = { class: \"value\" }\nconst _hoisted_10 = { class: \"workout-data\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_12 = { class: \"label\" }\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_14 = { class: \"workout-data\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_21 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_22 = [\"alt\"]\nconst _hoisted_23 = { class: \"label\" }\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_28 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_30 = { class: \"label\" }\nconst _hoisted_31 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_32 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_33 = { class: \"label\" }\nconst _hoisted_34 = /*#__PURE__*/_createTextVNode(\": \")\n\nimport { computed, toRefs } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _hoisted_13,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _hoisted_17,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_18,\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _hoisted_20,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_22),\n _createElementVNode(\"span\", _hoisted_23, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _hoisted_24,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _hoisted_27,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [\n _hoisted_29,\n _createElementVNode(\"span\", _hoisted_30, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _hoisted_31,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_32,\n _createElementVNode(\"span\", _hoisted_33, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _hoisted_34,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=74c5993b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74c5993b\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), get(iconStyle, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n }));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nconst GEO_TYPES = [\n \"Polygon\",\n \"LineString\",\n \"Point\",\n \"Track\",\n \"gx:Track\",\n];\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n const geometries = [];\n const coordTimes = [];\n for (const t of [\"MultiGeometry\", \"MultiTrack\", \"gx:MultiTrack\"]) {\n const elem = get1(node, t);\n if (elem) {\n return getGeometry(elem);\n }\n }\n for (const geoType of GEO_TYPES) {\n for (const geomNode of $(node, geoType)) {\n switch (geoType) {\n case \"Point\": {\n const coordinates = coord1(getCoordinates(geomNode));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LineString\": {\n const coordinates = coord(getCoordinates(geomNode));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(geomNode, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(geomNode);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction extractExtendedData(node) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n properties[simpleData.getAttribute(\"name\") || \"\"] = nodeVal(simpleData);\n }\n return properties;\n });\n}\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction getPlacemark(node, styleMap) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch, ref, provide, h, inject, onUnmounted, onBeforeUnmount, onMounted, nextTick, render as render$3, reactive, computed } from 'vue';\n\nconst debounce = (fn, time) => {\n let timeout;\n\n return function (...args) {\n const context = this;\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n fn.apply(context, args);\n timeout = null;\n }, time);\n };\n};\n\nconst capitalizeFirstLetter = (string) => {\n if (!string || typeof string.charAt !== \"function\") {\n return string;\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\nconst propsBinder = (methods, leafletElement, props) => {\n for (const key in props) {\n const setMethodName = \"set\" + capitalizeFirstLetter(key);\n if (methods[setMethodName]) {\n watch(\n () => props[key],\n (newVal, oldVal) => {\n methods[setMethodName](newVal, oldVal);\n }\n );\n } else if (leafletElement[setMethodName]) {\n watch(\n () => props[key],\n (newVal) => {\n leafletElement[setMethodName](newVal);\n }\n );\n }\n }\n};\n\nconst remapEvents = (contextAttrs) => {\n const result = {};\n for (const attrName in contextAttrs) {\n if (\n attrName.startsWith(\"on\") &&\n !attrName.startsWith(\"onUpdate\") &&\n attrName !== \"onReady\"\n ) {\n const eventName = attrName.slice(2).toLocaleLowerCase();\n result[eventName] = contextAttrs[attrName];\n }\n }\n return result;\n};\n\nconst resetWebpackIcon = async (Icon) => {\n const modules = await Promise.all([\n import('leaflet/dist/images/marker-icon-2x.png'),\n import('leaflet/dist/images/marker-icon.png'),\n import('leaflet/dist/images/marker-shadow.png'),\n ]);\n\n delete Icon.Default.prototype._getIconUrl;\n\n Icon.Default.mergeOptions({\n iconRetinaUrl: modules[0].default,\n iconUrl: modules[1].default,\n shadowUrl: modules[2].default,\n });\n};\n\n/**\n * Wraps a placeholder function and provides it with the given name.\n * The wrapper can later be updated with {@link updateLeafletWrapper}\n * to provide a different function.\n *\n * @param {String} methodName Key used to provide the wrapper function\n */\nconst provideLeafletWrapper = (methodName) => {\n const wrapped = ref(() =>\n console.warn(`Method ${methodName} has been invoked without being replaced`)\n );\n const wrapper = (...args) => wrapped.value(...args);\n // eslint-disable-next-line vue/no-ref-as-operand\n wrapper.wrapped = wrapped;\n provide(methodName, wrapper);\n\n return wrapper;\n};\n\n/**\n * Change the function that will be executed when an injected Leaflet wrapper\n * is invoked.\n *\n * @param {*} wrapper Provided wrapper whose wrapped function is to be updated\n * @param {function} leafletMethod New method to be wrapped by the wrapper\n */\nconst updateLeafletWrapper = (wrapper, leafletMethod) =>\n (wrapper.wrapped.value = leafletMethod);\n\nconst WINDOW_OR_GLOBAL =\n (typeof self === \"object\" && self.self === self && self) ||\n (typeof global === \"object\" && global.global === global && global) ||\n undefined;\n\nconst GLOBAL_LEAFLET_OPT = \"useGlobalLeaflet\";\n\nconst props = {\n options: {\n type: Object,\n default: () => ({}),\n },\n};\n\nconst setup = (props) => {\n return { options: props.options, methods: {} };\n};\n\nconst props$1 = {\n ...props,\n pane: {\n type: String,\n default: \"overlayPane\",\n },\n attribution: {\n type: String,\n default: null,\n },\n name: {\n type: String,\n custom: true,\n default: undefined,\n },\n layerType: {\n type: String,\n custom: true,\n default: undefined,\n },\n visible: {\n type: Boolean,\n custom: true,\n default: true,\n },\n};\n\nconst setup$1 = (props, leafletRef, context) => {\n const addLayer = inject(\"addLayer\");\n const removeLayer = inject(\"removeLayer\");\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n\n const options = {\n ...componentOptions,\n attribution: props.attribution,\n pane: props.pane,\n };\n\n const addThisLayer = () => addLayer({ leafletObject: leafletRef.value });\n const removeThisLayer = () =>\n removeLayer({ leafletObject: leafletRef.value });\n\n const methods = {\n ...componentMethods,\n setAttribution(val, old) {\n const attributionControl = this.$parent.leafletObject.attributionControl;\n attributionControl.removeAttribution(old).addAttribution(val);\n },\n setName() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setLayerType() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setVisible(isVisible) {\n if (leafletRef.value) {\n if (isVisible) {\n addThisLayer();\n } else {\n removeThisLayer();\n }\n }\n },\n bindPopup({ leafletObject }) {\n leafletRef.value.bindPopup(leafletObject);\n },\n bindTooltip({ leafletObject }) {\n leafletRef.value.bindTooltip(leafletObject);\n },\n unbindTooltip() {\n const tooltip = leafletRef.value ? leafletRef.value.getTooltip() : null;\n if (tooltip) {\n tooltip.unbindTooltip();\n }\n },\n unbindPopup() {\n const popup = leafletRef.value ? leafletRef.value.getPopup() : null;\n if (popup) {\n popup.unbindPopup();\n }\n },\n updateVisibleProp(value) {\n /**\n * Triggers when the visible prop needs to be updated\n * @type {boolean}\n * @property {boolean} value - value of the visible property\n */\n context.emit(\"update:visible\", value);\n },\n };\n\n provide(\"bindPopup\", methods.bindPopup);\n provide(\"bindTooltip\", methods.bindTooltip);\n provide(\"unbindTooltip\", methods.unbindTooltip);\n provide(\"unbindPopup\", methods.unbindPopup);\n\n onUnmounted(() => {\n methods.unbindPopup();\n methods.unbindTooltip();\n removeThisLayer();\n });\n\n return { options, methods };\n};\n\nconst render = (ready, slots) => {\n if (ready && slots.default) {\n return h(\"div\", { style: { display: \"none\" } }, slots.default());\n }\n};\n\nconst props$2 = {\n ...props,\n interactive: {\n type: Boolean,\n default: true,\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: true,\n },\n};\n\nconst setup$2 = (props) => {\n const { options: componentOptions, methods } = setup(props);\n const options = {\n ...componentOptions,\n interactive: props.interactive,\n bubblingMouseEvents: props.bubblingMouseEvents,\n };\n\n return { options, methods };\n};\n\nconst props$3 = {\n ...props$1,\n ...props$2,\n stroke: {\n type: Boolean,\n custom: true,\n default: true,\n },\n color: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n weight: {\n type: Number,\n custom: true,\n default: 3,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n lineCap: {\n type: String,\n custom: true,\n default: \"round\",\n },\n lineJoin: {\n type: String,\n custom: true,\n default: \"round\",\n },\n dashArray: {\n type: String,\n custom: true,\n default: null,\n },\n dashOffset: {\n type: String,\n custom: true,\n default: null,\n },\n fill: {\n type: Boolean,\n custom: true,\n default: false,\n },\n fillColor: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n fillOpacity: {\n type: Number,\n custom: true,\n default: 0.2,\n },\n fillRule: {\n type: String,\n custom: true,\n default: \"evenodd\",\n },\n className: {\n type: String,\n custom: true,\n default: null,\n },\n};\n\nconst setup$3 = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const {\n options: interactiveLayerOptions,\n methods: interactiveLayerMethods,\n } = setup$2(props);\n\n const removeLayer = inject(\"removeLayer\");\n\n const options = {\n ...layerOptions,\n ...interactiveLayerOptions,\n stroke: props.stroke,\n color: props.color,\n weight: props.weight,\n opacity: props.opacity,\n lineCap: props.lineCap,\n lineJoin: props.lineJoin,\n dashArray: props.dashArray,\n dashOffset: props.dashOffset,\n fill: props.fill,\n fillColor: props.fillColor,\n fillOpacity: props.fillOpacity,\n fillRule: props.fillRule,\n className: props.className,\n };\n const methods = {\n ...layerMethods,\n ...interactiveLayerMethods,\n setStroke(stroke) {\n leafletRef.value.setStyle({ stroke });\n },\n setColor(color) {\n leafletRef.value.setStyle({ color });\n },\n setWeight(weight) {\n leafletRef.value.setStyle({ weight });\n },\n setOpacity(opacity) {\n leafletRef.value.setStyle({ opacity });\n },\n setLineCap(lineCap) {\n leafletRef.value.setStyle({ lineCap });\n },\n setLineJoin(lineJoin) {\n leafletRef.value.setStyle({ lineJoin });\n },\n setDashArray(dashArray) {\n leafletRef.value.setStyle({ dashArray });\n },\n setDashOffset(dashOffset) {\n leafletRef.value.setStyle({ dashOffset });\n },\n setFill(fill) {\n leafletRef.value.setStyle({ fill });\n },\n setFillColor(fillColor) {\n leafletRef.value.setStyle({ fillColor });\n },\n setFillOpacity(fillOpacity) {\n leafletRef.value.setStyle({ fillOpacity });\n },\n setFillRule(fillRule) {\n leafletRef.value.setStyle({ fillRule });\n },\n setClassName(className) {\n leafletRef.value.setStyle({ className });\n },\n };\n\n onBeforeUnmount(() => {\n removeLayer({ leafletObject: leafletRef.value });\n });\n\n return { options, methods };\n};\n\nconst props$4 = {\n ...props$3,\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$4 = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n const methods = {\n ...pathMethods,\n setRadius(radius) {\n leafletRef.value.setRadius(radius);\n },\n setLatLng(latLng) {\n leafletRef.value.setLatLng(latLng);\n },\n };\n\n return { options, methods };\n};\n\nconst props$5 = {\n ...props$4,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$5 = (props, leafletRef, context) => {\n const {\n options: circleMarkerOptions,\n methods: circleMarkerMethods,\n } = setup$4(props, leafletRef, context);\n\n const options = {\n ...circleMarkerOptions,\n ...props,\n };\n\n const methods = {\n ...circleMarkerMethods,\n };\n\n return { options, methods };\n};\n\n/**\n * Circle component, lets you add and personalize circles on the map\n */\nvar script = {\n name: \"LCircle\",\n props: props$5,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$5(props, leafletRef, context);\n\n onMounted(async () => {\n const { circle, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circle(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript.__file = \"src/components/LCircle.vue\";\n\n/**\n * Circle Marker component, lets you add and personalize circle markers on the map\n */\nvar script$1 = {\n name: \"LCircleMarker\",\n props: props$4,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$4(props, leafletRef, context);\n\n onMounted(async () => {\n const { circleMarker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circleMarker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$1.__file = \"src/components/LCircleMarker.vue\";\n\nconst props$6 = {\n ...props,\n position: {\n type: String,\n default: \"topright\",\n },\n};\n\nconst setup$6 = (props, leafletRef) => {\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n const options = {\n ...componentOptions,\n position: props.position,\n };\n\n const methods = {\n ...componentMethods,\n setPosition(position) {\n if (leafletRef.value) {\n leafletRef.value.setPosition(position);\n }\n },\n };\n\n onUnmounted(() => {\n if (leafletRef.value) {\n leafletRef.value.remove();\n }\n });\n\n return { options, methods };\n};\n\nconst render$1 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nvar script$2 = {\n name: \"LControl\",\n props: {\n ...props$6,\n disableClickPropagation: {\n type: Boolean,\n custom: true,\n default: true,\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: true,\n default: false,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$6(props, leafletRef);\n\n onMounted(async () => {\n const { Control, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const LControl = Control.extend({\n onAdd() {\n return root.value;\n },\n });\n\n leafletRef.value = new LControl(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n\n if (props.disableClickPropagation) {\n DomEvent.disableClickPropagation(root.value);\n }\n if (props.disableScrollPropagation) {\n DomEvent.disableScrollPropagation(root.value);\n }\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$1(this.$slots);\n },\n};\n\nscript$2.__file = \"src/components/LControl.vue\";\n\nconst props$7 = {\n ...props$6,\n prefix: {\n type: String,\n default: \"Vue-Leaflet\",\n custom: true,\n },\n};\n\nconst setup$7 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n prefix: props.prefix,\n };\n\n const methods = {\n ...controlMethods,\n setPrefix(prefix) {\n leafletRef.value.setPrefix(prefix);\n },\n };\n\n return { options, methods };\n};\n\nvar script$3 = {\n name: \"LControlAttribution\",\n props: props$7,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$7(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.attribution(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$3.__file = \"src/components/LControlAttribution.vue\";\n\nconst props$8 = {\n ...props$6,\n collapsed: {\n type: Boolean,\n default: true,\n },\n autoZIndex: {\n type: Boolean,\n default: true,\n },\n hideSingleBase: {\n type: Boolean,\n default: false,\n },\n sortLayers: {\n type: Boolean,\n default: false,\n },\n sortFunction: {\n type: Function,\n default: undefined,\n },\n};\n\nconst setup$8 = (props, leafletRef) => {\n const { options: controlOptions } = setup$6(props, leafletRef);\n const options = {\n ...controlOptions,\n collapsed: props.collapsed,\n autoZIndex: props.autoZIndex,\n hideSingleBase: props.hideSingleBase,\n sortLayers: props.sortLayers,\n sortFunction: props.sortFunction,\n };\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType === \"base\") {\n leafletRef.value.addBaseLayer(layer.leafletObject, layer.name);\n } else if (layer.layerType === \"overlay\") {\n leafletRef.value.addOverlay(layer.leafletObject, layer.name);\n }\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n return { options, methods };\n};\n\nvar script$4 = {\n name: \"LControlLayers\",\n props: props$8,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerLayerControl = inject(\"registerLayerControl\");\n\n const { options, methods } = setup$8(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.layers(null, null, options);\n\n propsBinder(methods, leafletRef.value, props);\n\n registerLayerControl({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$4.__file = \"src/components/LControlLayers.vue\";\n\nconst props$9 = {\n ...props$6,\n maxWidth: {\n type: Number,\n default: 100,\n },\n metric: {\n type: Boolean,\n default: true,\n },\n imperial: {\n type: Boolean,\n default: true,\n },\n updateWhenIdle: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$9 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n maxWidth: props.maxWidth,\n metric: props.metric,\n imperial: props.imperial,\n updateWhenIdle: props.updateWhenIdle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$5 = {\n name: \"LControlScale\",\n props: props$9,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$9(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.scale(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$5.__file = \"src/components/LControlScale.vue\";\n\nconst props$a = {\n ...props$6,\n zoomInText: {\n type: String,\n default: \"+\",\n },\n zoomInTitle: {\n type: String,\n default: \"Zoom in\",\n },\n zoomOutText: {\n type: String,\n default: \"-\",\n },\n zoomOutTitle: {\n type: String,\n default: \"Zoom out\",\n },\n};\n\nconst setup$a = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n zoomInText: props.zoomInText,\n zoomInTitle: props.zoomInTitle,\n zoomOutText: props.zoomOutText,\n zoomOutTitle: props.zoomOutTitle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$6 = {\n name: \"LControlZoom\",\n props: props$a,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$a(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.zoom(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$6.__file = \"src/components/LControlZoom.vue\";\n\nconst props$b = {\n ...props$1,\n};\n\nconst setup$b = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n\n const options = {\n ...layerOptions,\n };\n\n const methods = {\n ...layerMethods,\n addLayer(layer) {\n leafletRef.value.addLayer(layer.leafletObject);\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n\n provide(\"addLayer\", methods.addLayer);\n provide(\"removeLayer\", methods.removeLayer);\n\n return { options, methods };\n};\n\nconst props$c = {\n ...props$b,\n};\n\nconst setup$c = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n };\n\n return { options, methods };\n};\n\nvar script$7 = {\n props: props$c,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$c(props, leafletRef);\n\n onMounted(async () => {\n const { featureGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = featureGroup(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$7.__file = \"src/components/LFeatureGroup.vue\";\n\nconst props$d = {\n ...props$b,\n geojson: {\n type: [Object, Array],\n default: () => ({}),\n },\n};\n\nconst setup$d = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n setGeojson(newVal) {\n leafletRef.value.clearLayers();\n leafletRef.value.addData(newVal);\n },\n getGeoJSONData() {\n return leafletRef.value.toGeoJSON();\n },\n getBounds() {\n return leafletRef.value.getBounds();\n },\n };\n\n return { options, methods };\n};\n\nvar script$8 = {\n props: props$d,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$d(props, leafletRef);\n\n onMounted(async () => {\n const { geoJSON, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = geoJSON(props.geojson, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$8.__file = \"src/components/LGeoJson.vue\";\n\nconst props$e = {\n ...props$1,\n pane: {\n type: String,\n default: \"tilePane\",\n },\n opacity: {\n type: Number,\n custom: false,\n default: 1.0,\n },\n zIndex: {\n type: Number,\n default: 1,\n },\n tileSize: {\n type: Number,\n default: 256,\n },\n noWrap: {\n type: Boolean,\n default: false,\n },\n minZoom: {\n type: Number,\n default: 0,\n },\n maxZoom: {\n type: Number,\n default: undefined,\n },\n};\n\nconst setup$e = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n pane: props.pane,\n opacity: props.opacity,\n zIndex: props.zIndex,\n tileSize: props.tileSize,\n noWrap: props.noWrap,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n };\n return { options, methods: { ...layerMethods } };\n};\n\nvar script$9 = {\n props: {\n ...props$e,\n childRender: {\n type: Function,\n required: true,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const tileComponents = ref({});\n const root = ref(null);\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$e(props, leafletRef, context);\n\n onMounted(async () => {\n const { GridLayer, DomEvent, DomUtil } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n methods.onUnload = (e) => {\n const key = leafletRef.value._tileCoordsToKey(e.coords);\n if (tileComponents[key]) {\n tileComponents[key].innerHTML = \"\";\n tileComponents[key] = undefined;\n }\n };\n\n methods.setTileComponent = () => {\n leafletRef.value.redraw();\n };\n\n const GLayer = GridLayer.extend({\n createTile(coords) {\n const key = leafletRef.value._tileCoordsToKey(coords);\n tileComponents[key] = DomUtil.create(\"div\");\n\n let vNode = h(\n { setup: props.childRender, props: [\"coords\"] },\n { coords }\n );\n render$3(vNode, tileComponents[key]);\n\n return tileComponents[key];\n },\n });\n\n leafletRef.value = new GLayer(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"tileunload\", methods.onUnload);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n onUnmounted(() => {\n leafletRef.value.off(\"tileunload\", methods.unLoad);\n });\n\n return { root, ready, leafletObject: leafletRef };\n },\n render() {\n if (this.ready) {\n return h(\"div\", { style: { display: \"none\" }, ref: \"root\" });\n }\n return null;\n },\n};\n\nscript$9.__file = \"src/components/LGridLayer.vue\";\n\nconst props$f = {\n iconUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n iconAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n popupAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n tooltipAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n shadowUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n shadowAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n bgPos: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n className: {\n type: String,\n custom: true,\n default: \"\",\n },\n options: {\n type: Object,\n custom: true,\n default: () => ({}),\n },\n};\n\n/**\n * Icon component, lets you add and custom icons to the map\n */\nvar script$a = {\n name: \"LIcon\",\n props: {\n ...props$f,\n ...props,\n },\n setup(props, context) {\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const canSetParentHtml = inject(\"canSetParentHtml\");\n const setParentHtml = inject(\"setParentHtml\");\n const setIcon = inject(\"setIcon\");\n\n let onDomEvent;\n let offDomEvent;\n let divIcon;\n let icon;\n let iconObject = undefined;\n\n const createIcon = (el, recreationNeeded, htmlSwapNeeded) => {\n const elHtml = el && el.innerHTML;\n if (!recreationNeeded) {\n if (htmlSwapNeeded && iconObject && canSetParentHtml()) {\n setParentHtml(elHtml);\n }\n return;\n }\n\n const listeners = remapEvents(context.attrs);\n if (iconObject) {\n offDomEvent(iconObject, listeners);\n }\n\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n iconUrl: props.iconUrl,\n iconRetinaUrl: props.iconRetinaUrl,\n iconSize: props.iconSize,\n iconAnchor: props.iconAnchor,\n popupAnchor: props.popupAnchor,\n tooltipAnchor: props.tooltipAnchor,\n shadowUrl: props.shadowUrl,\n shadowRetinaUrl: props.shadowRetinaUrl,\n shadowSize: props.shadowSize,\n shadowAnchor: props.shadowAnchor,\n bgPos: props.bgPos,\n className: props.className,\n html: elHtml || props.html,\n };\n\n iconObject = options.html ? divIcon(options) : icon(options);\n onDomEvent(iconObject, listeners);\n setIcon(iconObject);\n };\n\n const scheduleCreateIcon = () => {\n nextTick(() => createIcon(root.value, true, false));\n };\n\n const scheduleHtmlSwap = () => {\n nextTick(() => createIcon(root.value, false, true));\n };\n\n const methods = {\n setIconUrl: scheduleCreateIcon,\n setIconRetinaUrl: scheduleCreateIcon,\n setIconSize: scheduleCreateIcon,\n setIconAnchor: scheduleCreateIcon,\n setPopupAnchor: scheduleCreateIcon,\n setTooltipAnchor: scheduleCreateIcon,\n setShadowUrl: scheduleCreateIcon,\n setShadowRetinaUrl: scheduleCreateIcon,\n setShadowAnchor: scheduleCreateIcon,\n setBgPos: scheduleCreateIcon,\n setClassName: scheduleCreateIcon,\n setHtml: scheduleCreateIcon,\n };\n\n onMounted(async () => {\n const { DomEvent, divIcon: lDivIcon, icon: lIcon } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n onDomEvent = DomEvent.on;\n offDomEvent = DomEvent.off;\n divIcon = lDivIcon;\n icon = lIcon;\n\n propsBinder(methods, {}, props);\n\n const observer = new MutationObserver(scheduleHtmlSwap);\n observer.observe(root.value, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n scheduleCreateIcon();\n });\n\n return { root };\n },\n render() {\n const content = this.$slots.default ? this.$slots.default() : undefined;\n return h(\"div\", { ref: \"root\" }, content);\n },\n};\n\nscript$a.__file = \"src/components/LIcon.vue\";\n\n/**\n * @typedef {import('leaflet/dist/leaflet-src.esm.js').LatLngBounds} LatLngBounds\n */\n\nconst props$g = {\n ...props$1,\n url: {\n type: String,\n required: true,\n },\n bounds: {\n type: [Array, Object],\n required: true,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n alt: {\n type: String,\n default: \"\",\n },\n interactive: {\n type: Boolean,\n default: false,\n },\n crossOrigin: {\n type: Boolean,\n default: false,\n },\n errorOverlayUrl: {\n type: String,\n custom: true,\n default: \"\",\n },\n zIndex: {\n type: Number,\n custom: true,\n default: 1,\n },\n className: {\n type: String,\n default: \"\",\n },\n};\n\nconst setup$f = (setupProps, LeafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n setupProps,\n LeafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...setupProps,\n };\n\n const methods = {\n ...layerMethods,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(opacity) {\n return LeafletRef.value.setOpacity(opacity);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(url) {\n return LeafletRef.value.setUrl(url);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(bounds) {\n return LeafletRef.value.setBounds(bounds);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return LeafletRef.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return LeafletRef.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return LeafletRef.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return LeafletRef.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(zIndex) {\n return LeafletRef.value.setZIndex(zIndex);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * ImageOverlay component, render a plain image instead of a geospatial map.\n */\nvar script$b = {\n name: \"LImageOverlay\",\n props: props$g,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$f(props, leafletRef, context);\n\n onMounted(async () => {\n const { imageOverlay, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = imageOverlay(props.url, props.bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$b.__file = \"src/components/LImageOverlay.vue\";\n\nvar script$c = {\n props: props$b,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods } = setup$b(props, leafletRef, context);\n\n onMounted(async () => {\n const { layerGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = layerGroup(props.options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$c.__file = \"src/components/LLayerGroup.vue\";\n\nvar script$d = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: {\n ...props,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array],\n default: () => [0, 0],\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number,\n default: 0,\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array,\n default: undefined,\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array,\n default: undefined,\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array,\n default: undefined,\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: false,\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object],\n default: \"EPSG3857\",\n },\n maxBoundsViscosity: {\n type: Number,\n default: undefined,\n },\n inertia: {\n type: Boolean,\n default: undefined,\n },\n inertiaDeceleration: {\n type: Number,\n default: undefined,\n },\n inertiaMaxSpeed: {\n type: Number,\n default: undefined,\n },\n easeLinearity: {\n type: Number,\n default: undefined,\n },\n zoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n zoomAnimationThreshold: {\n type: Number,\n default: undefined,\n },\n fadeAnimation: {\n type: Boolean,\n default: undefined,\n },\n markerZoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n noBlockingAnimations: {\n type: Boolean,\n default: false,\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, context) {\n const root = ref(null);\n const blueprint = reactive({\n ready: false,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: [],\n });\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n maxBounds: props.maxBounds,\n maxBoundsViscosity: props.maxBoundsViscosity,\n worldCopyJump: props.worldCopyJump,\n crs: props.crs,\n center: props.center,\n zoom: props.zoom,\n inertia: props.inertia,\n inertiaDeceleration: props.inertiaDeceleration,\n inertiaMaxSpeed: props.inertiaMaxSpeed,\n easeLinearity: props.easeLinearity,\n zoomAnimation: props.zoomAnimation,\n zoomAnimationThreshold: props.zoomAnimationThreshold,\n fadeAnimation: props.fadeAnimation,\n markerZoomAnimation: props.markerZoomAnimation,\n };\n\n const addLayer = provideLeafletWrapper(\"addLayer\");\n const removeLayer = provideLeafletWrapper(\"removeLayer\");\n const registerControl = provideLeafletWrapper(\"registerControl\");\n const registerLayerControl = provideLeafletWrapper(\"registerLayerControl\");\n provide(GLOBAL_LEAFLET_OPT, props.useGlobalLeaflet);\n\n const eventHandlers = {\n moveEndHandler() {\n /**\n * Triggers when zoom is updated\n * @type {number,string}\n */\n context.emit(\"update:zoom\", blueprint.leafletRef.getZoom());\n /**\n * Triggers when center is updated\n * @type {object,array}\n */\n context.emit(\"update:center\", blueprint.leafletRef.getCenter());\n\n /**\n * Triggers when bounds are updated\n * @type {object}\n */\n context.emit(\"update:bounds\", blueprint.leafletRef.getBounds());\n },\n overlayAddHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(true);\n }\n },\n overlayRemoveHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(false);\n }\n },\n };\n\n onMounted(async () => {\n if (props.useGlobalLeaflet) {\n WINDOW_OR_GLOBAL.L = WINDOW_OR_GLOBAL.L || (await import('leaflet'));\n }\n const {\n map,\n CRS,\n Icon,\n latLngBounds,\n latLng,\n DomEvent,\n } = props.useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n try {\n options.beforeMapMount && (await options.beforeMapMount());\n } catch (error) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${error.message}`\n );\n }\n\n await resetWebpackIcon(Icon);\n\n const optionsCrs =\n typeof options.crs == \"string\" ? CRS[options.crs] : options.crs;\n options.crs = optionsCrs || CRS.EPSG3857;\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd.push(layer);\n } else {\n const exist = blueprint.layersInControl.find(\n (l) =>\n l.leafletObject._leaflet_id ===\n layer.leafletObject._leaflet_id\n );\n if (!exist) {\n blueprint.layerControl.addLayer(layer);\n blueprint.layersInControl.push(layer);\n }\n }\n }\n if (layer.visible !== false) {\n blueprint.leafletRef.addLayer(layer.leafletObject);\n }\n },\n removeLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd = blueprint.layersToAdd.filter(\n (l) => l.name !== layer.name\n );\n } else {\n blueprint.layerControl.removeLayer(layer.leafletObject);\n blueprint.layersInControl = blueprint.layersInControl.filter(\n (l) =>\n l.leafletObject._leaflet_id !==\n layer.leafletObject._leaflet_id\n );\n }\n }\n blueprint.leafletRef.removeLayer(layer.leafletObject);\n },\n\n registerLayerControl(lControlLayer) {\n blueprint.layerControl = lControlLayer;\n blueprint.layersToAdd.forEach((layer) => {\n blueprint.layerControl.addLayer(layer);\n });\n blueprint.layersToAdd = [];\n\n registerControl(lControlLayer);\n },\n\n registerControl(lControl) {\n blueprint.leafletRef.addControl(lControl.leafletObject);\n },\n\n setZoom(newVal) {\n const zoom = blueprint.leafletRef.getZoom();\n if (newVal !== zoom) {\n blueprint.leafletRef.setZoom(newVal, {\n animate: props.noBlockingAnimations ? false : null,\n });\n }\n },\n\n setPaddingBottomRight(newVal) {\n blueprint.paddingBottomRight = newVal;\n },\n setPaddingTopLeft(newVal) {\n blueprint.paddingTopLeft = newVal;\n },\n setPadding(newVal) {\n blueprint.padding = newVal;\n },\n setCrs(newVal) {\n const prevBounds = blueprint.leafletRef.getBounds();\n blueprint.leafletRef.options.crs = newVal;\n blueprint.leafletRef.fitBounds(prevBounds, {\n animate: false,\n padding: [0, 0],\n });\n },\n fitBounds(bounds) {\n blueprint.leafletRef.fitBounds(bounds, {\n animate: this.noBlockingAnimations ? false : null,\n });\n },\n setBounds(newVal) {\n if (!newVal) {\n return;\n }\n const newBounds = latLngBounds(newVal);\n if (!newBounds.isValid()) {\n return;\n }\n const oldBounds =\n blueprint.lastSetBounds || blueprint.leafletRef.getBounds();\n const boundsChanged = !oldBounds.equals(newBounds, 0); // set maxMargin to 0 - check exact equals\n if (boundsChanged) {\n blueprint.lastSetBounds = newBounds;\n blueprint.leafletRef.fitBounds(newBounds, this.fitBoundsOptions);\n }\n },\n\n setCenter(newVal) {\n if (newVal == null) {\n return;\n }\n const newCenter = latLng(newVal);\n const oldCenter =\n blueprint.lastSetCenter || blueprint.leafletRef.getCenter();\n if (\n oldCenter.lat !== newCenter.lat ||\n oldCenter.lng !== newCenter.lng\n ) {\n blueprint.lastSetCenter = newCenter;\n blueprint.leafletRef.panTo(newCenter, {\n animate: this.noBlockingAnimations ? false : null,\n });\n }\n },\n };\n\n updateLeafletWrapper(addLayer, methods.addLayer);\n updateLeafletWrapper(removeLayer, methods.removeLayer);\n updateLeafletWrapper(registerControl, methods.registerControl);\n updateLeafletWrapper(registerLayerControl, methods.registerLayerControl);\n\n blueprint.leafletRef = map(root.value, options);\n\n propsBinder(methods, blueprint.leafletRef, props);\n const listeners = remapEvents(context.attrs);\n\n blueprint.leafletRef.on(\n \"moveend\",\n debounce(eventHandlers.moveEndHandler, 100)\n );\n blueprint.leafletRef.on(\"overlayadd\", eventHandlers.overlayAddHandler);\n blueprint.leafletRef.on(\n \"overlayremove\",\n eventHandlers.overlayRemoveHandler\n );\n DomEvent.on(blueprint.leafletRef, listeners);\n blueprint.ready = true;\n nextTick(() => context.emit(\"ready\", blueprint.leafletRef));\n });\n\n onBeforeUnmount(() => {\n if (blueprint.leafletRef) {\n blueprint.leafletRef.remove();\n }\n });\n\n const leafletObject = computed(() => blueprint.leafletRef);\n const ready = computed(() => blueprint.ready);\n return { root, ready, leafletObject };\n },\n render() {\n return h(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready ? this.$slots.default() : {}\n );\n },\n};\n\nscript$d.__file = \"src/components/LMap.vue\";\n\nconst props$h = {\n ...props$1,\n pane: {\n type: String,\n default: \"markerPane\",\n },\n draggable: {\n type: Boolean,\n custom: true,\n default: false,\n },\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n icon: {\n type: [Object],\n default: () => undefined,\n custom: false,\n },\n zIndexOffset: {\n type: Number,\n custom: false,\n default: null,\n },\n};\n\nconst setup$g = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerMethods,\n setDraggable(value) {\n if (leafletRef.value.dragging) {\n value\n ? leafletRef.value.dragging.enable()\n : leafletRef.value.dragging.disable();\n }\n },\n latLngSync(event) {\n context.emit(\"update:latLng\", event.latlng);\n context.emit(\"update:lat-lng\", event.latlng);\n },\n setLatLng(newVal) {\n if (newVal == null) {\n return;\n }\n\n if (leafletRef.value) {\n const oldLatLng = leafletRef.value.getLatLng();\n if (!oldLatLng || !oldLatLng.equals(newVal)) {\n leafletRef.value.setLatLng(newVal);\n }\n }\n },\n };\n return { options, methods };\n};\n\n/**\n * Marker component, lets you add and personalize markers on the map\n */\nvar script$e = {\n name: \"LMarker\",\n props: props$h,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n provide(\"canSetParentHtml\", () => !!leafletRef.value.getElement());\n provide(\n \"setParentHtml\",\n (html) => (leafletRef.value.getElement().innerHTML = html)\n );\n provide(\n \"setIcon\",\n (newIcon) => leafletRef.value.setIcon && leafletRef.value.setIcon(newIcon)\n );\n const { options, methods } = setup$g(props, leafletRef, context);\n if (options.icon === undefined) {\n // If the options objection has a property named 'icon', then Leaflet will overwrite\n // the default icon with it for the marker, _even if it is undefined_.\n // This leads to the issue discussed in https://github.com/vue-leaflet/vue-leaflet/issues/130\n delete options.icon;\n }\n\n onMounted(async () => {\n const { marker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = marker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"move\", debounce(methods.latLngSync, 100));\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$e.__file = \"src/components/LMarker.vue\";\n\nconst props$i = {\n ...props$3,\n latLngs: {\n type: Array,\n default: () => [],\n },\n smoothFactor: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n noClip: {\n type: Boolean,\n custom: true,\n default: false,\n },\n};\n\nconst setup$h = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n\n const methods = {\n ...pathMethods,\n setSmoothFactor(smoothFactor) {\n leafletRef.value.setStyle({ smoothFactor });\n },\n setNoClip(noClip) {\n leafletRef.value.setStyle({ noClip });\n },\n addLatLng(latLng) {\n leafletRef.value.addLatLng(latLng);\n },\n };\n return { options, methods };\n};\n\nconst props$j = {\n ...props$i,\n};\n\nconst setup$i = (props, leafletRef, context) => {\n const { options: polylineOptions, methods: polylineMethods } = setup$h(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polylineOptions,\n ...props,\n };\n\n const methods = {\n ...polylineMethods,\n toGeoJSON(precision) {\n return leafletRef.value.toGeoJSON(precision);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Polygon component, lets you add and customize polygon regions on the map\n */\nvar script$f = {\n name: \"LPolygon\",\n props: props$j,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$i(props, leafletRef, context);\n\n onMounted(async () => {\n const { polygon, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polygon(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$f.__file = \"src/components/LPolygon.vue\";\n\n/**\n * Polyline component, lets you add and personalize polylines on the map\n */\nvar script$g = {\n name: \"LPolyline\",\n props: props$i,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$h(props, leafletRef, context);\n\n onMounted(async () => {\n const { polyline, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polyline(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$g.__file = \"src/components/LPolyline.vue\";\n\nconst props$k = {\n ...props,\n content: {\n type: String,\n default: null,\n },\n};\n\nconst setup$j = (props, leafletRef) => {\n const { options, methods: componentMethods } = setup(props);\n const methods = {\n ...componentMethods,\n setContent(newVal) {\n if (leafletRef.value && newVal !== null && newVal !== undefined) {\n leafletRef.value.setContent(newVal);\n }\n },\n };\n return { options, methods };\n};\n\nconst render$2 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nconst props$l = {\n ...props$k,\n latLng: {\n type: [Object, Array],\n default: () => [],\n },\n};\n\nconst setup$k = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindPopup = inject(\"unbindPopup\");\n\n onBeforeUnmount(() => {\n unbindPopup();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a popup on the map\n */\nvar script$h = {\n name: \"LPopup\",\n props: props$l,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindPopup = inject(\"bindPopup\");\n\n const { options, methods } = setup$k(props, leafletRef);\n\n onMounted(async () => {\n const { popup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = popup(options);\n\n if (props.latLng !== undefined) {\n leafletRef.value.setLatLng(props.latLng);\n }\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindPopup({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$h.__file = \"src/components/LPopup.vue\";\n\nconst props$m = {\n ...props$j,\n bounds: {\n type: Array,\n default: undefined,\n },\n};\n\nconst setup$l = (props, leafletRef, context) => {\n const { options: polygonOptions, methods: polygonMethods } = setup$i(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polygonOptions,\n ...props,\n };\n\n const methods = {\n ...polygonMethods,\n setBounds(latLngBounds) {\n leafletRef.value.setBounds(latLngBounds);\n },\n setLatLngs(latLngs) {\n // Calling setLatLngs on a Leaflet rectangle will convert it\n // to a polygon. So instead, we call setBounds here to ensure\n // that the rectangle remains a rectangle, defined by the\n // bounds of the points in the latLngs array.\n leafletRef.value.setBounds(latLngs);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Rectangle component, lets you add and customize rectangular regions on the map\n */\nvar script$i = {\n name: \"LRectangle\",\n props: props$m,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$l(props, leafletRef, context);\n\n onMounted(async () => {\n const { rectangle, latLngBounds, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const bounds =\n props.bounds && props.bounds.length\n ? latLngBounds(props.bounds)\n : latLngBounds(props.latLngs);\n leafletRef.value = rectangle(bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$i.__file = \"src/components/LRectangle.vue\";\n\nconst props$n = {\n ...props$e,\n tms: {\n type: Boolean,\n default: false,\n },\n subdomains: {\n type: String,\n default: \"abc\",\n },\n detectRetina: {\n type: Boolean,\n default: false,\n },\n url: {\n type: String,\n default: null,\n },\n};\n\nconst setup$m = (props, leafletRef) => {\n const {\n options: gridLayerOptions,\n methods: gridLayerMethods,\n } = setup$e(props, leafletRef);\n const options = {\n ...gridLayerOptions,\n tms: props.tms,\n subdomains: props.subdomains,\n detectRetina: props.detectRetina,\n };\n return {\n options,\n methods: {\n ...gridLayerMethods,\n },\n };\n};\n\nvar script$j = {\n props: props$n,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$m(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = tileLayer(props.url, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { leafletObject: leafletRef };\n },\n render() {\n return null;\n },\n};\n\nscript$j.__file = \"src/components/LTileLayer.vue\";\n\nconst props$o = {\n ...props$k,\n};\n\nconst setup$n = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindTooltip = inject(\"unbindTooltip\");\n\n onBeforeUnmount(() => {\n unbindTooltip();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a tooltip on the map\n */\nvar script$k = {\n name: \"LTooltip\",\n props: props$o,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindTooltip = inject(\"bindTooltip\");\n\n const { options, methods } = setup$n(props, leafletRef);\n\n onMounted(async () => {\n const { tooltip, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tooltip(options);\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindTooltip({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$k.__file = \"src/components/LTooltip.vue\";\n\nconst props$p = {\n ...props$n,\n baseUrl: {\n type: String,\n default: null,\n required: true,\n },\n layers: {\n type: String,\n default: \"\",\n },\n styles: {\n type: String,\n default: \"\",\n },\n format: {\n type: String,\n default: \"image/jpeg\",\n },\n transparent: {\n type: Boolean,\n custom: false,\n },\n version: {\n type: String,\n default: \"1.1.1\",\n },\n crs: {\n default: null,\n },\n upperCase: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$o = (props, leafletRef) => {\n const {\n options: tileLayerOptions,\n methods: tileLayerMethods,\n } = setup$m(props, leafletRef);\n const options = {\n ...tileLayerOptions,\n layers: props.layers,\n styles: props.styles,\n format: props.format,\n transparent: props.transparent,\n version: props.version,\n crs: props.crs,\n upperCase: props.upperCase,\n };\n return {\n options,\n methods: {\n ...tileLayerMethods,\n },\n };\n};\n\nvar script$l = {\n props: props$p,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$o(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tileLayer.wms(props.baseUrl, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$l.__file = \"src/components/LWmsTileLayer.vue\";\n\nexport { script as LCircle, script$1 as LCircleMarker, script$2 as LControl, script$3 as LControlAttribution, script$4 as LControlLayers, script$5 as LControlScale, script$6 as LControlZoom, script$7 as LFeatureGroup, script$8 as LGeoJson, script$9 as LGridLayer, script$a as LIcon, script$b as LImageOverlay, script$c as LLayerGroup, script$d as LMap, script$e as LMarker, script$f as LPolygon, script$g as LPolyline, script$h as LPopup, script$i as LRectangle, script$j as LTileLayer, script$k as LTooltip, script$l as LWmsTileLayer };\n//# sourceMappingURL=vue-leaflet.esm.js.map\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b490f5d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates }\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n function getBounds() {\n return props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n }\n function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6b490f5d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b490f5d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40fe2f7b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates }\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n )\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=40fe2f7b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-40fe2f7b\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record,\n options: Record\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dcea1168\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = { class: \"elevation-start\" }\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n\n \n\n \n\n const { t } = useI18n()\n\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t, props.authUser.imperial_units)\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n [displayDistance.value ? 'xDistance' : 'xDuration']: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ` (${fromKmUnit})`\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/h`\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\n })\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=dcea1168&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dcea1168\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-028ad527\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null }\n\n \n\n const { notes } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(notes) && _unref(notes) !== '' ? _unref(notes) : _ctx.$t('workouts.NO_NOTES')), 1)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=028ad527&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-028ad527\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(segments), (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b8a27cd\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53c4e53a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n }\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53c4e53a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c38593a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: handleFilterChange\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=6c38593a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6c38593a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7637d6de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n capitalize,\n onBeforeMount,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\n )\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(workout.workout_date, _unref(user).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createVNode(_component_Distance, {\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=7637d6de&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7637d6de\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77e54012\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nimport { ComputedRef, computed, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=77e54012&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77e54012\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_createTextVNode","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","withGpx","ref","with_gpx","gpxFile","formErrors","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","formatPayload","payload","updateWorkout","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","commit","file","onCancel","push","name","params","go","invalidateForm","onMounted","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","document","createElement","href","setAttribute","body","appendChild","click","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","_component_Distance","wind","unitFrom","digits","displayUnit","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","Number","temperature","humidity","WeatherWind","displayHARecord","withPause","pauses","moving","WorkoutRecord","strong","aveSpeed","speed","maxSpeed","maxAlt","minAlt","ascent","descent","WorkoutWeather","$","element","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","length","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","includes","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","debounce","fn","timeout","args","context","this","clearTimeout","setTimeout","apply","capitalizeFirstLetter","string","charAt","toUpperCase","slice","propsBinder","methods","leafletElement","setMethodName","newVal","oldVal","remapEvents","contextAttrs","attrName","startsWith","eventName","toLocaleLowerCase","resetWebpackIcon","Icon","modules","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","provideLeafletWrapper","methodName","wrapped","console","warn","wrapper","updateLeafletWrapper","leafletMethod","WINDOW_OR_GLOBAL","self","g","global","undefined","GLOBAL_LEAFLET_OPT","options","props$1","pane","String","attribution","custom","layerType","visible","setup$1","leafletRef","addLayer","removeLayer","componentOptions","componentMethods","addThisLayer","leafletObject","removeThisLayer","setAttribution","old","attributionControl","$parent","removeAttribution","addAttribution","setName","setLayerType","setVisible","isVisible","bindPopup","bindTooltip","unbindTooltip","tooltip","getTooltip","unbindPopup","popup","getPopup","updateVisibleProp","render","ready","slots","h","display","props$2","interactive","bubblingMouseEvents","props$3","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","props$4","latLng","radius","props$6","position","setup$6","setPosition","remove","render$1","script$2","disableClickPropagation","disableScrollPropagation","root","useGlobalLeaflet","registerControl","Control","DomEvent","L","LControl","extend","onAdd","$slots","props$8","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","setup$8","controlOptions","layer","addBaseLayer","addOverlay","script$4","registerLayerControl","control","layers","props$b","setup$b","layerOptions","layerMethods","props$d","geojson","setup$d","layerGroupMethods","setGeojson","clearLayers","addData","getGeoJSONData","toGeoJSON","getBounds","script$8","geoJSON","listeners","attrs","on","props$e","zIndex","tileSize","noWrap","minZoom","maxZoom","setup$e","props$f","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","script$a","canSetParentHtml","setParentHtml","setIcon","onDomEvent","offDomEvent","divIcon","iconObject","createIcon","el","recreationNeeded","htmlSwapNeeded","elHtml","innerHTML","html","scheduleCreateIcon","scheduleHtmlSwap","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setClassName","setHtml","lDivIcon","lIcon","off","observer","MutationObserver","observe","attributes","childList","characterData","subtree","script$c","layerGroup","script$d","center","bounds","maxBounds","zoom","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","blueprint","layersToAdd","layersInControl","eventHandlers","moveEndHandler","getZoom","getCenter","overlayAddHandler","e","l","overlayRemoveHandler","CRS","latLngBounds","beforeMapMount","error","optionsCrs","EPSG3857","layerControl","exist","_leaflet_id","filter","lControlLayer","forEach","lControl","addControl","setZoom","animate","setPaddingBottomRight","setPaddingTopLeft","setPadding","setCrs","prevBounds","fitBounds","setBounds","newBounds","isValid","oldBounds","lastSetBounds","boundsChanged","equals","fitBoundsOptions","setCenter","newCenter","oldCenter","lastSetCenter","lat","lng","panTo","height","props$h","draggable","zIndexOffset","setup$g","setDraggable","dragging","enable","disable","latLngSync","latlng","setLatLng","oldLatLng","getLatLng","script$e","getElement","newIcon","marker","props$i","latLngs","smoothFactor","noClip","props$j","props$k","props$n","tms","subdomains","detectRetina","url","setup$m","gridLayerOptions","gridLayerMethods","script$j","tileLayer","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","deleteWorkout","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","Error","htmlLegendPlugin","afterUpdate","chart","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","li","onclick","datasetIndex","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","datasets","getDatasets","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","elevation","responsive","maintainAspectRatio","animation","layout","top","scales","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","yElevation","beginAtZero","elements","pointStyle","pointRadius","datalabels","interaction","intersect","mode","callbacks","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","lineChartProps","useLineChart","updateDisplayDistance","Date","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","s","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","keys","k","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","format","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/workouts.520d24bf.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.esm.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-886f93f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_30 = [\"disabled\"]\nconst _hoisted_31 = { class: \"form-item\" }\nconst _hoisted_32 = [\"disabled\"]\nconst _hoisted_33 = { class: \"form-item\" }\nconst _hoisted_34 = { key: 1 }\nconst _hoisted_35 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_36 = [\"disabled\"]\nconst _hoisted_37 = [\"onClick\"]\n\nimport {\n ComputedRef,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout }\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n })\n const withGpx = ref(\n props.workout.id ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n\n onMounted(() => {\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 2)\n : parseFloat(workout.distance.toFixed(2))\n }`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n }\n }\n function formatPayload(payload: IWorkoutForm) {\n payload.title = workoutForm.title\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX, payload)\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \": \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \": \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \":\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: \"workout-duration\",\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 40, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _hoisted_27,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 40, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _hoisted_29,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 40, _hoisted_30), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 40, _hoisted_32), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_33, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_35, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_36),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_37)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=886f93f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-886f93f6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { ComputedRef, computed } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4d9f9a8a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" — \")\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_12 = { class: \"workout-date\" }\nconst _hoisted_13 = { class: \"workout-link\" }\nconst _hoisted_14 = [\"title\"]\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_unref(workoutObject).previousUrl }]),\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n ))\n }),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"]))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _hoisted_11,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_13, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workoutObject).workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_unref(workoutObject).nextUrl }]),\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_16, 10, _hoisted_14)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=4d9f9a8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4d9f9a8a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1a5282f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n }\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-46a7c31c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n }\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Distance, {\n distance: _unref(weather).wind,\n unitFrom: \"m\",\n digits: 1,\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(useImperialUnits) ? 'ft' : 'm') + \"/s \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=46a7c31c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-46a7c31c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76e9ab62\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(workoutObject).weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.temperature).toFixed(1)) + \"°C \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.temperature).toFixed(1)) + \"°C \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=76e9ab62&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-76e9ab62\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74c5993b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"label\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_6 = { class: \"value\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = { class: \"value\" }\nconst _hoisted_10 = { class: \"workout-data\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_12 = { class: \"label\" }\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_14 = { class: \"workout-data\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_21 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_22 = [\"alt\"]\nconst _hoisted_23 = { class: \"label\" }\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_28 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_30 = { class: \"label\" }\nconst _hoisted_31 = /*#__PURE__*/_createTextVNode(\": \")\nconst _hoisted_32 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_33 = { class: \"label\" }\nconst _hoisted_34 = /*#__PURE__*/_createTextVNode(\": \")\n\nimport { computed, toRefs } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _hoisted_13,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _hoisted_17,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_18,\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _hoisted_20,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_22),\n _createElementVNode(\"span\", _hoisted_23, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _hoisted_24,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _hoisted_27,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [\n _hoisted_29,\n _createElementVNode(\"span\", _hoisted_30, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _hoisted_31,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_32,\n _createElementVNode(\"span\", _hoisted_33, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _hoisted_34,\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=74c5993b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74c5993b\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), get(iconStyle, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n }));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nconst GEO_TYPES = [\n \"Polygon\",\n \"LineString\",\n \"Point\",\n \"Track\",\n \"gx:Track\",\n];\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n const geometries = [];\n const coordTimes = [];\n for (const t of [\"MultiGeometry\", \"MultiTrack\", \"gx:MultiTrack\"]) {\n const elem = get1(node, t);\n if (elem) {\n return getGeometry(elem);\n }\n }\n for (const geoType of GEO_TYPES) {\n for (const geomNode of $(node, geoType)) {\n switch (geoType) {\n case \"Point\": {\n const coordinates = coord1(getCoordinates(geomNode));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LineString\": {\n const coordinates = coord(getCoordinates(geomNode));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(geomNode, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(geomNode);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction extractExtendedData(node) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n properties[simpleData.getAttribute(\"name\") || \"\"] = nodeVal(simpleData);\n }\n return properties;\n });\n}\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction getPlacemark(node, styleMap) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch, ref, provide, h, inject, onUnmounted, onBeforeUnmount, onMounted, nextTick, render as render$3, reactive, computed } from 'vue';\n\nconst debounce = (fn, time) => {\n let timeout;\n\n return function (...args) {\n const context = this;\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n fn.apply(context, args);\n timeout = null;\n }, time);\n };\n};\n\nconst capitalizeFirstLetter = (string) => {\n if (!string || typeof string.charAt !== \"function\") {\n return string;\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\nconst propsBinder = (methods, leafletElement, props) => {\n for (const key in props) {\n const setMethodName = \"set\" + capitalizeFirstLetter(key);\n if (methods[setMethodName]) {\n watch(\n () => props[key],\n (newVal, oldVal) => {\n methods[setMethodName](newVal, oldVal);\n }\n );\n } else if (leafletElement[setMethodName]) {\n watch(\n () => props[key],\n (newVal) => {\n leafletElement[setMethodName](newVal);\n }\n );\n }\n }\n};\n\nconst remapEvents = (contextAttrs) => {\n const result = {};\n for (const attrName in contextAttrs) {\n if (\n attrName.startsWith(\"on\") &&\n !attrName.startsWith(\"onUpdate\") &&\n attrName !== \"onReady\"\n ) {\n const eventName = attrName.slice(2).toLocaleLowerCase();\n result[eventName] = contextAttrs[attrName];\n }\n }\n return result;\n};\n\nconst resetWebpackIcon = async (Icon) => {\n const modules = await Promise.all([\n import('leaflet/dist/images/marker-icon-2x.png'),\n import('leaflet/dist/images/marker-icon.png'),\n import('leaflet/dist/images/marker-shadow.png'),\n ]);\n\n delete Icon.Default.prototype._getIconUrl;\n\n Icon.Default.mergeOptions({\n iconRetinaUrl: modules[0].default,\n iconUrl: modules[1].default,\n shadowUrl: modules[2].default,\n });\n};\n\n/**\n * Wraps a placeholder function and provides it with the given name.\n * The wrapper can later be updated with {@link updateLeafletWrapper}\n * to provide a different function.\n *\n * @param {String} methodName Key used to provide the wrapper function\n */\nconst provideLeafletWrapper = (methodName) => {\n const wrapped = ref(() =>\n console.warn(`Method ${methodName} has been invoked without being replaced`)\n );\n const wrapper = (...args) => wrapped.value(...args);\n // eslint-disable-next-line vue/no-ref-as-operand\n wrapper.wrapped = wrapped;\n provide(methodName, wrapper);\n\n return wrapper;\n};\n\n/**\n * Change the function that will be executed when an injected Leaflet wrapper\n * is invoked.\n *\n * @param {*} wrapper Provided wrapper whose wrapped function is to be updated\n * @param {function} leafletMethod New method to be wrapped by the wrapper\n */\nconst updateLeafletWrapper = (wrapper, leafletMethod) =>\n (wrapper.wrapped.value = leafletMethod);\n\nconst WINDOW_OR_GLOBAL =\n (typeof self === \"object\" && self.self === self && self) ||\n (typeof global === \"object\" && global.global === global && global) ||\n undefined;\n\nconst GLOBAL_LEAFLET_OPT = \"useGlobalLeaflet\";\n\nconst props = {\n options: {\n type: Object,\n default: () => ({}),\n },\n};\n\nconst setup = (props) => {\n return { options: props.options, methods: {} };\n};\n\nconst props$1 = {\n ...props,\n pane: {\n type: String,\n default: \"overlayPane\",\n },\n attribution: {\n type: String,\n default: null,\n },\n name: {\n type: String,\n custom: true,\n default: undefined,\n },\n layerType: {\n type: String,\n custom: true,\n default: undefined,\n },\n visible: {\n type: Boolean,\n custom: true,\n default: true,\n },\n};\n\nconst setup$1 = (props, leafletRef, context) => {\n const addLayer = inject(\"addLayer\");\n const removeLayer = inject(\"removeLayer\");\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n\n const options = {\n ...componentOptions,\n attribution: props.attribution,\n pane: props.pane,\n };\n\n const addThisLayer = () => addLayer({ leafletObject: leafletRef.value });\n const removeThisLayer = () =>\n removeLayer({ leafletObject: leafletRef.value });\n\n const methods = {\n ...componentMethods,\n setAttribution(val, old) {\n const attributionControl = this.$parent.leafletObject.attributionControl;\n attributionControl.removeAttribution(old).addAttribution(val);\n },\n setName() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setLayerType() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setVisible(isVisible) {\n if (leafletRef.value) {\n if (isVisible) {\n addThisLayer();\n } else {\n removeThisLayer();\n }\n }\n },\n bindPopup({ leafletObject }) {\n leafletRef.value.bindPopup(leafletObject);\n },\n bindTooltip({ leafletObject }) {\n leafletRef.value.bindTooltip(leafletObject);\n },\n unbindTooltip() {\n const tooltip = leafletRef.value ? leafletRef.value.getTooltip() : null;\n if (tooltip) {\n tooltip.unbindTooltip();\n }\n },\n unbindPopup() {\n const popup = leafletRef.value ? leafletRef.value.getPopup() : null;\n if (popup) {\n popup.unbindPopup();\n }\n },\n updateVisibleProp(value) {\n /**\n * Triggers when the visible prop needs to be updated\n * @type {boolean}\n * @property {boolean} value - value of the visible property\n */\n context.emit(\"update:visible\", value);\n },\n };\n\n provide(\"bindPopup\", methods.bindPopup);\n provide(\"bindTooltip\", methods.bindTooltip);\n provide(\"unbindTooltip\", methods.unbindTooltip);\n provide(\"unbindPopup\", methods.unbindPopup);\n\n onUnmounted(() => {\n methods.unbindPopup();\n methods.unbindTooltip();\n removeThisLayer();\n });\n\n return { options, methods };\n};\n\nconst render = (ready, slots) => {\n if (ready && slots.default) {\n return h(\"div\", { style: { display: \"none\" } }, slots.default());\n }\n};\n\nconst props$2 = {\n ...props,\n interactive: {\n type: Boolean,\n default: true,\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: true,\n },\n};\n\nconst setup$2 = (props) => {\n const { options: componentOptions, methods } = setup(props);\n const options = {\n ...componentOptions,\n interactive: props.interactive,\n bubblingMouseEvents: props.bubblingMouseEvents,\n };\n\n return { options, methods };\n};\n\nconst props$3 = {\n ...props$1,\n ...props$2,\n stroke: {\n type: Boolean,\n custom: true,\n default: true,\n },\n color: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n weight: {\n type: Number,\n custom: true,\n default: 3,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n lineCap: {\n type: String,\n custom: true,\n default: \"round\",\n },\n lineJoin: {\n type: String,\n custom: true,\n default: \"round\",\n },\n dashArray: {\n type: String,\n custom: true,\n default: null,\n },\n dashOffset: {\n type: String,\n custom: true,\n default: null,\n },\n fill: {\n type: Boolean,\n custom: true,\n default: false,\n },\n fillColor: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n fillOpacity: {\n type: Number,\n custom: true,\n default: 0.2,\n },\n fillRule: {\n type: String,\n custom: true,\n default: \"evenodd\",\n },\n className: {\n type: String,\n custom: true,\n default: null,\n },\n};\n\nconst setup$3 = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const {\n options: interactiveLayerOptions,\n methods: interactiveLayerMethods,\n } = setup$2(props);\n\n const removeLayer = inject(\"removeLayer\");\n\n const options = {\n ...layerOptions,\n ...interactiveLayerOptions,\n stroke: props.stroke,\n color: props.color,\n weight: props.weight,\n opacity: props.opacity,\n lineCap: props.lineCap,\n lineJoin: props.lineJoin,\n dashArray: props.dashArray,\n dashOffset: props.dashOffset,\n fill: props.fill,\n fillColor: props.fillColor,\n fillOpacity: props.fillOpacity,\n fillRule: props.fillRule,\n className: props.className,\n };\n const methods = {\n ...layerMethods,\n ...interactiveLayerMethods,\n setStroke(stroke) {\n leafletRef.value.setStyle({ stroke });\n },\n setColor(color) {\n leafletRef.value.setStyle({ color });\n },\n setWeight(weight) {\n leafletRef.value.setStyle({ weight });\n },\n setOpacity(opacity) {\n leafletRef.value.setStyle({ opacity });\n },\n setLineCap(lineCap) {\n leafletRef.value.setStyle({ lineCap });\n },\n setLineJoin(lineJoin) {\n leafletRef.value.setStyle({ lineJoin });\n },\n setDashArray(dashArray) {\n leafletRef.value.setStyle({ dashArray });\n },\n setDashOffset(dashOffset) {\n leafletRef.value.setStyle({ dashOffset });\n },\n setFill(fill) {\n leafletRef.value.setStyle({ fill });\n },\n setFillColor(fillColor) {\n leafletRef.value.setStyle({ fillColor });\n },\n setFillOpacity(fillOpacity) {\n leafletRef.value.setStyle({ fillOpacity });\n },\n setFillRule(fillRule) {\n leafletRef.value.setStyle({ fillRule });\n },\n setClassName(className) {\n leafletRef.value.setStyle({ className });\n },\n };\n\n onBeforeUnmount(() => {\n removeLayer({ leafletObject: leafletRef.value });\n });\n\n return { options, methods };\n};\n\nconst props$4 = {\n ...props$3,\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$4 = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n const methods = {\n ...pathMethods,\n setRadius(radius) {\n leafletRef.value.setRadius(radius);\n },\n setLatLng(latLng) {\n leafletRef.value.setLatLng(latLng);\n },\n };\n\n return { options, methods };\n};\n\nconst props$5 = {\n ...props$4,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$5 = (props, leafletRef, context) => {\n const {\n options: circleMarkerOptions,\n methods: circleMarkerMethods,\n } = setup$4(props, leafletRef, context);\n\n const options = {\n ...circleMarkerOptions,\n ...props,\n };\n\n const methods = {\n ...circleMarkerMethods,\n };\n\n return { options, methods };\n};\n\n/**\n * Circle component, lets you add and personalize circles on the map\n */\nvar script = {\n name: \"LCircle\",\n props: props$5,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$5(props, leafletRef, context);\n\n onMounted(async () => {\n const { circle, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circle(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript.__file = \"src/components/LCircle.vue\";\n\n/**\n * Circle Marker component, lets you add and personalize circle markers on the map\n */\nvar script$1 = {\n name: \"LCircleMarker\",\n props: props$4,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$4(props, leafletRef, context);\n\n onMounted(async () => {\n const { circleMarker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circleMarker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$1.__file = \"src/components/LCircleMarker.vue\";\n\nconst props$6 = {\n ...props,\n position: {\n type: String,\n default: \"topright\",\n },\n};\n\nconst setup$6 = (props, leafletRef) => {\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n const options = {\n ...componentOptions,\n position: props.position,\n };\n\n const methods = {\n ...componentMethods,\n setPosition(position) {\n if (leafletRef.value) {\n leafletRef.value.setPosition(position);\n }\n },\n };\n\n onUnmounted(() => {\n if (leafletRef.value) {\n leafletRef.value.remove();\n }\n });\n\n return { options, methods };\n};\n\nconst render$1 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nvar script$2 = {\n name: \"LControl\",\n props: {\n ...props$6,\n disableClickPropagation: {\n type: Boolean,\n custom: true,\n default: true,\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: true,\n default: false,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$6(props, leafletRef);\n\n onMounted(async () => {\n const { Control, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const LControl = Control.extend({\n onAdd() {\n return root.value;\n },\n });\n\n leafletRef.value = new LControl(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n\n if (props.disableClickPropagation) {\n DomEvent.disableClickPropagation(root.value);\n }\n if (props.disableScrollPropagation) {\n DomEvent.disableScrollPropagation(root.value);\n }\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$1(this.$slots);\n },\n};\n\nscript$2.__file = \"src/components/LControl.vue\";\n\nconst props$7 = {\n ...props$6,\n prefix: {\n type: String,\n default: \"Vue-Leaflet\",\n custom: true,\n },\n};\n\nconst setup$7 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n prefix: props.prefix,\n };\n\n const methods = {\n ...controlMethods,\n setPrefix(prefix) {\n leafletRef.value.setPrefix(prefix);\n },\n };\n\n return { options, methods };\n};\n\nvar script$3 = {\n name: \"LControlAttribution\",\n props: props$7,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$7(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.attribution(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$3.__file = \"src/components/LControlAttribution.vue\";\n\nconst props$8 = {\n ...props$6,\n collapsed: {\n type: Boolean,\n default: true,\n },\n autoZIndex: {\n type: Boolean,\n default: true,\n },\n hideSingleBase: {\n type: Boolean,\n default: false,\n },\n sortLayers: {\n type: Boolean,\n default: false,\n },\n sortFunction: {\n type: Function,\n default: undefined,\n },\n};\n\nconst setup$8 = (props, leafletRef) => {\n const { options: controlOptions } = setup$6(props, leafletRef);\n const options = {\n ...controlOptions,\n collapsed: props.collapsed,\n autoZIndex: props.autoZIndex,\n hideSingleBase: props.hideSingleBase,\n sortLayers: props.sortLayers,\n sortFunction: props.sortFunction,\n };\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType === \"base\") {\n leafletRef.value.addBaseLayer(layer.leafletObject, layer.name);\n } else if (layer.layerType === \"overlay\") {\n leafletRef.value.addOverlay(layer.leafletObject, layer.name);\n }\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n return { options, methods };\n};\n\nvar script$4 = {\n name: \"LControlLayers\",\n props: props$8,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerLayerControl = inject(\"registerLayerControl\");\n\n const { options, methods } = setup$8(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.layers(null, null, options);\n\n propsBinder(methods, leafletRef.value, props);\n\n registerLayerControl({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$4.__file = \"src/components/LControlLayers.vue\";\n\nconst props$9 = {\n ...props$6,\n maxWidth: {\n type: Number,\n default: 100,\n },\n metric: {\n type: Boolean,\n default: true,\n },\n imperial: {\n type: Boolean,\n default: true,\n },\n updateWhenIdle: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$9 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n maxWidth: props.maxWidth,\n metric: props.metric,\n imperial: props.imperial,\n updateWhenIdle: props.updateWhenIdle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$5 = {\n name: \"LControlScale\",\n props: props$9,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$9(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.scale(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$5.__file = \"src/components/LControlScale.vue\";\n\nconst props$a = {\n ...props$6,\n zoomInText: {\n type: String,\n default: \"+\",\n },\n zoomInTitle: {\n type: String,\n default: \"Zoom in\",\n },\n zoomOutText: {\n type: String,\n default: \"-\",\n },\n zoomOutTitle: {\n type: String,\n default: \"Zoom out\",\n },\n};\n\nconst setup$a = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n zoomInText: props.zoomInText,\n zoomInTitle: props.zoomInTitle,\n zoomOutText: props.zoomOutText,\n zoomOutTitle: props.zoomOutTitle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$6 = {\n name: \"LControlZoom\",\n props: props$a,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$a(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.zoom(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$6.__file = \"src/components/LControlZoom.vue\";\n\nconst props$b = {\n ...props$1,\n};\n\nconst setup$b = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n\n const options = {\n ...layerOptions,\n };\n\n const methods = {\n ...layerMethods,\n addLayer(layer) {\n leafletRef.value.addLayer(layer.leafletObject);\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n\n provide(\"addLayer\", methods.addLayer);\n provide(\"removeLayer\", methods.removeLayer);\n\n return { options, methods };\n};\n\nconst props$c = {\n ...props$b,\n};\n\nconst setup$c = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n };\n\n return { options, methods };\n};\n\nvar script$7 = {\n props: props$c,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$c(props, leafletRef);\n\n onMounted(async () => {\n const { featureGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = featureGroup(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$7.__file = \"src/components/LFeatureGroup.vue\";\n\nconst props$d = {\n ...props$b,\n geojson: {\n type: [Object, Array],\n default: () => ({}),\n },\n};\n\nconst setup$d = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n setGeojson(newVal) {\n leafletRef.value.clearLayers();\n leafletRef.value.addData(newVal);\n },\n getGeoJSONData() {\n return leafletRef.value.toGeoJSON();\n },\n getBounds() {\n return leafletRef.value.getBounds();\n },\n };\n\n return { options, methods };\n};\n\nvar script$8 = {\n props: props$d,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$d(props, leafletRef);\n\n onMounted(async () => {\n const { geoJSON, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = geoJSON(props.geojson, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$8.__file = \"src/components/LGeoJson.vue\";\n\nconst props$e = {\n ...props$1,\n pane: {\n type: String,\n default: \"tilePane\",\n },\n opacity: {\n type: Number,\n custom: false,\n default: 1.0,\n },\n zIndex: {\n type: Number,\n default: 1,\n },\n tileSize: {\n type: Number,\n default: 256,\n },\n noWrap: {\n type: Boolean,\n default: false,\n },\n minZoom: {\n type: Number,\n default: 0,\n },\n maxZoom: {\n type: Number,\n default: undefined,\n },\n};\n\nconst setup$e = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n pane: props.pane,\n opacity: props.opacity,\n zIndex: props.zIndex,\n tileSize: props.tileSize,\n noWrap: props.noWrap,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n };\n return { options, methods: { ...layerMethods } };\n};\n\nvar script$9 = {\n props: {\n ...props$e,\n childRender: {\n type: Function,\n required: true,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const tileComponents = ref({});\n const root = ref(null);\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$e(props, leafletRef, context);\n\n onMounted(async () => {\n const { GridLayer, DomEvent, DomUtil } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n methods.onUnload = (e) => {\n const key = leafletRef.value._tileCoordsToKey(e.coords);\n if (tileComponents[key]) {\n tileComponents[key].innerHTML = \"\";\n tileComponents[key] = undefined;\n }\n };\n\n methods.setTileComponent = () => {\n leafletRef.value.redraw();\n };\n\n const GLayer = GridLayer.extend({\n createTile(coords) {\n const key = leafletRef.value._tileCoordsToKey(coords);\n tileComponents[key] = DomUtil.create(\"div\");\n\n let vNode = h(\n { setup: props.childRender, props: [\"coords\"] },\n { coords }\n );\n render$3(vNode, tileComponents[key]);\n\n return tileComponents[key];\n },\n });\n\n leafletRef.value = new GLayer(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"tileunload\", methods.onUnload);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n onUnmounted(() => {\n leafletRef.value.off(\"tileunload\", methods.unLoad);\n });\n\n return { root, ready, leafletObject: leafletRef };\n },\n render() {\n if (this.ready) {\n return h(\"div\", { style: { display: \"none\" }, ref: \"root\" });\n }\n return null;\n },\n};\n\nscript$9.__file = \"src/components/LGridLayer.vue\";\n\nconst props$f = {\n iconUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n iconAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n popupAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n tooltipAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n shadowUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n shadowAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n bgPos: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n className: {\n type: String,\n custom: true,\n default: \"\",\n },\n options: {\n type: Object,\n custom: true,\n default: () => ({}),\n },\n};\n\n/**\n * Icon component, lets you add and custom icons to the map\n */\nvar script$a = {\n name: \"LIcon\",\n props: {\n ...props$f,\n ...props,\n },\n setup(props, context) {\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const canSetParentHtml = inject(\"canSetParentHtml\");\n const setParentHtml = inject(\"setParentHtml\");\n const setIcon = inject(\"setIcon\");\n\n let onDomEvent;\n let offDomEvent;\n let divIcon;\n let icon;\n let iconObject = undefined;\n\n const createIcon = (el, recreationNeeded, htmlSwapNeeded) => {\n const elHtml = el && el.innerHTML;\n if (!recreationNeeded) {\n if (htmlSwapNeeded && iconObject && canSetParentHtml()) {\n setParentHtml(elHtml);\n }\n return;\n }\n\n const listeners = remapEvents(context.attrs);\n if (iconObject) {\n offDomEvent(iconObject, listeners);\n }\n\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n iconUrl: props.iconUrl,\n iconRetinaUrl: props.iconRetinaUrl,\n iconSize: props.iconSize,\n iconAnchor: props.iconAnchor,\n popupAnchor: props.popupAnchor,\n tooltipAnchor: props.tooltipAnchor,\n shadowUrl: props.shadowUrl,\n shadowRetinaUrl: props.shadowRetinaUrl,\n shadowSize: props.shadowSize,\n shadowAnchor: props.shadowAnchor,\n bgPos: props.bgPos,\n className: props.className,\n html: elHtml || props.html,\n };\n\n iconObject = options.html ? divIcon(options) : icon(options);\n onDomEvent(iconObject, listeners);\n setIcon(iconObject);\n };\n\n const scheduleCreateIcon = () => {\n nextTick(() => createIcon(root.value, true, false));\n };\n\n const scheduleHtmlSwap = () => {\n nextTick(() => createIcon(root.value, false, true));\n };\n\n const methods = {\n setIconUrl: scheduleCreateIcon,\n setIconRetinaUrl: scheduleCreateIcon,\n setIconSize: scheduleCreateIcon,\n setIconAnchor: scheduleCreateIcon,\n setPopupAnchor: scheduleCreateIcon,\n setTooltipAnchor: scheduleCreateIcon,\n setShadowUrl: scheduleCreateIcon,\n setShadowRetinaUrl: scheduleCreateIcon,\n setShadowAnchor: scheduleCreateIcon,\n setBgPos: scheduleCreateIcon,\n setClassName: scheduleCreateIcon,\n setHtml: scheduleCreateIcon,\n };\n\n onMounted(async () => {\n const { DomEvent, divIcon: lDivIcon, icon: lIcon } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n onDomEvent = DomEvent.on;\n offDomEvent = DomEvent.off;\n divIcon = lDivIcon;\n icon = lIcon;\n\n propsBinder(methods, {}, props);\n\n const observer = new MutationObserver(scheduleHtmlSwap);\n observer.observe(root.value, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n scheduleCreateIcon();\n });\n\n return { root };\n },\n render() {\n const content = this.$slots.default ? this.$slots.default() : undefined;\n return h(\"div\", { ref: \"root\" }, content);\n },\n};\n\nscript$a.__file = \"src/components/LIcon.vue\";\n\n/**\n * @typedef {import('leaflet/dist/leaflet-src.esm.js').LatLngBounds} LatLngBounds\n */\n\nconst props$g = {\n ...props$1,\n url: {\n type: String,\n required: true,\n },\n bounds: {\n type: [Array, Object],\n required: true,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n alt: {\n type: String,\n default: \"\",\n },\n interactive: {\n type: Boolean,\n default: false,\n },\n crossOrigin: {\n type: Boolean,\n default: false,\n },\n errorOverlayUrl: {\n type: String,\n custom: true,\n default: \"\",\n },\n zIndex: {\n type: Number,\n custom: true,\n default: 1,\n },\n className: {\n type: String,\n default: \"\",\n },\n};\n\nconst setup$f = (setupProps, LeafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n setupProps,\n LeafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...setupProps,\n };\n\n const methods = {\n ...layerMethods,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(opacity) {\n return LeafletRef.value.setOpacity(opacity);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(url) {\n return LeafletRef.value.setUrl(url);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(bounds) {\n return LeafletRef.value.setBounds(bounds);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return LeafletRef.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return LeafletRef.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return LeafletRef.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return LeafletRef.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(zIndex) {\n return LeafletRef.value.setZIndex(zIndex);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * ImageOverlay component, render a plain image instead of a geospatial map.\n */\nvar script$b = {\n name: \"LImageOverlay\",\n props: props$g,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$f(props, leafletRef, context);\n\n onMounted(async () => {\n const { imageOverlay, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = imageOverlay(props.url, props.bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$b.__file = \"src/components/LImageOverlay.vue\";\n\nvar script$c = {\n props: props$b,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods } = setup$b(props, leafletRef, context);\n\n onMounted(async () => {\n const { layerGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = layerGroup(props.options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$c.__file = \"src/components/LLayerGroup.vue\";\n\nvar script$d = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: {\n ...props,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array],\n default: () => [0, 0],\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number,\n default: 0,\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array,\n default: undefined,\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array,\n default: undefined,\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array,\n default: undefined,\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: false,\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object],\n default: \"EPSG3857\",\n },\n maxBoundsViscosity: {\n type: Number,\n default: undefined,\n },\n inertia: {\n type: Boolean,\n default: undefined,\n },\n inertiaDeceleration: {\n type: Number,\n default: undefined,\n },\n inertiaMaxSpeed: {\n type: Number,\n default: undefined,\n },\n easeLinearity: {\n type: Number,\n default: undefined,\n },\n zoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n zoomAnimationThreshold: {\n type: Number,\n default: undefined,\n },\n fadeAnimation: {\n type: Boolean,\n default: undefined,\n },\n markerZoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n noBlockingAnimations: {\n type: Boolean,\n default: false,\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, context) {\n const root = ref(null);\n const blueprint = reactive({\n ready: false,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: [],\n });\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n maxBounds: props.maxBounds,\n maxBoundsViscosity: props.maxBoundsViscosity,\n worldCopyJump: props.worldCopyJump,\n crs: props.crs,\n center: props.center,\n zoom: props.zoom,\n inertia: props.inertia,\n inertiaDeceleration: props.inertiaDeceleration,\n inertiaMaxSpeed: props.inertiaMaxSpeed,\n easeLinearity: props.easeLinearity,\n zoomAnimation: props.zoomAnimation,\n zoomAnimationThreshold: props.zoomAnimationThreshold,\n fadeAnimation: props.fadeAnimation,\n markerZoomAnimation: props.markerZoomAnimation,\n };\n\n const addLayer = provideLeafletWrapper(\"addLayer\");\n const removeLayer = provideLeafletWrapper(\"removeLayer\");\n const registerControl = provideLeafletWrapper(\"registerControl\");\n const registerLayerControl = provideLeafletWrapper(\"registerLayerControl\");\n provide(GLOBAL_LEAFLET_OPT, props.useGlobalLeaflet);\n\n const eventHandlers = {\n moveEndHandler() {\n /**\n * Triggers when zoom is updated\n * @type {number,string}\n */\n context.emit(\"update:zoom\", blueprint.leafletRef.getZoom());\n /**\n * Triggers when center is updated\n * @type {object,array}\n */\n context.emit(\"update:center\", blueprint.leafletRef.getCenter());\n\n /**\n * Triggers when bounds are updated\n * @type {object}\n */\n context.emit(\"update:bounds\", blueprint.leafletRef.getBounds());\n },\n overlayAddHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(true);\n }\n },\n overlayRemoveHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(false);\n }\n },\n };\n\n onMounted(async () => {\n if (props.useGlobalLeaflet) {\n WINDOW_OR_GLOBAL.L = WINDOW_OR_GLOBAL.L || (await import('leaflet'));\n }\n const {\n map,\n CRS,\n Icon,\n latLngBounds,\n latLng,\n DomEvent,\n } = props.useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n try {\n options.beforeMapMount && (await options.beforeMapMount());\n } catch (error) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${error.message}`\n );\n }\n\n await resetWebpackIcon(Icon);\n\n const optionsCrs =\n typeof options.crs == \"string\" ? CRS[options.crs] : options.crs;\n options.crs = optionsCrs || CRS.EPSG3857;\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd.push(layer);\n } else {\n const exist = blueprint.layersInControl.find(\n (l) =>\n l.leafletObject._leaflet_id ===\n layer.leafletObject._leaflet_id\n );\n if (!exist) {\n blueprint.layerControl.addLayer(layer);\n blueprint.layersInControl.push(layer);\n }\n }\n }\n if (layer.visible !== false) {\n blueprint.leafletRef.addLayer(layer.leafletObject);\n }\n },\n removeLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd = blueprint.layersToAdd.filter(\n (l) => l.name !== layer.name\n );\n } else {\n blueprint.layerControl.removeLayer(layer.leafletObject);\n blueprint.layersInControl = blueprint.layersInControl.filter(\n (l) =>\n l.leafletObject._leaflet_id !==\n layer.leafletObject._leaflet_id\n );\n }\n }\n blueprint.leafletRef.removeLayer(layer.leafletObject);\n },\n\n registerLayerControl(lControlLayer) {\n blueprint.layerControl = lControlLayer;\n blueprint.layersToAdd.forEach((layer) => {\n blueprint.layerControl.addLayer(layer);\n });\n blueprint.layersToAdd = [];\n\n registerControl(lControlLayer);\n },\n\n registerControl(lControl) {\n blueprint.leafletRef.addControl(lControl.leafletObject);\n },\n\n setZoom(newVal) {\n const zoom = blueprint.leafletRef.getZoom();\n if (newVal !== zoom) {\n blueprint.leafletRef.setZoom(newVal, {\n animate: props.noBlockingAnimations ? false : null,\n });\n }\n },\n\n setPaddingBottomRight(newVal) {\n blueprint.paddingBottomRight = newVal;\n },\n setPaddingTopLeft(newVal) {\n blueprint.paddingTopLeft = newVal;\n },\n setPadding(newVal) {\n blueprint.padding = newVal;\n },\n setCrs(newVal) {\n const prevBounds = blueprint.leafletRef.getBounds();\n blueprint.leafletRef.options.crs = newVal;\n blueprint.leafletRef.fitBounds(prevBounds, {\n animate: false,\n padding: [0, 0],\n });\n },\n fitBounds(bounds) {\n blueprint.leafletRef.fitBounds(bounds, {\n animate: this.noBlockingAnimations ? false : null,\n });\n },\n setBounds(newVal) {\n if (!newVal) {\n return;\n }\n const newBounds = latLngBounds(newVal);\n if (!newBounds.isValid()) {\n return;\n }\n const oldBounds =\n blueprint.lastSetBounds || blueprint.leafletRef.getBounds();\n const boundsChanged = !oldBounds.equals(newBounds, 0); // set maxMargin to 0 - check exact equals\n if (boundsChanged) {\n blueprint.lastSetBounds = newBounds;\n blueprint.leafletRef.fitBounds(newBounds, this.fitBoundsOptions);\n }\n },\n\n setCenter(newVal) {\n if (newVal == null) {\n return;\n }\n const newCenter = latLng(newVal);\n const oldCenter =\n blueprint.lastSetCenter || blueprint.leafletRef.getCenter();\n if (\n oldCenter.lat !== newCenter.lat ||\n oldCenter.lng !== newCenter.lng\n ) {\n blueprint.lastSetCenter = newCenter;\n blueprint.leafletRef.panTo(newCenter, {\n animate: this.noBlockingAnimations ? false : null,\n });\n }\n },\n };\n\n updateLeafletWrapper(addLayer, methods.addLayer);\n updateLeafletWrapper(removeLayer, methods.removeLayer);\n updateLeafletWrapper(registerControl, methods.registerControl);\n updateLeafletWrapper(registerLayerControl, methods.registerLayerControl);\n\n blueprint.leafletRef = map(root.value, options);\n\n propsBinder(methods, blueprint.leafletRef, props);\n const listeners = remapEvents(context.attrs);\n\n blueprint.leafletRef.on(\n \"moveend\",\n debounce(eventHandlers.moveEndHandler, 100)\n );\n blueprint.leafletRef.on(\"overlayadd\", eventHandlers.overlayAddHandler);\n blueprint.leafletRef.on(\n \"overlayremove\",\n eventHandlers.overlayRemoveHandler\n );\n DomEvent.on(blueprint.leafletRef, listeners);\n blueprint.ready = true;\n nextTick(() => context.emit(\"ready\", blueprint.leafletRef));\n });\n\n onBeforeUnmount(() => {\n if (blueprint.leafletRef) {\n blueprint.leafletRef.remove();\n }\n });\n\n const leafletObject = computed(() => blueprint.leafletRef);\n const ready = computed(() => blueprint.ready);\n return { root, ready, leafletObject };\n },\n render() {\n return h(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready ? this.$slots.default() : {}\n );\n },\n};\n\nscript$d.__file = \"src/components/LMap.vue\";\n\nconst props$h = {\n ...props$1,\n pane: {\n type: String,\n default: \"markerPane\",\n },\n draggable: {\n type: Boolean,\n custom: true,\n default: false,\n },\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n icon: {\n type: [Object],\n default: () => undefined,\n custom: false,\n },\n zIndexOffset: {\n type: Number,\n custom: false,\n default: null,\n },\n};\n\nconst setup$g = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerMethods,\n setDraggable(value) {\n if (leafletRef.value.dragging) {\n value\n ? leafletRef.value.dragging.enable()\n : leafletRef.value.dragging.disable();\n }\n },\n latLngSync(event) {\n context.emit(\"update:latLng\", event.latlng);\n context.emit(\"update:lat-lng\", event.latlng);\n },\n setLatLng(newVal) {\n if (newVal == null) {\n return;\n }\n\n if (leafletRef.value) {\n const oldLatLng = leafletRef.value.getLatLng();\n if (!oldLatLng || !oldLatLng.equals(newVal)) {\n leafletRef.value.setLatLng(newVal);\n }\n }\n },\n };\n return { options, methods };\n};\n\n/**\n * Marker component, lets you add and personalize markers on the map\n */\nvar script$e = {\n name: \"LMarker\",\n props: props$h,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n provide(\"canSetParentHtml\", () => !!leafletRef.value.getElement());\n provide(\n \"setParentHtml\",\n (html) => (leafletRef.value.getElement().innerHTML = html)\n );\n provide(\n \"setIcon\",\n (newIcon) => leafletRef.value.setIcon && leafletRef.value.setIcon(newIcon)\n );\n const { options, methods } = setup$g(props, leafletRef, context);\n if (options.icon === undefined) {\n // If the options objection has a property named 'icon', then Leaflet will overwrite\n // the default icon with it for the marker, _even if it is undefined_.\n // This leads to the issue discussed in https://github.com/vue-leaflet/vue-leaflet/issues/130\n delete options.icon;\n }\n\n onMounted(async () => {\n const { marker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = marker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"move\", debounce(methods.latLngSync, 100));\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$e.__file = \"src/components/LMarker.vue\";\n\nconst props$i = {\n ...props$3,\n latLngs: {\n type: Array,\n default: () => [],\n },\n smoothFactor: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n noClip: {\n type: Boolean,\n custom: true,\n default: false,\n },\n};\n\nconst setup$h = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n\n const methods = {\n ...pathMethods,\n setSmoothFactor(smoothFactor) {\n leafletRef.value.setStyle({ smoothFactor });\n },\n setNoClip(noClip) {\n leafletRef.value.setStyle({ noClip });\n },\n addLatLng(latLng) {\n leafletRef.value.addLatLng(latLng);\n },\n };\n return { options, methods };\n};\n\nconst props$j = {\n ...props$i,\n};\n\nconst setup$i = (props, leafletRef, context) => {\n const { options: polylineOptions, methods: polylineMethods } = setup$h(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polylineOptions,\n ...props,\n };\n\n const methods = {\n ...polylineMethods,\n toGeoJSON(precision) {\n return leafletRef.value.toGeoJSON(precision);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Polygon component, lets you add and customize polygon regions on the map\n */\nvar script$f = {\n name: \"LPolygon\",\n props: props$j,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$i(props, leafletRef, context);\n\n onMounted(async () => {\n const { polygon, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polygon(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$f.__file = \"src/components/LPolygon.vue\";\n\n/**\n * Polyline component, lets you add and personalize polylines on the map\n */\nvar script$g = {\n name: \"LPolyline\",\n props: props$i,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$h(props, leafletRef, context);\n\n onMounted(async () => {\n const { polyline, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polyline(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$g.__file = \"src/components/LPolyline.vue\";\n\nconst props$k = {\n ...props,\n content: {\n type: String,\n default: null,\n },\n};\n\nconst setup$j = (props, leafletRef) => {\n const { options, methods: componentMethods } = setup(props);\n const methods = {\n ...componentMethods,\n setContent(newVal) {\n if (leafletRef.value && newVal !== null && newVal !== undefined) {\n leafletRef.value.setContent(newVal);\n }\n },\n };\n return { options, methods };\n};\n\nconst render$2 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nconst props$l = {\n ...props$k,\n latLng: {\n type: [Object, Array],\n default: () => [],\n },\n};\n\nconst setup$k = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindPopup = inject(\"unbindPopup\");\n\n onBeforeUnmount(() => {\n unbindPopup();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a popup on the map\n */\nvar script$h = {\n name: \"LPopup\",\n props: props$l,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindPopup = inject(\"bindPopup\");\n\n const { options, methods } = setup$k(props, leafletRef);\n\n onMounted(async () => {\n const { popup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = popup(options);\n\n if (props.latLng !== undefined) {\n leafletRef.value.setLatLng(props.latLng);\n }\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindPopup({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$h.__file = \"src/components/LPopup.vue\";\n\nconst props$m = {\n ...props$j,\n bounds: {\n type: Array,\n default: undefined,\n },\n};\n\nconst setup$l = (props, leafletRef, context) => {\n const { options: polygonOptions, methods: polygonMethods } = setup$i(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polygonOptions,\n ...props,\n };\n\n const methods = {\n ...polygonMethods,\n setBounds(latLngBounds) {\n leafletRef.value.setBounds(latLngBounds);\n },\n setLatLngs(latLngs) {\n // Calling setLatLngs on a Leaflet rectangle will convert it\n // to a polygon. So instead, we call setBounds here to ensure\n // that the rectangle remains a rectangle, defined by the\n // bounds of the points in the latLngs array.\n leafletRef.value.setBounds(latLngs);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Rectangle component, lets you add and customize rectangular regions on the map\n */\nvar script$i = {\n name: \"LRectangle\",\n props: props$m,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$l(props, leafletRef, context);\n\n onMounted(async () => {\n const { rectangle, latLngBounds, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const bounds =\n props.bounds && props.bounds.length\n ? latLngBounds(props.bounds)\n : latLngBounds(props.latLngs);\n leafletRef.value = rectangle(bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$i.__file = \"src/components/LRectangle.vue\";\n\nconst props$n = {\n ...props$e,\n tms: {\n type: Boolean,\n default: false,\n },\n subdomains: {\n type: String,\n default: \"abc\",\n },\n detectRetina: {\n type: Boolean,\n default: false,\n },\n url: {\n type: String,\n default: null,\n },\n};\n\nconst setup$m = (props, leafletRef) => {\n const {\n options: gridLayerOptions,\n methods: gridLayerMethods,\n } = setup$e(props, leafletRef);\n const options = {\n ...gridLayerOptions,\n tms: props.tms,\n subdomains: props.subdomains,\n detectRetina: props.detectRetina,\n };\n return {\n options,\n methods: {\n ...gridLayerMethods,\n },\n };\n};\n\nvar script$j = {\n props: props$n,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$m(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = tileLayer(props.url, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { leafletObject: leafletRef };\n },\n render() {\n return null;\n },\n};\n\nscript$j.__file = \"src/components/LTileLayer.vue\";\n\nconst props$o = {\n ...props$k,\n};\n\nconst setup$n = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindTooltip = inject(\"unbindTooltip\");\n\n onBeforeUnmount(() => {\n unbindTooltip();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a tooltip on the map\n */\nvar script$k = {\n name: \"LTooltip\",\n props: props$o,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindTooltip = inject(\"bindTooltip\");\n\n const { options, methods } = setup$n(props, leafletRef);\n\n onMounted(async () => {\n const { tooltip, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tooltip(options);\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindTooltip({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$k.__file = \"src/components/LTooltip.vue\";\n\nconst props$p = {\n ...props$n,\n baseUrl: {\n type: String,\n default: null,\n required: true,\n },\n layers: {\n type: String,\n default: \"\",\n },\n styles: {\n type: String,\n default: \"\",\n },\n format: {\n type: String,\n default: \"image/jpeg\",\n },\n transparent: {\n type: Boolean,\n custom: false,\n },\n version: {\n type: String,\n default: \"1.1.1\",\n },\n crs: {\n default: null,\n },\n upperCase: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$o = (props, leafletRef) => {\n const {\n options: tileLayerOptions,\n methods: tileLayerMethods,\n } = setup$m(props, leafletRef);\n const options = {\n ...tileLayerOptions,\n layers: props.layers,\n styles: props.styles,\n format: props.format,\n transparent: props.transparent,\n version: props.version,\n crs: props.crs,\n upperCase: props.upperCase,\n };\n return {\n options,\n methods: {\n ...tileLayerMethods,\n },\n };\n};\n\nvar script$l = {\n props: props$p,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$o(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tileLayer.wms(props.baseUrl, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$l.__file = \"src/components/LWmsTileLayer.vue\";\n\nexport { script as LCircle, script$1 as LCircleMarker, script$2 as LControl, script$3 as LControlAttribution, script$4 as LControlLayers, script$5 as LControlScale, script$6 as LControlZoom, script$7 as LFeatureGroup, script$8 as LGeoJson, script$9 as LGridLayer, script$a as LIcon, script$b as LImageOverlay, script$c as LLayerGroup, script$d as LMap, script$e as LMarker, script$f as LPolygon, script$g as LPolyline, script$h as LPopup, script$i as LRectangle, script$j as LTileLayer, script$k as LTooltip, script$l as LWmsTileLayer };\n//# sourceMappingURL=vue-leaflet.esm.js.map\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b490f5d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates }\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n function getBounds() {\n return props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n }\n function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6b490f5d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b490f5d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40fe2f7b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates }\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n )\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=40fe2f7b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-40fe2f7b\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record,\n options: Record\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dcea1168\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = { class: \"elevation-start\" }\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n\n \n\n \n\n const { t } = useI18n()\n\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t, props.authUser.imperial_units)\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n [displayDistance.value ? 'xDistance' : 'xDuration']: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ` (${fromKmUnit})`\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/h`\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\n })\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=dcea1168&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dcea1168\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-028ad527\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null }\n\n \n\n const { notes } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(notes) && _unref(notes) !== '' ? _unref(notes) : _ctx.$t('workouts.NO_NOTES')), 1)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=028ad527&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-028ad527\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(segments), (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b8a27cd\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53c4e53a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n }\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53c4e53a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c38593a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: handleFilterChange\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=6c38593a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6c38593a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7637d6de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n capitalize,\n onBeforeMount,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\n )\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(format)(\n _unref(getDateWithTZ)(workout.workout_date, _unref(user).timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createVNode(_component_Distance, {\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=7637d6de&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7637d6de\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77e54012\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nimport { ComputedRef, computed, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=77e54012&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77e54012\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_createTextVNode","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","withGpx","ref","with_gpx","gpxFile","formErrors","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","formatPayload","payload","updateWorkout","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","commit","file","onCancel","push","name","params","go","invalidateForm","onMounted","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","document","createElement","href","setAttribute","body","appendChild","click","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","_component_Distance","wind","unitFrom","digits","displayUnit","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","Number","temperature","humidity","WeatherWind","displayHARecord","withPause","pauses","moving","WorkoutRecord","strong","aveSpeed","speed","maxSpeed","maxAlt","minAlt","ascent","descent","WorkoutWeather","$","element","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","length","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","includes","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","debounce","fn","timeout","args","context","this","clearTimeout","setTimeout","apply","capitalizeFirstLetter","string","charAt","toUpperCase","slice","propsBinder","methods","leafletElement","setMethodName","newVal","oldVal","remapEvents","contextAttrs","attrName","startsWith","eventName","toLocaleLowerCase","resetWebpackIcon","Icon","modules","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","provideLeafletWrapper","methodName","wrapped","console","warn","wrapper","updateLeafletWrapper","leafletMethod","WINDOW_OR_GLOBAL","self","g","global","undefined","GLOBAL_LEAFLET_OPT","options","props$1","pane","String","attribution","custom","layerType","visible","setup$1","leafletRef","addLayer","removeLayer","componentOptions","componentMethods","addThisLayer","leafletObject","removeThisLayer","setAttribution","old","attributionControl","$parent","removeAttribution","addAttribution","setName","setLayerType","setVisible","isVisible","bindPopup","bindTooltip","unbindTooltip","tooltip","getTooltip","unbindPopup","popup","getPopup","updateVisibleProp","render","ready","slots","h","display","props$2","interactive","bubblingMouseEvents","props$3","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","props$4","latLng","radius","props$6","position","setup$6","setPosition","remove","render$1","script$2","disableClickPropagation","disableScrollPropagation","root","useGlobalLeaflet","registerControl","Control","DomEvent","L","LControl","extend","onAdd","$slots","props$8","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","setup$8","controlOptions","layer","addBaseLayer","addOverlay","script$4","registerLayerControl","control","layers","props$b","setup$b","layerOptions","layerMethods","props$d","geojson","setup$d","layerGroupMethods","setGeojson","clearLayers","addData","getGeoJSONData","toGeoJSON","getBounds","script$8","geoJSON","listeners","attrs","on","props$e","zIndex","tileSize","noWrap","minZoom","maxZoom","setup$e","props$f","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","script$a","canSetParentHtml","setParentHtml","setIcon","onDomEvent","offDomEvent","divIcon","iconObject","createIcon","el","recreationNeeded","htmlSwapNeeded","elHtml","innerHTML","html","scheduleCreateIcon","scheduleHtmlSwap","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setClassName","setHtml","lDivIcon","lIcon","off","observer","MutationObserver","observe","attributes","childList","characterData","subtree","script$c","layerGroup","script$d","center","bounds","maxBounds","zoom","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","blueprint","layersToAdd","layersInControl","eventHandlers","moveEndHandler","getZoom","getCenter","overlayAddHandler","e","l","overlayRemoveHandler","CRS","latLngBounds","beforeMapMount","error","optionsCrs","EPSG3857","layerControl","exist","_leaflet_id","filter","lControlLayer","forEach","lControl","addControl","setZoom","animate","setPaddingBottomRight","setPaddingTopLeft","setPadding","setCrs","prevBounds","fitBounds","setBounds","newBounds","isValid","oldBounds","lastSetBounds","boundsChanged","equals","fitBoundsOptions","setCenter","newCenter","oldCenter","lastSetCenter","lat","lng","panTo","height","props$h","draggable","zIndexOffset","setup$g","setDraggable","dragging","enable","disable","latLngSync","latlng","setLatLng","oldLatLng","getLatLng","script$e","getElement","newIcon","marker","props$i","latLngs","smoothFactor","noClip","props$j","props$k","props$n","tms","subdomains","detectRetina","url","setup$m","gridLayerOptions","gridLayerMethods","script$j","tileLayer","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","deleteWorkout","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","Error","htmlLegendPlugin","afterUpdate","chart","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","li","onclick","datasetIndex","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","datasets","getDatasets","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","elevation","responsive","maintainAspectRatio","animation","layout","top","scales","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","yElevation","beginAtZero","elements","pointStyle","pointRadius","datalabels","interaction","intersect","mode","callbacks","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","lineChartProps","useLineChart","updateDisplayDistance","Date","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","s","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","keys","k","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","format","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee_client/package.json b/fittrackee_client/package.json index 69b2e4fd..e5504278 100644 --- a/fittrackee_client/package.json +++ b/fittrackee_client/package.json @@ -1,6 +1,6 @@ { "name": "fittrackee_client", - "version": "0.7.0", + "version": "0.7.1", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/pyproject.toml b/pyproject.toml index 59bdea8f..ce816f7e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fittrackee" -version = "0.7.0" +version = "0.7.1" description = "Self-hosted outdoor workout/activity tracker" authors = ["SamR1"] license = "AGPL-3.0"