From 7802abae213fd5d6139fd6f147b25723840dee61 Mon Sep 17 00:00:00 2001 From: Arghya Ghosh <71373838+uiuxarghya@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:51:34 +0530 Subject: [PATCH 01/18] fix(docs): Update text color in flowchart captions for consistency --- content/docs/for-loop.mdx | 2 +- content/docs/if-else-statement.mdx | 4 ++-- content/docs/introduction.mdx | 7 ++----- content/docs/switch-statement.mdx | 2 +- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/content/docs/for-loop.mdx b/content/docs/for-loop.mdx index 80e0fa47..42538283 100644 --- a/content/docs/for-loop.mdx +++ b/content/docs/for-loop.mdx @@ -38,7 +38,7 @@ To learn more about the conditions, visit [Java relational](operators#3-java-rel  -
+
Flowchart of Java for loop
diff --git a/content/docs/if-else-statement.mdx b/content/docs/if-else-statement.mdx index e7db83be..222f09d0 100644 --- a/content/docs/if-else-statement.mdx +++ b/content/docs/if-else-statement.mdx @@ -32,7 +32,7 @@ Here, `condition` is a boolean expression such as `age >= 18`.  -+
Working of Java if statement
@@ -120,7 +120,7 @@ Here, the program will do one task (codes inside if block) if the condition is t+
Working of Java if-else statements
diff --git a/content/docs/introduction.mdx b/content/docs/introduction.mdx index a6cfd72a..f99f47b8 100644 --- a/content/docs/introduction.mdx +++ b/content/docs/introduction.mdx @@ -1,5 +1,5 @@ --- -title: Introduction +title: Introduction to Java description: A quick introduction to Java programming language - features, applications, and getting started guide for beginners icon: Album --- @@ -79,10 +79,7 @@ Besides these applications, Java is also used for game development, scientific a #### 1. Learn Java from Javaistic - - Javaistic - -offers a complete series of easy to follow Java tutorials along with suitable +Javaistic offers a complete series of easy to follow Java tutorials along with suitable examples. These tutorials are targeted for absolute beginners with no prior knowledge of Java programming language. diff --git a/content/docs/switch-statement.mdx b/content/docs/switch-statement.mdx index 99fe64e0..e861c635 100644 --- a/content/docs/switch-statement.mdx +++ b/content/docs/switch-statement.mdx @@ -106,7 +106,7 @@ Here, the `size` variable is assigned with the value `Large`.  -+
Flow chart of the Java switch statement
From c8a548a7e2572a093299ba343b75e98d154ffdf8 Mon Sep 17 00:00:00 2001 From: Arghya Ghosh <71373838+uiuxarghya@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:53:11 +0530 Subject: [PATCH 02/18] feat(hooks): Add custom hook for managing dark mode state --- src/hooks/useDarkMode.ts | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/hooks/useDarkMode.ts diff --git a/src/hooks/useDarkMode.ts b/src/hooks/useDarkMode.ts new file mode 100644 index 00000000..0eb2d4ef --- /dev/null +++ b/src/hooks/useDarkMode.ts @@ -0,0 +1,57 @@ +import { useCallback, useEffect, useState } from "react"; + +/** + * Custom hook for detecting and managing dark mode state + * Handles system preferences, local storage, and class/attribute changes + */ +export function useDarkMode() { + const [isDarkMode, setIsDarkMode] = useState(false); + const [mounted, setMounted] = useState(false); + + // Optimized theme detection + const checkDarkMode = useCallback(() => { + if (typeof window === "undefined") return; + + const hasDarkClass = document.documentElement.classList.contains("dark"); + const dataTheme = document.documentElement.getAttribute("data-theme"); + const systemPrefersDark = window.matchMedia( + "(prefers-color-scheme: dark)", + ).matches; + const savedTheme = localStorage.getItem("theme"); + + const isDark = + savedTheme === "dark" || + dataTheme === "dark" || + hasDarkClass || + (savedTheme !== "light" && dataTheme !== "light" && systemPrefersDark); + + setIsDarkMode(isDark); + }, []); + + useEffect(() => { + setMounted(true); + checkDarkMode(); + + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + mediaQuery.addEventListener("change", checkDarkMode); + + const observer = new MutationObserver(checkDarkMode); + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ["class", "data-theme"], + }); + + const handleStorageChange = (e: StorageEvent) => { + if (e.key === "theme") checkDarkMode(); + }; + window.addEventListener("storage", handleStorageChange); + + return () => { + mediaQuery.removeEventListener("change", checkDarkMode); + observer.disconnect(); + window.removeEventListener("storage", handleStorageChange); + }; + }, [checkDarkMode]); + + return { isDarkMode, mounted }; +} From c6e115166badca45752f4565b76a63783d26c7f8 Mon Sep 17 00:00:00 2001 From: Arghya Ghosh <71373838+uiuxarghya@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:53:44 +0530 Subject: [PATCH 03/18] feat(components\home): Add BackgroundSection component with dark mode support --- public/bg.webp | Bin 0 -> 292138 bytes src/components/home/background-section.tsx | 38 +++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 public/bg.webp create mode 100644 src/components/home/background-section.tsx diff --git a/public/bg.webp b/public/bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..2cb57e20306bae509bb0f797f06a05f3e53f9fc5 GIT binary patch literal 292138 zcmeFXQ;;TI*Dd;#ZQHihW!tuGc2{-TW|wW-wr#7+uIe(L-S78Z{Cl4`mpjhQc{3t& zjWySdxmISZj5%`5RFRgDAaw@^Xo`y{X((}P!2$pP`oAX-3GfUJkQNnHg2nsW1>nKj zncBO8G6Mki4sI?gk|M-f+B(EgO8{s90stO>3V<{=b#;Kxza&?Smt-V!z>Ki+_KHs+y5WTL?t&XojEayw-Mxq*$Kz)bb8(w_jxA zbDs5{UJ>LQGj?(}O}e~){&N)rSt2~iVvymS;V(H&t3Iqmhr(zqWe$g# zqik@V>=?8fhA3vD ( yydRq-}Q%aMoQajL>DQSUkkkw;hV zLE^=zjFm;Jw-;hy#9zT@c#%e+5$gnHBHXjBk5^F(pMp5#cO!fg%ur2i8@Tp Q_+xtesduLkzlEjb>h=%sGrhnqpBn+Lw2Fvae<1 zm_^$)Jr7%!P8dL`!XCD^WbJxTfYt$EpF39$C!BMMai+If?C_CMJmF2_f1 Ga^U z--q(Sw>XIqEj!WW&fKoAmA!9t^mLLGG9L2Iap@I#n27%4` qTLU6GC6%u`>a z$! ^B z)bAyvV^StT`}n`7wOMGM)HcTIy%J`BX&~%SQI7ZYwvTXMNRjt{(dZgT01k}&2Ct=M z??FXLs3+4f&gTNNp+jCpIlcG`Mh92!l0qms?5rBgUsLdtJay z@;zrgJR~f=GWxLgn CVC7@Z8o)(~08dSku#6 iPj}=i9vSeN4X*L6qK*{|o7QesH(yh- zlGg9Xuuw|IQ$Ln0uCG4kwZT}0x)`3!0*L=8MrrQW@xc37{#7F8zPahrdi9F)?hfJSSswF z=w&jMz29j?%uj!~96gC#N)IOoYa0gN=3Xi28f@Xqqy)~M;8!l1!}{6O_7zhW;S6ib zbx2U(ylsTuO=d9DVn`hD+cCZehoeeP)O2G32C|w?FX@B?I+V?4JJ+Li;=M(-Shbyx zg;{fa{$yz1z=)Qno0NYkOQ@mdhk)$AD1cavXqf6HY ?^VOF^|0$Qed;CBXBrLmA4aV8D51biQ1150x|r1aWh; zaCAaZ*^#lc7h+(XT!57D+?e{EA;<^`suD2TMqXka6oF`Rd*rSLju@sp@QrY~e@S8x zrR!e0STWnV^`t$N+Du`9=<`(ykJQ>2$c#6Npc}J3Ou@A_Ozq-NHLId4b>6MbP#vZg z_x6 CgART@%02V?6eQ?XIE|fj|>h>(;IRn2N zAx-Jo5WZ$K!%<`C*2R{!K3>mSdUOxr=h}f?#Y+r}b0@ps@1iX!ljKq;6d ;~8OCWY#h?1GVhP$1D+*RYZ s7itEUaP3aXk8 z%glgi#_E&c8?JObX;^6z;%1oV0jd-uyON<_JPR0kP)2j@Fy!Gej?7|%r?|zxJBaeh zbRoT4<{Y@h+w@J#UI=tQk^JyiRE+btBloEU?-^mH=2+U3HZN|8nUWesNFBLx9UxKQ z0_rn}T{ 3R=Ysktn2mG6`B_q*je-Dt5Y$ZJd-HBXWK|9jSCAz#8*|PgLRd zI|K>NcB|t=IQkPJa9ah>dy4o&;1>zZAbvHlw#kfa{LPuW@=!nW3Bp43N{$SFzhw;* zOivqn)ygO| D#LgOS z8$(F`5E?CxwU~KBhiYGdaRxH{R9xWVg(j)vmBo~8NJ{fsvIj|u2Af2#JX}lpZV}uB z7wPirf!My%T&+u`m~!8wVq{$iVS|WOn3jIdl@bUzz92L 8p9>z;|sk*WM}SAn8@ay3-ipgJ%(o%D3|YyHee(^4IM@} zsx*xoC6<#Fngn-8(>Ob(jorh-H> r*j1Pk}Au<6H*dmKWqqUyN} zcfIVnl!PU%Y*HC(sC|hPL^B0%7kwpZLjOsQLtCz G^Vt|I}-#BU6X(@MsV-q1>DG z$`L;pWbss$L28zeyGlAKIE+#^$Y+?3v-L0lJysfQjLR2RQk#rwy19?cgtVlDlcPq# zg4DvNXo)rvfI{08B?*<>{c>7d7Zmm^G{r?tV~qn~HE}*_fnQQLI6RWWIfXQ1+}j2m zQ!n}W)}RsMq1snOl=+z?j7`SUuSph>4iMfx^i9PLed1aX(N8`G58n+Pa(Fa6h)OB7 zuIAy;ap}5DavNwP^V;pwJ;bdiQXcSG`A~8N4Sf*w#k9d~&IjYp2L+l<@ZR4MwxsVi z*_C-%0oS@nEhn7myq?#NA0T*XB&I?* p%fT`Ah*}o~2nd;>?ocAT)UD6xdT+DTdzZu$As~ouJ)qw+)g%f@7@V>Dq0e6Z zi{X9eEXE-)po++Ir_a2dJ@0aR9S?197&F^l9@>0xN^L=YU1z=kr(ib$;kAq=75CNn zNgIh#36W#55M5f)TwuX~)TPV}+HudG*DI{1Snd4nPU4oG^%!tx pGTg2kfe#?V!fW;C89bF6fL{uCa;?4kDrJZ>l$Z zx6iUr3&DAqt7U$OqGbVTLv}2k-I&T%Y*>s%w*lebv(z`r`*~bQcut)yDO#IgCG>U8 zd-{e1N^RMG?Gi=0aQMb!IDz?d&cEx8whG}haf}$3?4#Jp=@WGEev313vB#1LK+lcQ z2KT;9T|)XBA`oB5AFPG$GtQjvqPA}`U9Q_b85ytn@5>*0(nWP3VG1fAh*M!UnKs;H zYfh{}$~pP&QF7aQ;r%2{JR=1eRtXz$5-QI2wOsgH(*pR?#_)3$TgEaKv_<~5cb9ZO zDQ(;^>}!U$<`5Jygojq#H4=r)#jor*kyV@Q%VT_lm+K|{$fU_jLzaA8M`mg-bYV CfV}5N5R7Ha^{i{_^$9`epZrOmDid)8Z%HQ)`E{c6fQYg|er-vchsYM#$y@Xx zHFRpQ2{g17-T2t1H3C=ieeY^qEs-CT>&tK@doPw21a5261pruk#?Li!tB!?nX9I2( zvZnz#o4%+DY+g3AX~^1O&{m_(RyvFktCRc>;(~(Siwe>TgS<%}xvy{F2M2;xUy34z zEu2CYg6>Hqv|JrOf0a`qt{mLhQYAl272JHt19}oxPcC(8-uq{e&h$4_?Y~*q;bIyg z8G>qr!x`yl$718D7O2Zp-v83{iankPj@z***B3VTQ)XLc4EYhMtO1&Fyk@%84N~R- zL+_p*0k5yM8Fia84rtUhp`^J*vOy<&bkOfIrUSE4ruiPrz*YJ@7g+~`Um>$~u|z9C zw&DQuy8yz%w8Wp$e(NHlU4doz2=s|Tg@i`-q6RZJ9D2>Jq5Nj~8;`D#y7rci9^ Q~}Rn&pmJek#P7LSpeTl?z^P%%h|Obz2m`&gbwpST*4 zn?21+s{wvD-ikX;8C1MU(LJwXBueG*C*%lNpvFFyBLlg@8Kn@WrsC#^t&}P9P4}e@ zh|And)%A__gTX-$6fMO#YeZJIFQZpB6ssv6FA>LI)>3iiekF^u3Q^Kh?x=bUohBtg zgISv8dmMr%)T^4?o&_``vldzBJd}+>LrZgq${1ch$`s`@BlYJK!VubL20+B&Xcy?t z+g>8}2#M-CkIr#E_|ake(lb#Uy}=%}COoxGP42-PA({%o5gb8&p|&38BE57ggfgIK z(g(S}`=-4-)!F}6@N;OH@#^7AW$I)LVy%(WH3<0w1wg9fqen758?*E50|!eKGWHLB z8w0!6;_{!9(RIu_>U55k9+lp6`fQZNP$lPv**X*L|F#*Et gaV?FlSao1pV;66rFv6&)h!^P7b@-}>> z28Gm{(-Gb^=wD~^*qqFbbJaJ*;g>LNPE5zzwQsV%c-!I`c*jDOf=$$m8|J*T8ogNs zhwh BksN2LJ$Vz}tmlCeTMIn5xVqcIAO1zemb|B+CbV&6d)ByDPGN-~Uv3Bw z>0(1H2jYs(!PbNNKSAb@;&rpAl5mWzq&Cwe**K+kSFqEhZwFg|TonNrKPXR4QkPNF z_^Tb`TS43F1z`^7a6tbc`}>699> 6GSC55 bBaF>HJ8H3!Y$9M`v?;ger)U8Q9NHG z7SP80?qcL_Z$!(@5*tUzZNa+I^cmRso+^lrL3Ap%p%93M$*-YB5hBR4gpV-|0dpG^ z-E*)1tsm0SG>t9nM8}&F)UVmmW=&w%SHK6!sAN3rZ1ON6or%(lPssXLDSX5T!=dRP zj4@cxA{K#kjhA+N2mcVEk2Gzd{mzw&N4YpHn@W^Lc;JT5r|lp^$F+JSDU5{wTF-tG zjHfiEJ9Ju{8%;sRyqH|FNSq4rJZ=EW`SHH*d8-|SE~_u)#@3N07NlZtDKukUoWL|n zHq=MY>wf_+K+wNHoLB)Q`Zuwx2vapO;D_EB#25FC2zIZQ)PYi~W5l^ormL(|@m{MY zx+y@M)hLfV>2p?#`X&KCsCuJ#yAk}9#2H5=p%Aa6;F*cYoK1I0%Di+}SI<75cuwV$ z_epiFxfFdEHs2_$4hkTSV_hLoODs&2z^zTfVqw?`ioX>XHdVs`9U&Frie0 =79@eS%Ot4ylk7du%D&rlb( I_skXP zB;x&aiPd4k&%N0+x^w! |w+es!Owoa)gD+#0zX2wIfy?l<3n<_t%H;|vHQ+aSps7c!=y|+W? zC1lY4nc$)w4+0dvS^Q8;G%m7Pu`_Hv#=>lnX0qQ_a)!16gMuPo<-LPVvo5rM(MGIB z2HTuhA$^2?qjZ|IwgPFzht`DCeEG4O570jC#DT8)$>23(NLEB*t3 F0`qpf0yf5Yl*QC@H^0K z+7pcXjydILKO1i8lAhp+4vs5g2y(v+B+ozbyX?H_r>pX8a%`F4H~Ejkfrw$eWIK^r zSHyWMF0>B?q{^+p2Qu>2#HvkC*Ot>@{g3>dzj(@R1}B^8EA^|r@I22i9kWX~4OJKx zi6;hTx;3Dj0e3W` zjonXm{Hm!^__de!PZX?$<`J%Tqw6+q`h0_w3jZ js(Jwif@^G+AZO zWWWBNpTj2&oKaNK2YE&PZ)~O$32N*Wh!mg&ozpn}Ss-A_PHeYsW`+JLt)~Z)vlW(Q zrQXT}a4v&U=ivKNH86c~mahI&MPY@?*)c&Y^WN{SdO42C@o~%os3b?oAtxB}z(wFl z)5Rhx6SBe&wq8cT-pIO3A3jDw)dtc7r$_H;vMoA*_W8_*W(}ZS|4O-__AckJ^JR|j z5ZO2h9d{L* Dso zGbGURnXW~Rz0L}^@yMckAKvO=BHO@^pluY=)3omyIY3i?H4>_c_8@36g0alw$cWcf z$yfhLDXdjOq2I1K+FVRnEa`|xRZ1)FGWzSr()4#}hh8i5Lk`_^p0Mzohpz}ORP9xi z*~wQ!t72JZretkaxU=VVI%R7fM#EkH&&+B|Bcgo ?2>F-2SL!mq7Ll>% J8<-FGO^%m=w@JNH%pB*ijey`Pcl9RGE?AERrd;A9`B@-u+S+FviA&}D-x?MVVO z%+SwUm(#@LmSqm`u)Dq#H6Nd3Z9+mJC$yp0! McKm6w;5>Vcg%$7Is?Ib zm+mkb$55~>j?B@% d&G3QPq9stqXUPIkTrJSeRnTl>$8A;8yXHJZnTklp(VfAxMk2?y_b36LUm{aaR z{Oc88k1dzyeftIrkCm+GYWS{q%fdpkhJmE>6iXYv+v8L)gtO|L^s;-7PQAsuomoVV zrTO~yHpBgOj!%q^km{n)3W`J6S%wjXl{+C~@;wCgWRp}qjPsTnr3Lt&Cl`r8>JVXP zYp_LGSr(4c(W5K#^DcY&)kFq|NlSy9Dir8#M;vO*!cwsBoAvQ%3JTzGBftKvv*X_# zUP{H66}#uV5*}l<92(yb)+~CG!BeO!N%9#}_~=I`jbH_HmdYC5IrMjPScFz6;b@~1 zX;etk1A+iSgf8QeX0DPFiGVYiX9GpUY+tU^eQYqqq*3HjRon7lv}K+NKnY@Z9{IyU zpCtJQX3TqZpYC#yb+J1k+hb)L@Wx}--k-ATko-O7${Ia2L~W!DNzPnfUpa9QwEWgO z;=8Vr6aPADi*L c|{s#m|rk#ZQ$&4*VG~!eeq>m4^(4`BN>V_+b<2k?lzqeB? zw4b!Q|NRG4EY>GKUq!W|3J?1r0e{rKq4rlWy6&qP2cOI`6UL!!nVCEZNpu`X0)1a| zA2FYEImtNrfw!o#L!W}h<46+v&Yd!c^Tj1L=P`cay3==msIovp@W;!$sb2`G-I*!E zLi#v}j)wR;@3#-n?Lf|)q?Eo@uF$^?WeF7m76Z|5E nRN^*TNHvECJc2I_5Qr8~t @l&=P1sxfVZuN! 5azeCo*yoNaZ3SinI(AJU5*A9zX6)>vn2l<=Ra4 z{`A@g!@^0V_?bQPEXL2$hKB`rZ&8UP`@wx`N=Ienx?9G~=`J)`WqyMLnjf7^u$n#1 zw_kLB>0ya!@uOyl_p|jEbHN{iRG|QyOe#gs-?V~N$1?EHROFCJ*MO{e8dpHif+JfM z-kd5#y;W9Z|H%Xu{jtCVeuw@or@bs5g?ZqNIXOch7mnw^3MJM{q(U!h;?huh{5t^x zy8|pe8(s$IQN9d?44z9jn1rShfz3$!8u*0ClS
GlZauZUxnxn|QOKpKOL_<@9yDk!zuxp`E)#-}1k%?2smn7X-gkma7E2{I2q{ z+awX-yPG?jH(`TrG#{LT65FT3Y{+yJd*reZm{iE`SjBVO%N&%M C8^uWWvqcK zq)o6zk~zds{8KPwF@l3lAvBF6%Ev*tNu^a8h`)0}FRk0d574Y%QE92w$>@EjRg+GI z(weq?{c+{Co@8K2dLCiEo7?P~O%wwX-(W%7;kQ*}G2=ZivIN^i{oY=GkX#Ou4pUz@ zdMr WZU%35aE`DJlnp}_GDc&&udW!2&_0Nb8Sf)<0@%Yl^*-es=RGbZL z$$TbOvtxJ26$Fr7XRK{^J}&UrNH@dCa0-H=tA{4S1bF}#-X+RhYDiyQViHE3{-_0w zXJb}I2j%y>^4&iX@40ijXekg3a=SYGK|t6t3L{=9+gB-oc%6uXAf)wNnCFjwyE{GN z!xfD13#|w4T58bR&Wq(XNV2VIgVND#6Vh~emmh^&xy^(H!HzK&dcCM{^nhAl7U@^u z|LLzIRUwo)AHrz@O3KwTrnDWP(}z~S;$@t0k6(i8r@G7OBl3;t?!p#u_c58rzsyb~ zB)F?Ng|*Nnam0r}Ue>ktNj@cI9YyO7jVWeTCK4@743ov_koX7Mq*>IDCJ;5)Yu9P% z%)yVeVS63BEzeHw{)5wEv>WVEuEG8cj+JvMJ@6xid(Tm0Rk!p_3@HeEC$y{Ew%PBJ zk?nz$ci|5K&C_;P{HKOdHH!U+M);FOe}qq0yioje{-LFi1@CLOn%Bwr5Hsjj1C@&I zf=Ur~c})IHy%)wpZRZK?WE`dbh0R0;2H-3xEcDyd%!s6Ntm?)#yca&}31a&cf+~EW z#}r}?8Q~Y%d<6>IPbY*m&4`kz|2`6lNE}@M`ydxpZHe) z^Lo63uX;H5Dg&BbzwXhu+yYXs&krn-epZ)5nJxM0vYuBNeMm#5YyT$lrQq6&o= t)2w7FX 7=^l0s+=q(^gkG&n6yR;-(g!>Cwcs?j zK@^-^D13e(7TH^`fP}ZGt8kt()17Q7<_aUv`qC19;ex6~&4}wM%vnlhRmt7%^6!sI zNy)5%@x-(-?7v_mtFg|@JCbfIn*zXnTGzy^ls;(fj(gSQ3Toh5%GJCgRy2bv2`tv~ zc!-XMgG#+F&)~Fii*1+b5egTtceh0`WTeILiM2OLY7_pU9Xoy12JQ*{xs?%$bD{qr z3p}TBy>IW|R;DlhseZk+7JF5oN?$Nrrn*YWFS%eDm@@Jr&wK OrA43kTfs``>7oGBUKsZBu zY_I#AoA{N!BK)jNDre@%fqsvM?pn@s#9)`+wF1ze*S7|s!lQx{D$sW6;6wim+joDu z@EsyhSO4q)b2D~lQ*b^x>OsgOlJIWP$pYDN(o~CkiAF=3uUc19KFw#UmO}hzF26|d z>f&~>Jo;uz>n^6uzQ;@tGpf~oD~|NlX-pMov}s<65Bd76#-fegyuvTr wm_o8Y8$k8p7%pJ@sBG;bO-fOd~=66VoKvcD{=@NW)mq zV~Lc-g@!UR!ALfIglv|Xn@n8oC+F;n6530NC&9+FqrsQG7G%JN(YNjpx3xooHGv9U zKKi=kurk(?!A%f>Cr@(6X7O1nNX++`{y{2DN$|TAWLfs>Dh?N$Ycbi{@YPgo)j8W~ z{J>S|kjmhR3><(tIqwqWRvX}05!Ld6_&M-~f;o(@+aw!u0{ Y)v>f|~r{(_!w)W!w3 zacUY&k$JYWDOL!XT}@tQznG%qpeIQ8F}() Xdjvq)yD32 zrY=1vP{E=8H?v3Ws_Au9$Daj;>5fn5@fK8qLTcKi1pw(w6kC3gq^;Qc*AG;Gy!0(u zaOxLRjA@4TD2zJBnD3Crsj9o UE{cRbOTI&?l%xq&{pGjK0C8Cr! zb>hRGq#i{{Z8F>579`NeGQB6LDKwA0tR6U9ne&AcbmqY>toCMuRyR4NZb(1>MD)vt z2(rk~ytRuSiF;~0D&*&Gng^*E;ReB<4GsFcungOMr6mD>F|2scd1F3>mH*u+__6KH zs&^5B;(p4u|Fd}%y&xbpdxy_S9(%iEFr&b-zY#_+%-4*U>-mnNLCmL-_!!9PZ8L(s zMq1@pgR(K>fcKm-Yi(S|rKA2Z3T&x~GmJX<_CwcZYMjg7Vh|1ftPNnfM7HcWJP^>O=OXG#&$haM7S9B|2s _%n*Mdge36X-}Q@(O%#3n+a znMWpB5gH9BK`E4%0dp6KQ;Jlm8*b!1F7cJAUy2Fx{Rrb+f!+6 z&DIz^4O!0bbrbwpT@?Bl;)O(Z 8K4T;Y z=ZKpg{5u}Ud9TljF&^f)d=@K%zi@5E_4i3T(I)g}SV!eve^z6+xDe|6+CN@z>GkFo zGKC%O8ijyKFub5ta}3s6S1hd Q6s$qp zx*Qoy0f(gsT&gS3oV=OAMpFZ6cmPc(E)^)~Bx*M>(LI#?Lk>MK)r3r8(gtT84S{a~ zL-()mQk`kLwPCMb=OW-d&FIcOy-zDgZ4~4u(?QXTvfgCSH(HX<#*3ZszZJPQJXAgS z$HkMYZTZO7$Br%+k>=DjdG9%k(Q8;pX!UwD<*8_bPD1era}67#1IYR=!cdX60=*Vf zYpVLtD%-cmNc_?F8?mW>=_P`cy5fXy%yiSy#bC%ypL*4$sBjIC$4*ef1)R;Ga%@PT zVrL2d1v<8Fj&*F{E;l|CggbJc={tlavFIp!gmES_j0e`1yr(nF@j5(1PTXIqdOHrS zOyENck|4{8OSI@}N-%4EN~g<*!}pE$JD{_Pq-VJnSzm@ u(lUb2uJ44e^e!F_IEp z?Z4aGz*Xy8pN-j6u*Ou>Vl2<8X|My2GJVu!B_>&nI5O*Reh<*N1MRBe~pFz?5l z3?t~k_zD!*a!#9h;_XU~QR!Z;q_EqPYMN4c*yO~$ YDi^Iw9KvXe@yX zS4>!U7Rkx}jOV)aO<4b8?%*|VL*W)!`BKeMbpn@dNQ>p@+4H878U;_%os9oHp^jQG z3M $QCFZ|EF`jwia1p8Pr;azCqFz5GE!GwO8*r&~&ARez}`1FnlTmk|DPJD~W z;mn1%REuoIX>zrZs>{H8 4OAdve_&&5*dX$K3 zOmP&8oxj*sa@}Wof15FnMNf%NW})K-x_lf~_xyJtw$}SoVC?pc=to=4)7yb^8rDvQ z`m6+xkl#V?0{=IX7tS1b{G`93kvGh=tOntlGj(_FmV)R+@b10c1T{&=?&`;xCHO vN+^7=oN%I9|(9yBz#d zaq%a!Akba>|7|GCwpB?2H)TkLv$NiZ&PU@9-|GUt*`jJ~Bt<|8MUN9d3@av&JFiQ# zGR)?QG3KCwg3O6XX6~X?j^^hHC(H;3f^29m0WxpIz3dNdrt6W<%4x*S$BPb!<$=8k z$0!>9GFPqmD 7ItusVvsxjr@#c^o8$OL6#gMA-dp~fEZ9E6CEz(|D#$V zRRAkKFpIks8;(5m8$BSbQ;hbFFCjge>~WPogYh3eDwK&G1#;I`RxZE-$Zy7Yd>6LA zWs@u%WLYD{lK~S9GdkMzCYQ==4Tf)4gUv_q9QmK5nysgqNcC9I^^Ni(R;?b<9jWZB zF_DI&MKT(2mX^uSAo-$^jS(2s!^0P^Tx8?>a}|$?_c9{h$+vwgf`+6T4$u0K4>r$# z;D9L6N#Z(08)T%lSubS)qh^B$ s2`F1UK8t5)SH?9x#3JZAXAcB?DL&?EfB>C~=$hr3v-P3T8F~y&`)P{S z^)NRldcq_el$^%ex6rEI90Cohu9(CRvt?_-bF-Mv8j7*!c5P~qD}!=gKu=<2bADgO z$6-<<`#P7ir58iiPk=shD*|uRQ*>sBxsM#FqADRFQDQ_XZ~m3btH=i;al_Js1qcqX zhNhBEJ)}+67UT>3u`iwMgYRnqMGL}NFQ$uoxwPS9)sY5q$lI6T>zB;Q6hjuV^Ikz2 z82uCCKZkKk3)ypX_CYB`d)-0%So#obG<$~NBxA$~eEc;|$+Ba$2%?vTf3X`%$&hS& zo%DB@ Bt6Tv~h>5-?YfwfDpT6J7>TSHs2SvWLmD7#f#DT=++q)@Q@>p>XQW10RP zAM?H0(;_EGpGtQJGJVx20C-9+Wg;qCr47mpIoInu# i!lL~-3`~`CN`5cx%5)d zPe0j-O)9IlP%(OuW)vC1j3_aImSL?2ulW8$2F7wS>7<8PoxuLnxuiKH&f`|xkJStT zWFEzOan{6ifO8`in)6X87Rx8?cf=#3cZBG_CexURbU dr2WgMP3xEl0Il6e5iq%D)x2iWA6UmNO{Y`51{xkB()8qe~N{3)}% zcN{fely0L%AYXxO;Za&WB;sv_RGm8;;z#c&YLb28pI3fRQ(Es6_5!|J?hY8?z!?%d zHizWD1Xu@YgBUr8jZ2T)kaccbDH?A|K~qP5%)9-i#~GAL$pCx|nd-N6xXhf2QbB$Y zQUcBbf;GiQwo-}&V)jde03h=^@vcim<_;0yeN7pP*6j6%zUZsoF*U#?T&Et5T$<5X z9q$}dB#b@ff4+Ws#aJ{7Q%92205F(O84me7FtN+&@veyVJVbY}v=-rBSL|mBvV%3o z7CKId*asihP{Jw(jN)6s3u~q1knDPTR*Sp^TnK;dP!N}((wYoz;^_db&A4JZ<63z{ z;i{>*EB514AtBEbI}CqB|3*CHe)CU492QZGRFj*>I-1?Dh*cUeiRb$BgHLh|H)