From ed564b6dda3e63f978cc62b509beada1c19d9dda Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Sat, 2 May 2026 13:21:43 -0500 Subject: [PATCH] add Calendar + CalendarTime + Rhythm + LocalDate/Time as first-class Phase 1.5 of time-system. Calendar is pluggable: EarthCalendar (IANA zones, DST, Gregorian) is the default; MarsCalendar, CycleCalendar(period), NoCycleCalendar handle non-Earth cases. Rhythm abstracts recurrence from clock units - rhythm_cycle_phase(0.5) means "midpoint of cycle" whether the cycle is 24 hours on Earth or 30 hours on a station or 300 years on a long-cycle world. Phase 1 (Instant + Duration) unchanged. EarthCalendar(zone_local()) is the user-facing default; nobody who doesn't care about non-Earth calendars sees the abstraction. Self-host fixed point holds at 6339 lines. Snapshot tagged at dist/platform/elc.20260502-1321-self-host. Phase 2 (scheduling primitives every/after/at) lands next, now with Calendar-aware grounding instead of Earth-time hardcoded. Backlog: bl-297f66d8 (supersedes bl-b29b3e60) --- dist/platform/elc | Bin 375352 -> 357784 bytes dist/platform/elc.20260502-1321-self-host | Bin 0 -> 357784 bytes el-compiler/runtime/el_runtime.c | 872 ++++++++++++++++++ el-compiler/runtime/el_runtime.h | 83 ++ el-compiler/src/codegen.el | 363 ++++++++ .../examples/cross-calendar-comparison.el | 22 + tests/calendar/examples/cycle-300yr.el | 23 + tests/calendar/examples/cycle-30hr.el | 20 + tests/calendar/examples/dst-spring-forward.el | 17 + tests/calendar/examples/earth-zone.el | 16 + .../examples/local-date-arithmetic.el | 16 + tests/calendar/examples/mars-calendar.el | 21 + tests/calendar/examples/no-cycle.el | 18 + tests/calendar/examples/rhythm-cycle-30hr.el | 18 + tests/calendar/examples/rhythm-grounding.el | 18 + tests/calendar/run.sh | 107 +++ tests/calendar/runner.el | 13 + 17 files changed, 1627 insertions(+) create mode 100755 dist/platform/elc.20260502-1321-self-host create mode 100644 tests/calendar/examples/cross-calendar-comparison.el create mode 100644 tests/calendar/examples/cycle-300yr.el create mode 100644 tests/calendar/examples/cycle-30hr.el create mode 100644 tests/calendar/examples/dst-spring-forward.el create mode 100644 tests/calendar/examples/earth-zone.el create mode 100644 tests/calendar/examples/local-date-arithmetic.el create mode 100644 tests/calendar/examples/mars-calendar.el create mode 100644 tests/calendar/examples/no-cycle.el create mode 100644 tests/calendar/examples/rhythm-cycle-30hr.el create mode 100644 tests/calendar/examples/rhythm-grounding.el create mode 100755 tests/calendar/run.sh create mode 100644 tests/calendar/runner.el diff --git a/dist/platform/elc b/dist/platform/elc index b4d96ab09f5afe1f20e5db10c9a7b5fe635fb073..7992a4ea72f343d03583c0cdafc25c3ddebc7ac7 100755 GIT binary patch delta 83689 zcma%k33OFO^8U@rV-LJF3-BHw`x4e9tN}MvR8Ukz)ZjAUHiM!gBj^n}DuTMjh0LD}qZ@WE05$tE%psONQS$f6n2&d%v!(uCA`Gu3m0u z?XJjuJHyG_I#@Z@;s2Z^W3qQW?R;FV>(v7B=GP-0$07{ z-k3EeT=#>(1^EKgd#?LSezDt-6%VI=mDIhO7rke5YGrmjxMGi_PLiw^-rYIb!$~+2 zz^c@^<^D5!tU+U*xW6t~);`+@VtQs@DXS?jy*h(b!D} z)w$e)+(gIMbGi7ry7buVx$e=qW3uscQ|>AB^I`6B7h8EEW3`bnk00*4M&609=FPxR z%c?Hmr#!0^sv4r-OY`%r?J>*BMjC#sxs63@PKRqxo<3sBgIAO!qVq2~%MIk02hy9k9LufFFLE!)|5J}xmpp4B zc=iTPGEf=xuM_^$d*!8h*3{OulcPCZ-GUYc_P8voAyM7msTgY2#Ph5*{JyZilgSCH zp}?whHI@`?Ah1l1#_kiW4=^ZM^41A<6tKE%jja$Y4h)qSx)fvmRWZP-EDf#|!U(W> zOJntdbpYm0Y7=V55^fMMFx362MQ5o*y1#R12nvnpd>;$RK46x?GJ@>_Ru$HC+Xed> zSba!i4T9|e7B|>l!M*`j9n^Hz08*5#G5|9jH5gz}{TEoJ!3qT10<5lsri%%-37BQD zxL_NBRTXHuUV^;^tiHX*N(FljSiHTh!Eym#23XxrW0iuf1(s>6u?d1b2dvUylLUJT zSX~=UH&w8ez$}AR3AP+qRclRW&k}GM!1`7ioGsWAU~z-Z73>~h)h#t$wO~nLnSjO? z3bq(nrNNSd-2$wxg{HetFna+&%YbzP&IeYNuL)NOb}g`aW8^8pt^(#6{#wDV0OlEf zyZO#$W^{&vAm1?CxkgJ35DBf}Rf z-z(raV%XRy1zQ8TyN)7;hcp%ttc(~Q)L4OFgMq~j789&Lu<8SvE-qLvV3|KO)@z{6 zg>(a0X~0q;>0(*GWLhjMdd9u-te{)jrn@+e*+TK%U~(Em*^kT}=zN9@ zUOQ9^$;ZIFc33Fbhrp;Ej^m6;0pIqOwx_W%+W5M)>EOKVl?QLKoC$EPfhPw#+goI< zfS8dO@j^XVSZua;q)zri%Ol}g`goZU(y%()9)*Fel+Q; zCH+Q!dVQ($jY;1q>DT$wGo{XFoNi<6*(C&5`3Z6dIUgAYp+Q`OOa1BbLC(7-y`Q9C z;7>nhkn^TVpDyXs{ONNCIWJSXO@m*J5S->GSTV?1V;HQH^b`H*8wNQ~n)J<*KHi_c zeUS5*Nk1UzBmC*H!Onw7mo7bYFxPOfpJ3`>=N`jgzNGi@r`HU2?l9?3NP1U)di`MM zW|O{I(u@4*+Xp+>Tb3xZc0yE$sx|g zlAca1m-PLEJR?tA>xMYzS~go@I0)?uNvkY zWzy$M`ak{Y3x_#&Cqqyp1kd^jmJf5nCVjP}D}Q==nA6sz{~+m)AYJ>dbRsmIg?dmh z@-1o08txpNH*V#wQ(s$ApL4#w1x_ZN=qH4(pZTca&TjZKPM;|0i~Z@B4|jet>9l=RDx4o8{}TvFzofZyIX zm$`E~R&<<#=bBrHCZe_>Ze4tj`%1^inEj0bHr|xwxJwI%+NVQ?IjH5C_}%hU znZq(YU*=53du-$YXBvK|EgtCnk&~rbL(T&^QFS(k8j9q%<&-EF^8N;O%*ZKROf+My z(9RwCBy$+)#VT@-RdWF8+n~j*phdj0dPWP&A-Y9}8r@Ti^6a)AO;mjdnhZjQ40w}1 z-p6}9%UXRPr$~K?mJ>Xx{tdhuvx5rA@|nijtY!^xUZXUOdzkj5m)7m- zKiwU8lC#lc98u39kw*HZIrlF47jUB>%zi>7xYxci{!06vD($;^h}*e%y!}~?=wvf~ z$yB!BcRzlY#(@sY`f8bTHt>qFa%V5^Q(-ILY2C>BzrSAUX&KIoACVQj2 zCF%mon`5n>kE$)p3GM8|Z6|GeHkfSY75EjjS2n>_q-0OnqcyV=YxjvXnV15Oe*3cTd`-WzM6($aGla6!H8; z_o&axoIj&A_O`e7&E&3AsCNF*Sc}=oYF6K^WsaQ_>a%l47TF=mSFFy4d~AmxBzrRT z-!Kq*b;orM+S~%m%A5lz<{Y%byv1eCA2X$4yFe7tezCgFCn{<1uUgD5u;@$MnG#D> zh0(|lWlkfN0hn`VtYpEmwk@N{sRV3Bm40_*;(~a^LQX{ zmpLt<_I*&lPP3iut@X>B@OCZqvqYx*C^CHqLTuyqEmDVE=?)XQ*A=Q1>U5Z;BBFj8 z1y{A8W|HP3o4M*xV=dW;u^9^dsbZNNyI4Tfh9ZAzXKLSX5BM_tz06qxrsRLT8qL%- z>QwH02w^R`$;=24;^0c{4j7;aR})Rox-;p_}~W$ii0EUHL-=+(rq<>YcyN-^WjQ=KB0ds;8BH&D#u1}jo$0nC zWV*QA8SF27Yq>KNdEm}h`wJgPSia`7?+ARpDR<)BBsOaK@DT{!EqCht?P}Wlo^odi zaL?I5=nx8vLukJM?SWxpFIqgR;(xW+p+cG%5q~=1v-S?YHaEIst_f@hu+007BGefol+6=D)3(P}I45aKZF%ky3K~@5oZ~O3 zs>1n*3L>v)d;qXCFwcgrIYR9(sc^86i>5EMrR~>MIIrtW9wVss6~atAes%;#Z&o-M zaYOz*&yYYy^$#8)&w>i4qZE#^(f$c*gtHu(u;|iM3t-C#GldTu@xN`@a>Nn4>B9)J zjKkV|w>T_n!h~tUmwiInM)luA1BPIRkHDm_tZ-gJx@UM(M>yA#fZ8dwJo^X&&KTi5 zWq4*CA${Bk$Nq<(>D42g3y3M&ll%WQN62*j2j-D0zo5^Kkms8b4t#x+maLJ^0DqpWkqb^GwLof21?jpJ&2IC*;p_!V&UJ9_gIq&vW%ir-kj$bPZ=p`MP8(aQ#SUOjD** zqHd(KzrWW+sg@5PAuY1NeHoKzw-%J~;ERjp#rlxi71LZ(imoP!711EyMH zlrz#BrY$GyJmg7xO7OD2)IG6hk1;i_AD7l)5cWnbRwncMOeka%EIQ1yhl_B?=`3+1{+`$ z+lAC|kePxFn$}358dI(MyWjRc(H?*#E&{A+rZdAxSwF&Q=qKtL2AU>~hgE{vMbw%8 z>VG}L`5N>zo=LG`6$KsF47ESW@CDtcpj!bEu@+FA>J7{IzMHm;+h7@bCckYUW_n$1 zmhH4rQvIiN^&c4MVE&Mrw`wHK>QYO;8{uHzEcCE$reBj%-JU3uW`zc)DG^x~cZ-AQ z0+;DxuR*bT9fm)53BfAW*k!;z?g#fhfxt~#x?o(EHRb-P}2lJBf2h8 zwVyt-QK{53^5?GU!Bb>h@v#HTqUD%H% z9fm$1>GfD}$GSpl8YVdFU1x1KcT&HAy&Tl0Jw8T`Jt#_6MS|)eKya}HKJcCIx@KaN3vS~$0GMtD63&yhd z9Nh?yp%Km!pG1N3EHRM7?Zf9eP89p#@;W!k*PrCT$^^GDwJX?fGd&D8O~rTDMbBV0 zhg4TgpW3vN6$R#Z!6@h;tQKk=aMydtOckT*M&M*42+ziFDfvA0jV&v8wwNY zvk{l2D$pCatlafDW)dkoqC8EbBT&K z6SghhY4$UoHBh8Juu(u$51<9Mu*%g$6`DEqlno@vAC0S_vebCg%m~yMS|iuO&9!M1 zxr9{j7tw5|`m92aRBs^$U^;k=U6>EjjM%=~v~56C{S*}h7hDNO*7i|OO#(`0DPeyZlV_MZH=RIU3r$|elEFh-z{{}`hdyPY^ z80|U4i;yP#f~xkgN=DS*S(sw=;(!1Vm8cW?x;sjX&itFkpVC5-sf|WO>h@|2fD%lF zu+G|K0cYz*Ibk%<)L1_3YLW8$_jRWY8q_+Kz$O#Dcc%9~ZvCJZb}IJ1aR4#Z4&`KE z0H$-hurTUxSQ1XvaK{d*IgpFYocop6u_NjV;6%#?awT+dR+AO(#ZrV`_D?0YSFjAf z^?^a;*iD6z6KG!8)c>Qf)0!2=rhnVvg?^7hvGvFcJlip_??$&kcUidvks&JwdkGmE z+Smk1>NfL^YAS&p3ewO@}*z2O7in3t=wa<-jb1VOxfOPg2JD>*?whwQ-YEymMhiDJ#Z082tQ-=1jm)>dBn9fb!?|n2KR=HDi zUMt1G5>)4cFAp?3D2@xOH&62QQ8+5Xa)B-20V>7=)M#`u8L(;DKcWttXw?{-CiyAO zTSF$2W7#rlvti3%`!o`y6UP*mQkuNceWRTfNE5~qP%g(id8>J-gg6RXpDt80@lKUl zigdO;YzOy6MKV~^NnmL$1Fv)*XlSv3rww--Lb%Ta2#Khk!^4<*3Zd9u6vB+)m2L&C zUU^I<;E{;gjam@aHkQ`7gS?3jB8!Kqz%zK(V?!ZmrGiCjV%DAR?qLZ#nLzC>MFQ0V z1tksRi#6k3XfZHN_RboEF(8*V`;&opOR1n_?;pYZvYeIQpPw!GCwP}oB^jWm$A&~5 z^6$dX{`*Ynm6dp>nEBwm6R{QK-aCA}oePDa<&$$bybh`|6wRW*tNp7thu+C8Yy}ZD z04+`p!Rc%T@JMK7?c&)A{?Wn=(6nV1RTm?j>7hfinl9j<>0;3`GgX()euPyKKpE9# zfd1kRQdW?s3QUNx^HB)%0?chY(x_p?JxA4MP1_PY$g?p$+;=VL>u?qbkwQ6k{69JGn;1M$-HxxrGO{pk&6Nwy?MRQ(2MyGjt`ECri*f@lIu!@ioO| zm#A-mbGa9lJ6EGz6XC*JH<~$^DUcC zbj${k=^Bq7R{5YxY60G4ny@+pg;TV1ZN7_mpOhI@w`!Vox-jaSCxI@rhvt|ykb~Y@s3)aMCS&J=>t@7ehHu)-8+ITSHd^EL| za4G4ZT8}__ZMt_>=7VY|BwwtvCS%v?EU;G55B7 z(_ZAIVyX`5Y%Un4%~a`Z6hbzFkT)5FeF+{@rvsN}3#o3F%uhwdqn(LJ6FVUF$J7M8 z@5(um$Ms|YhQO*EJr)Mx>)^fdF5|t|!K|015)dwSMN_*J%-|KPoL)SRpmw_s#1 z`-j`L$a?zR1x2wK=u%Jhl9~8#plJ%KL+T5>la+)(t9@QFfiCq3=&`s;(SCA^OnH-g zB--byWBVbggZ<>RffPX%w?O?Os-~Cw%E%)74@f2(GsRr(J$RQLKN>Mg)H_-Z+7`R| ztr|UJ4XNi@9_;XGdg@BoL6)imW|btQo&=4k7q$aBeum7mLAMY#1C16ZeN*{l;C}c^ zJ)OI@FQ)R{-FrtB*?0Q*yaqm`7v_bD>m=~1=G7BwwxGJn(82~^04>cEm=?QN$AXqd zW{UK<6WpO&6X7R$-ALcrX5tLG%Iw0VesP^r@hIH z;~tc`4KmA!DFTmemiH=?x8+!87v`QUsMY`tMs1L;=h4zQQCVm?%unQisJ1RIJ5=(2 zDRL*~LA4(*$co!2M3J`*nx=t6J0AII^1vQ{3u!W}Hur?!hzl05I|-^5pl7pYO-IxS zFT$@iG`;1Y=wpAn3m$vkb10-Z9)~2Jf69+De+r;jktqUJ(_c+C`gccY-g|^~hA0 zQ?%FAZamV&_@tLyV+zM$kqbWe!f+{n(^_jp4Z}Mb>7}6coFyFZ-X55ERbyd*M_r5- zhm8(LkDxW8Wb9fUn8`wEaw(4*G#W(Jb}*>MXd}T=L>2o4KUEhd(EtKP7NSs{0Gw>( z6Xadr%5t9`AGW{5$ZrPXa5Levb-psrSFGMbK8l~V+GK z|8|DNyBP6z+Cr?jd7Ps`n+JF(Hbc{M4cMT?an9d=VhL zrMGG@2WbcA)qZkz@{rwPNhvuVwrTA5xxKPf za~EhyTSlw%OkOn4)5xorFxgj*MmZLiFrisHxd(R2c8Nu1?g)QvX1B70nViRVN=ukn z_aO$ngegj^LSfX~??FN65WH|V6whLV5j9f_XDT*@=?m3uz2Pp%cniUBA^Z&)Vkq1c z2A!x0ZCwMJ>$U@Jy)0WM$HU-Ejjx0zyq3$#f?Z^<>_x}MO|-Dha#YT=z1#a{2~MqL zBV?#TbG1YPObj z*pr1+;I{&nFap0i&Sgt@9CU~e*O)4NdK-E_$<`hW$%QNf!I4@vjlzj8PZvy9Py^b^ zgN>`Zq7Z+}?%CrlM`E4`<)XhCCA&CKos*u)W?VcY53#D;BlI89AgE(&DOo}5uC#!dlVIq zcHTi^(&TO93IRT7}eIDD-eO5gt>w0TfOo%^dZUou zzG)(BiKdAd1w><&G7MBh$_~g(Dti(J!nFxVVE9LO%<5V;b-V#SOG2sWX6)G8s#a=K9h^iQVXB7Wd81QA8#BHq%@!bLZnhL!E3C>acXNnNOFf zalomLtia>O5I>t0I1&l8P{u>xjh0qyR1E_@0Rusxf;vOq$~`%`D|caG?7*o_E{|5^ zJQKRmT3HW${2KucV>B^>!e~(9ckJPv43lDEaax@_(Nm~FwQs(#ZDEr+g&{!QO|iXf zPQKBo70gMdyVQCmYO~1$7ZX4pYFRD>F6LhFufw^e5Y7e1@c-4uij~}paW4ChQxIP5 z!T&Wmg?pEAuu!CW83`{Z2_xzjQZbH}8hd}y6b5_$5jCaZQVZyInOJB)VbUQ?2I*v) zMwmZSWy98L_H&38cENv2}eR2;YhAOv~0U!=DT3hWb(`lQ;&1Ns|w!&N`EO) zccNT)3cDeu_i@*waB9{CI{0NFF{^rhw;T_ajD@Ni8L7Xl0ljFoNG97=S>Kq;%VG%1T39jCDMFrJI66i`mW1zL zg2-HK;v}wBL{)>>Zx8K|q3-v_)yQyIZ1_9Y#=YL5CrVc$FO7~|xEC8n)MdauZ-Lm5 zy#*~#W5lq%-k_HWvO!FnHxC_XjPB)jjEH~qf{GG#8k&R{PN3fQOg5Z!OPMAv!1ILx zc|IXqmLoc3I||y}-nYd{YKrf>bczOr8g5#0MkcW9Tf#K2(eicK~leM?EWjt{Zv} zfP`C8ld|Ti`qlI~N=i;xUeVJ-9QD~5h{^}J1EiC{8F%Z$t^;!toAd9KVhZP)B zV|2lDKu1ww4$A0a!@aW9)Va@IGz(nJ%cbw7WWw1O%JLE zbXq0S+L*Law00X*HAtf+H>O`9*j>Qrs1I48@8h^FOoP*Vl;>l#!>+nP(e7W z#Drf9v-$o43WV-jqC)}ID1gp_Fntvr_X(=metJF*5LB0G`Z~~WHT3g|J|0vT>BM>@ zeq<8gphaTr2X}QZIIF9tq|=BL?vl&X$~l?J!*UH{S}7BN#SNyFax}1NOqZEXD`5<< z3?^8NX&qDmt2CJC;B++#;yOsJJG5EwKln67*uV4ebX<&Og9wGdZ2sN!AS_wFlf z-H_1rjCOUen>u`aojxVO#h};DfvJ#v<2@~Vv_bV}VA7LmxhkfH+`_hTTVvsP2;@UoPaMD74}zSDoE84qjZ&`O&`MM1R}fb0^Hb16|9Z+2gqcAEVX zc#`6t#c!8f>zBSQtSKa47;<5(NpC?M!1CcsMjmrc%@H}DE|W3moE#a0X6Eo>7zNP* z$VJLugT`5g4?F8oPmwXKZbvyJ7uDmm1W)XX72S$pK2tmynaM@h5QR|Skf8pRCU;@9Um3vw1N`51lDR4kL@wwpfK9)fz# zLH$U^_u^DMo%xclaNmwwp6>;80nWO0H?*Z$)r zfBL#IXPl(l>4f%(&-n=^l{*!Nf%cB8{OR@O{B;cruRZ0X{`9ToO)aOr<^%rp>E*iR z=;IhYjJSS+z2!|Ur@iT7e|q-{({kyAcJnv+)2CE8ElmY5c2eujLpu8wd@e*5T$R0W z$-#WFN%yX=j_Sp=Sw7174P4@&F}-K-GXJPz`5Xa2lQ zI&sc$aW;KNi?iucPMthG59jRI%Pt=6@MNHf)(OY~M%3{r0P7s+o3g)fG~VmH_m~<> z>9~1D(hJqdI68U#NCOn9G7w}uf?_oU@Ack$i5iIaDqLqH3__|e-ti$PzjLi7jdgke ztH#|uM8nwaW1R#reAd^5eLU7F0ajmx`*%FTwWFLUW$xs|CX9AE5@Eu_8WI7^X-jl{ z(Q!^4`ESQ{&kyHzsw(v1y($J&!L^B*TQ<`WRtgX4u--V_jQA&0aRQ*At zjj|yzN^j@(0!Sl03T#MB62fl4WMvM91E%7<3e_k*oU_sXgI2X@FEFB_pqB`lR{bI> zh<6%kxDp(+gjF4CUpGwm0N$Oqqv`>GI%-KL7>uw=>-uT;y*<|{F*UttEZ2hO0bbXd zE7%@jB*5D@9c~9?UkykjVQdWTi;HN;i>fR*)#q#w2bxsI9<>_;qS_L1RiQPd9N{7d zIz97HxGaD^hJ5>B6LLC_hV4QXMm`!IgE~Kj?{;=<=L}q)@S<@d%SG6Y5QxiQ_0$Xa z7C^FKn(=(44UUa+X`XYavmQ$~=Q)4i*^DJ!H67*o-OwD!b6OdV=>k)_KrXLA%3IYH z{h!oGnco5zeHM+u>`l~w1R~Yf#jGjAp?Y}5hCMw<^`vHaIb>W40h>b8sCohU zcfe+LmXm^LKPBJ@QHcdkG_R`9XJ02-6lnezp4WsDVKno;>q z&??a{seGrvNX#eW!|G3+-5novZSzkki0RkmI&Q)AlId6~O0PkfPMu=SjlN-Kem-A_ z;!l6lpT0fcY3S4>(2sbgrKX*N!B38$0%G=;ooG!dtk$EMjcV^l&B!aa%Yqsa1Jh!4 zYdlwV;VEP~!7*@D^+YY}JNq##hysfn45K;uyH3C?96D$Ij73xoSXH`FPwHbdWJFbv zGE0D?$D5d%k0#=b7y?=&y&eb4S52}hA(hSkr&>co&zrq(-v>B+RlBI+ApRk9k9k{Li$Wq|2nNn;W9 zU&@OLqLL{KHipf=kh&2d*RV9tnIWULC+YjdM0$qCBI<2mabTE2rl#R^hzy`bYA|Xo zJ(~v5A~gW-(yNQrLGpVolTfH!Jk$MhtN|WKqv~lCrq>u!W^h%& z>SQ^=6ZA1)o>sI*>wtM$(YEjaFi$I!uue(+^C<)47(qPYwgv=9?Rz+a;PxAe6o(E&&IZhQ%Kfh8d}^Y+vqX)p_`gD9bzS4L!T+lO~r8I$y=`W^3;SdJx^Ndw&Z zD4RxT8rY_5IjDQ=EGdUxaD3oDrm=bC398dI5vrTEE^q6cJjRO$Qwa>qpOv_S|JK8v zozGEzDzQ;yd!OXOH=Arj?3_aCZD1A-ku#*RjEe)H+~sgYmpJ zq+THYyEI*C1@)YedKO^jHx2Uq73X|`RT_-vtRb}mSlzFhj_0W%^(ZjQU_3X)@mXM1 zzi2uRx$C#Ew$zmIJ9|LjCw%QK)SwVX^hQH=ZK-}&tLe6twNC7PyZNK5p(a2Us zUJ5ZK9T8@HA}#lX)F`A`IF`)S`FjVhW*K3kw{&8IV1tQ=3>4`^LC4dXus=Ypw{)Vi zBV)Y?!{Kf2b0~xs5lDA9s7-wo)*e*P?Y z5LD*?lL;HXsK@O@)X7+swJn{~{JKM*`LbAaHx#H0zN90-cIumdgF|6GOwSosTEIkWIgy7-g9hPHGrWGtd) z7;JSb=RC#`hZ}5bE9Y#+5KH(_MeRJbLp=*o8kts;dP1tFPdne(KJ6fXKhch@ zzCZ%C6{}(@sUo5hU`Fl2*zJOq0HXpK+aOpJn3or7+=HD#njv%m&Z;a8IPLIEU9OG6 zDg#bS#zLw^F$!nG*#RdPpxN%d4>--%E(=;yNDw*@!QQ;*7`=z7mws;#IJ=9e033?I zFY~%D;QYc^vHICyPXwGF7{k}l21^H=@3M;Af7(U%WhhUkH#k3ra8M%pA~Duu#yCrW z$%rh|n|twYM&xI4TG>p8xHWGdzjRoMK=YbykxvVmb^Kf0wdw1+`hr z{yN~i%z}p1OGZ#=aV=pjD)&8auux0qWjHvmfbAAO_}g}1OJlI7pZxM!Q7V4jecPQW1S61tHiM2sT0Bsf-tOFEOXT( zU9aw^0;Sqqnl=H%n}3qV)Gc2m>RIUg@%OXuR3G4x%xp{m3_z36Z+&%FTM zs4cn?bx|%A-S9zVq;5FG^HM=I3hfePClyrtZ=eEnFGButBT1!A8w$VPaD;N!wmif6 z4TS!JZaP9iU3~>*`~|_C_H0(r$0!I6DDED(F<`F(F?F|{t*t3!Ewt@~72ecRoJ-=M z>RBCB{fCcvq~_sR5idhVTC(dUpK&L6NEgDl#0Udv;f{i*$qJBhk^hU)tCjO2p2^YCk_R@ye#r{%ma9#T%E=kjR!zu`yIcQWl3jj- zyZ`TTx8M z-#IvqDhk{^8eT`j@jhU*m~|SeM-H9o`F8548h|u@N7Vf?_>p;2r#plb5|V)MoMw>S zeT2{X2zP;wZ2Xt&t(qt-D|Vo6QJ0+P&N^@752rnmM!o+rg)yn+HuvFPQG3nxYy-&z?1;p> z3=|nmDg5GXhB$ulXyW53A4^~7ArBqsr2OQRDDrv}x@^aG8dhK7__@xXN))u_Djb9q z&?6SB@W6#ZyuEmyj{k1u-(qg+>ReGAuGuEel_;eOCsUai@f@w9tn^EQ;g7K8T3VWI zKi18^;1=hE_N`}+^9iw z*Te`f&`i?Y^%>A$;7-!CipJNPY`XP`DiBm>B8__S6#f;V?;!iad_{UQDu*=I4DMz- zQPW{G<+4t!z@!x;=fQd75iZxN*Rp!JZEkOm?`B|_yD_@y9in7{CmK=p3ox(C@I)i3 zegLK;<79#-8d3EfFtM?i%7I2_qZ?^nsRTkIvcnPu+KsMeep65k->F&?g8&n+u zQf8|46Z6d$RYW~H-|h2dQQIUS8u-4%kn&e|@|V#OsBS88IhlS??TccDivNshhP&`C zy#WhV$W5J^)OGWG_Z6pT@Kwx^3_q-JjUM-T+SqBt#*W|ciTzfvs*JineK~$GD;Xxa z$gd-9>NjhBFpW0#>SA|HCgK*{IjYt1D3Me+1_FE)xv(Ezslu2oZjxq%{{!ZA7GCR) zshubsPJK0V#quz@jc2>agl0``4UdJ;+-2514L&$Q}dSymQ26_7vlMP@FAX*Ka6)?lzNBq7pV?W z>?|;YSR1DuGl;4-_=ToYv2)shD5e52Nz`VN|CREXyN^eB*OV>>=Qt z!N5S4&e3lkt#AZ+YcP&9W(+1%nlZT(g=nTpI{vZs;%>@;yt0Hb6x47N#T!%tScD}cixyyQW za%a17`{(P><CY4wx7IXsD1b^L#u?EI$bqv6` z0ZZDkS&ao&jZ-X4I7P4#z%sbLi?JHPh5@TI*c*bC0;|Ipx=goOu)e@7g9X}i89jhi z<>N346CNXA0${zI?Mx+Z7pw$W++dppivp{b^PZ{1Ucov7!)#sn^(){)+5)RI*c8D6 z!0OE6?6GqN%mHW#m`tn{>`+)natMgYg<$)DdB)Hn*sd_2_e>_*bl^gFhTWniz3rq` z*}*xfOqwx^wm{K${)_w(Ja5s_#GLGVmvEXz!$(-zNGHR+9>3I2$%oMU-x$Z0{QN7P zJ_VU2(x46yQnQi9ybx(z5f1t~Ed;q@IJ8*%@M~GY+H`GJ8#fisl@Sw5ug@SOG2)8q zW!EQwc@-^?71qa1MfHm7Lt*!n2k6G3t2;V1px4^R%uML-0;aW}Ok@OG1Wao`iRD~Y z*v-H^n$Ol#%+3YO_CL`*^F!o$i6F^}{7W$9(-v;AdF z61pk=vb0W4HD%2gn&ZOmQ%n0xLq7)nQhzlKJq-D&YnTS1K3WQlx&}R8hUYGUrW2+V z8-!sP6lSu4WRD1_6NY#TOxxvPA z>Kc1rD6)zdi)*CxBDEIjv}{K%Z+E$S=YvI)p8_ONVzC;JXA1n~n~`GmxF$!anzVAm z@TO7qc!-LKsmJ)YSUt+Wh3aAa=HdTlxBs%?#mPiN#Q7SpUQ-oBS@mCpsGq=Gddd41 z&{Sb^ZDG>M$;8^;(`Of z;@@kmT(BHq)!Q|8wP1%Z5M;j7*v3u{{-y(FWdQ3;jeB)whP!}S2AeC`&xC!eGcOlx z2e9gG8rv?|H^4F(jRm?ezYMVW*Ba|5*nfiv{Oi8Z;6wqpQ06Z+He0Ywz^Xpi*iykZ z0;~T_V;>9l7BI^Qqoa-2D6bJF7H45zro3D(-DWdIz_kG5Mwr_Ldk$E&DY#y+r+`(O zLUj1D5?IwIS{NObEC-e`n2t)8QC@?64Sw{I<`RI_|IwKX5-j08lzEHBh6&g3XOhr81)BvdZiI<-<%(QLdDA*?rC{d)vjl_xpC#bg0ILmQjbKxN>GMj-#0J4m z1s0bxOkRw2BISKo7ji)8j-|YYUuicMrjqg+Y!+d-jA|snIytw5>jH&vI55j#ZwNLB zSQReEWG!qLtRJxYe`_qzoeSv+EN-xVf^`K}y+PAW608$2%Ql3w1&jf#d`lD72^Iua z_b-hhxS}rGjxrle2UsmBui>WytXyFAZ|J-_z-sJ>yjmFB?3eEcSpB*t)DhP2!0JsQ zI>KrIR{5Hy(^1w=qBGcL5&B!AGd0dViiO?=jE8u9OPehpm!thBNaCkRtbSE9UMSc{ zz%s9BEG<}?7#mDa6y5<=Z?HfQF6>{Fw_fM16l^`^HP}MJ(EjTvvrKugU@e3%0JDrR zp`Og}Szy)w)C{Kz_9U?QdX4EB$_ijrhOS=d9;LkNG@aFp`8@>8ve#;`RKWWw^9vfQ z608PT{qq`IE!bU@*%V^+W`>I>?~9slx?nd0i<^R13xjJFO zHiWtTnPCyY>c@5FiGqcJW&WYDrGgbuW`lh#SZm5_`04p~J}~Pso!1(`Wn@v_6^%R@ z>7OVN@IVJhh=Q|dYFaAT9$>TzISXxQby)Uk)E&2~n{9!@nl!+fGQ^wXq-iqyHK?OF z^0mjC%+@Z6;XQU?1&XDKYfRk=8nf0r`mZu4rL+aWDc#1eS^pj8rH9qufXf6pdOXi= zui*?)HHUv?2K)r-MKc02U77)3jx01>zhto6=ZWE7UBb=k@)*c7@Chb6 zvBclLrVS}(|6e@QeC?f<@?c7&tq(PlgXng^?D=>W|2N>l(eY#Dn83~=)B zLJM>`1}quq;E#XgBf^joA3;I|6@U&bV`o7=rt?0A|EGfV8M7`5&g1T{mo^R5w5 zS7C{qnwdVZ#I!fP1#5_GQildQY)b9R-ILxbEI$wQvQ&<<>WFfsDzr}>Rd?c@OsO*@ ziu2z%DOBfU(}Vuvr#pRaNo{IFR?H@auoPI~ycRjgD7k|8YLe<_;ct+0`od8#-kAC` zXh<@~c*_7^`2+JN`PCNFT?EV+@BwTmQ`<4$@+?lDj&zhwM_#ZvkA0YW?A0^V+vy-& zOnnQb#bLy(s^xSxG@|YR#!R-BI*ai9Q+rZdNZm_k0I4@(ZI|e761sE(I}+7+CUx9k z@?tY`9-hBI-q1D2m~I$SZME+E;!l8*v~<|05W276lhL#X9aDR+CT4}IKcttH&4|jr z#=SEYwfSqyuv!h))%sZ7LDZY{LRI_)IeB#%Tbib2(V`7|E@+MF%2MrC<{pK;N7QS$ z@`2jId>%_XJY2=?rOp!&9nWbC%iSyWb3QFW|D!$DygR$=LM6DI(^4CBnX6hgo#$XH z!ZI*h5zcXN4Ie0Vg5Wm?R{-Jrru0&r>!3vyI+^e)zFn!~&MJpw9|uoaFNrElTfB{$ zOHpqOeXHq94|Eh;ZAK!W3FoUm$RrEZjKhi4JD|A(ZC{0TOgg8*?T;C*)5iKfi1z8o^C=Mr0cM`H>dSUUS_HLim z75I1-i|RvA6R(fsNcVc=vv5d)i@+j0N!`a!gFHP%D{1=cN^3x$G2NMun}k$nq?143 zG9e4uaGm&;1_`~x>hbp2VkL(|eHzyy)YjpPPA*h`Sl1RzxI@ixTdnDAZ=7S*ya_V8 zTaHeOOh=t~u@GOPve$gCTm~N;0%yC&p>VeQyT*#$KR(tehP}_j;c&M5)2VK9+T;ev zSILW#V)xgPylfHl9#wyBk10FZ9yxhZNCu+?$ws%8e1>OIAdMK8BO@ISUj?@-%wuXM zFzOGLhv;k|zCwc#34Dn<12}C6XpBEFoenI6!~INy4^t`aEMV~#G2J5iQ@468fIG(> z^L*!QdyaeF^U+TFr1Vo-B38dXCB3qvd-wAvQ&I0rw{T}Vm*(A&}WV>0RAWJj?}p{GnAyeM(Gl}O`XfUufaRYZ%E)Q_ZRfF8UD&}5G}&3BEwok#m`yP zIU1%F=Qw-YSK<$y($}+5^)AXH2hZ}u-B}&2*7`DrLUmU=cl?VzvTttZUixBZ2^#wi za&B*H)hxrtK3uenQN0E`w*s@XtzWjI(YFV!7f*-2u?4xBT@wBly^ZwWP;48tO(W9j zxiy{xs9K=^aC|d~6LGo9352WFvO&+hfhKRQA zLV9nUMxe&v3UY8$qTYgVOoQO&4Lp;>c}=i}#MCy<3^pJ76qD7@X~Q0A+V8q7Lnp7z189wT5Giu<8VDkn1VtUpBq8 zg%~4h)Q=b=glF0we<6`!6?tiC>zhDn(6$vr;F96 zM_>dO0f8cF5C1j^^c&t$Gki>lKTe2e(&lwI$B}7Wxo^V}_`X=~kZxGbFf2NNDZ@y$8CzrY0+sx|x@R?qQov3f?oKh3`}^`w4Z#lI1? z62EK%Q|&g+Kk(8D|Hob_J!bLYlLOOZQZbnvq-gqMCIibb8K}hch{ih7WM}Y@=_l^# zfn8B=`VzdQH%ZJtk#U*?;d=)g8OU((XFH?RT~}dXIzm^~(U~RD+gFy84>gh>q255V z5)!1|J2#BKe>B_p(x@ucg5Zy{)l_kSC3i>n0dA9#kn?>JiPhTSQUpgTwVE7oiq1!- zhyj|$n;alOCzaM??~;UJmE!Ck9msq0S2>VJp8#?bVw(0$YxW%}nx;L4XN=y#6dhV4 z^(g>n!n=R7-#z8E@pc*&pa|hD{L*OSzhQ}c6|%ukr}m(Cu?gXZC74eth8vc6eFZlx zv7PyDSn32>{Zq&$g@x6_C`Se#{Au$x2xZCHH)$)TE4qil zfmkaz6F4ixcf%5=;fAGCkw(jBJhuC8STYsE4NG^vKCEZTT(9&MbVJh|GnM(Gb<>}l z9oO33@p^F{Tz*AsTsM@!*Jt>;uro@i##qB{d+G>h2JD4P*LMv?{OP!Bi0&fd^!X#W zHQM>pan}&tMa1cENNeT$)7O>pT|}IIpDhdyL1a$={B>u#jED*FT_!d6?xys#wHFua zm~?#?(NF&LKpEdf#QFJ~&7k_WDLrLvmAi;I-PV^8eeNfiE|(E8fxe4qi$7i8Ma1d) zE~5AR>D}cnB2MRTJcH_A{&am85v2zc`ZA(dK!65L1+J-ZUwX42KBbJoRQrorGbgm! zs@CqIH#-#__A%x}WF+r)BK`8ml)2Sya5k@C5jLgC8-mY)e%_3fznr}tv^;1X;q>t! z&2J$8lH&=fS!lm1UJ<3)TTtPC*cz4zE22kfI#bqBD2sw>oIb97{I#sMbV%@MlV~#0 zpX;G^ee5sNUz;u1rSyVbYL6_~rDC#R*JB~*&4S%J1bzMmyR~>H4?3Z>yXdXaFle)U4h}72f_3i zj!wYngc;NEDF|!`;0{YZV#c6e)DHry#xe|J`s6`7V06fdF}>d25*QtFVodKq=K`z4 z3XEWKJgu=61T>i59NrJC>L^({!5W?%dH5Y*y;(ZZMP3uc?I{Hnua^C z;C54V=M}=_)Kc7e#gh%+omVeV0X$sLDR}%fM7(3=3_}II$JEpG?%jb^sIV$$*Hn!# z1V!p`5XibZWxzQiyvKQ+o!(0nrdYf`Ck#XC0ld>$MtbL3VyWg{V3`6RhKo!bV3iRc zhLwifiC0YDdBvHrv~VlH>S7-uCi^!MA+GDtg{0}utLq8tMWG)~$wC_m-1_t_B00aI zeu;O#`e#!fediVDp^tND)Bj@-Zq--AV1)DrfdXWpu6iY|5ArhLeIw|Z?x$f0ih^ny z=-BUshx3OBR+hV@+T=m6Sb!1P2uT93L;g!KN2ldm@-Hd6ziO(PKPds)z*p)WT08O`9S9a10KTBa@!$Ciw-2t(=e6=+QT8j!*$e$Vx+ph*1yd|O+X-VSJ`YPDDFgmV_`k!Bjo1#Z7g$!LCJ7b{8b9)!;no| zym9b?K7^NEHnX`;#;E*G@+|XbuwGlK_osZFcb>iG{{z-KEJm|Cw)L2+O1B~>I|8~;c(KA&T;v2d$ zN3ZNAY3qXYO**KTjIAT4en#B%w#N*&+EdN<`FVxa-2dSfQFEH}qCXD3 z70h1nn8nlpFssC3IoFIgK4|)zqy}=e00c)Fk4g{Rwo0j!s#w197Sp`R1<(3#s@L2LOpq<%x&`P=Oq;PuUVK?YbH7`$*&w#DVI zK~I29$=E}^pimuycUfbMsZO4);R>xHykv0o5ErDw7F>nbR8z*n>R-UHi9$6^(LG)p znhE#H5rlj3{}3+GB-|91j^;W>y4_Hf^wFsL4bPRb`@@4b8P@V62)7KFwMz>(H_vVS zPd|hx*aA9;V9OgJ_14c`U?y5vPPNBhO5j@I_U4~^N$A4b!0gxt<0?1||E&>ZZ06R8 zt(Q@g>F@^myCFY?Ok3#Q5-$Olw-kbr_g-1w!4JM_vPzRE3k-ZDk^ zY30y;{a!tBr3&e;8h2jCVOYIzPkcqKlluzJc$yo-M& zLcHC}U*Wvw7Y0|Ve1bHL2!{zX9>N5Vh8fJ!)2=j#^qO8WfT>py)2>&*h-;1YAyO^= zCNB!E+;^oEhE9d}0oSNpJ`*>d`7g^d9U{@JLy+p4cZf-73)3OmHR}*(^pp-^77p_- zvqH7Wd$UWjw_eJ(XKc9CsG`~J8D6)=j^}rXx4hU1w`W`fDd_eLW8h>NpZjTODhuor zVB`gFfgd6N!t{K52ENfp8oy&;o1tq({^czj4aNyr+@WE0gOBhmAK}ZOBkQ{dHK0>r za(hPDcY6l@C=J&xqE0|QIycmGdj|e$W?oaz`w`C+AoJ}RTsYsJ5m6(N(ZUuAW4cz$ zA&{pX2uYJVPRHmukOUOXU`>S@J*4RN45Z@@7J2`G3&Yo{Ta*X!NN{D1YC+|Xs7A^3{Jo?Bx=a7k$~ZGHDf$OK$N2;5jr{| z5LOekw3KHT+7uCSleDE$`t?*O(&yoqrNWW5xp>~1tKZH28FK(qRY_%S(fBf|g;g$| zdHQyQ`!jyIM410y_h+!M{2g^jy^0Ra?|g6qe|;C_Rq-+^c0Bf_!p^Uq`W? z_>@&dk^bs`Xek^bVqn2t|cAwC9{K}gGVdM36N<1MV|&(eD{V#8q&Qmhoj zFEc0^!Plbmb1a92!x=XEGU_m9{}yJ#>tmXQ;T(eIMV7?*q3ap7S?6VS!5tTEY?cM~ z^DMHGGvRlA&Bc?zsJR)_*IcXsM)3t>`kISJftdj3RM^;TSUd6J;`B8aAH$YtnA~D) z3O4p(F1|)DGl0I8;yt`eY!_CuU^}v69Z~0B!q;3(WOI^hF7CuN7bU~=4Hs*Wudo@f z6yC*NvD}Z0)NM&8<1XPFE(S0!`O1H`UPbWVaKUwC(+sNn!0JE_-*CY&jO;kSdbEL! z)2d(^eZ$45fOo@14oW2L?VrUrTx_2ub;U5giR7YA_!ThEM0qA1Q;(zYI=CU`ib0JQ z!5#r-0rTH*u@|1h+;FiE&*p}Ue}kv&0>so^$k+Uai$%G(;i4$;8?yK=xd@kF=1hwt zB3f9j02>NFek&rm3@JB(|&3ubr zHjT9-ov#?9C|+YQi_h^q9{LrK*xaxSP^B<2QH_1cm z8Wzrf42PQbAdN0xz}gX_**vZ@wP-h%BdVr?hgdU3g)wzEcp#F@QOO*))py0&zRMK~ zkfjohOC2HXyIkSWOfe4JZPj2dS12XXNK71LrAi@iT)i9b{>v45g2po{465C zVs72`T=6VW-S-#|Jukwiy2I*gV4fGz-Q){k-r6Rg>JF<;%)ub^+B}_G6RQ#*uWxI6m-2J6QNbsMH4eq-#^YAm- zN&lJb^O>QX$$l8q2olDBCOd;l&<6iN2+Pkf#(vp2hTS8~^+P;)J!Ii}VHj)UUb3Uh znI;7{|2C-@0~*!ZlFhJWLLV942aLvC&ZCbE?*c~V!CdvR;h(dy7gpSoM)hFEHwIT56QD)jZdYc0MuBficb&^W1BU z^Pzd3Kh{ahGxk#~=UsWm)lna3Id7YU&DqXd=D9T2dBZ%{=Q``nb286)#XR@RcV05j z%k!PJ=DEIwv&KBH3pmf3XAEsmn`hj0_yjIxr`n{fuUk1QO~S{moqw3;`Zms^=J|)V zPMvvP(aw3$JeRb0mf)Fu?tT0lR2%*zhS=KoXRx@3%VE0Yo=Yu0GP9;PA5}q+4g-_0 zHmsgRW**ql3$}4A5LH)ZyIX$fYB%S>!v~C;r{S)g$v3tKui~+Ez*2^jhif5Dn^uU^+} zlC6{(8MD0-RF(On_$j|(@}rr!2hNN2yi^lU_7RtAV%+&o#A%f1uKKC_q+}x5-uVT^ znX%+_WTqO9KxUc1hgBhG4k|ignhOTmP)Q#tl^EevJzYgM4mbC{?%p-O)5Idwo_vwt zb?~0WL+$lAgCl;RVJDB4rVdnvUTm6=KIdQ|GyR>~hD);|J)-IWXy_XziY5~HGPL<^ z!RO+#;M)2YS+VnWU))ripYhBiEeyi68}FL@tG#z_i$CJAdlE!RAKk7CZo@x z(oQX+&KDTOqn@5qM8QkY{7Wo&nh`_uRR~*;oDQPW!$1Bxw8u z@Qy=c7P+d81$^fbKd0L}1L#{2jPQxSp@ZYM3x4I#lwndpXMwBQV92S&LfhCawaKEa zkh}T!c$ibr;4dG8c=hhetW53yqwHPaqAt4s@tN5L7O&hdvdTr2izt+MOG`vE zQ%g-tGYb$9NN&PE2=4H zF9o70LM+^?j3#WD(5Y)%*lGJ)8_zHOUv1o(dpVN^J`A5G&T*&ulx-T1u8tM%Lo}C9 zFN4TB|MXMkjNUNy%At_IH%rP($#P>n^#`lxMml2SDq8k`vGP!Qm6zvII>v|%b}O%? z)PWq*?nk2v8Fll4v@7shWeLt>%ML>ALWj_C{1Bt7jkd5E6Ztd)y-tX-!K6hg6;PqK zbAy47q>AT=kv{!TJba}aoo=)xA)6y^^zMIT8SPFdfaT7Ke6{;O=i-d_poO9&@H}s# zFZ@$B&U-v5rT-XH(2Yh=*5u7Mbf+<*(;IkwcRIpoBR3x4m%7vInRhIY??Fcewj(ZR zwWr;5;GOnKhW0&j&~#F6?Lm`!B~klb=r>8rru;|`I+?voc}Pz>B;Xtd5T=-rR_@|2$R2KMj>zPTs07;UC!25{eAG&&exiyB~m0=y!PH|{m7?`g+8XyCJY z(Zqjh1K-?>_A#Lp0~VuE@{5$bp%=yHt9GyeZ+@W{y+gG4mfkd< zO=jHLn;tgGm^EH>p0PE2l@I^Hi;gt5CXeyu{k>_Vik;$3lMpKP6obBL8+(h!@H<4P?s@KL1U@u$9G{V$>q+^kG~m2?_&vm zJS3R*={~_ve#jl8)4`L1sXt5g|5xAv~Sls)FeKbG1ocW3c z!UL_V=tILpzV^1K7|0?#_}=vGnxt*bSOTQ;Llknn4;{>wF>VN<%fP=XgiiBz6mRWj zPu&mG2nYK_wRlqq%~Ji_1d{CEpOdfk?>w{Y-*x7{bi+Bb?B5=JyZSeX&+AM3t4@9# z`N&TGb$rKIQH<{7&3$DjBloMFe5kMNe654Wgwv=X*})vFZBc*eV7@Y(njv$SRbTAuVHI^Wi!O15 z(`b*gkXj6;#;I^Rki{CD9uf3QiU2>|pT6BERygtcY+sJ!B!2`Zb)3Z0b%@zv`r4bn z8A-#ajWi%g+hz8hr=|Gx=*mDDEsL_UZDtPZG8f3JU zBQz+AMw&&)ehB&s(^M{w;=u`uY9Qkd@P$z{mU#wn9z`Siqy^x28Iw9Zr_=V(Rb&*r zH67ogO3CX2_^~Luojnuav__*YUN)B%%7Mk6Z;6pLu8*M~@Uc^=rw68>5beN5V^~5iYBw>J!J%MT0VS@8S*xHzq_$iP8zIrgV@MCMJ zw@1CQ>v``X7=`2A*eISlgk}nr`@s5{K#ZjCH4HlXf}eIr_iZJjK+qio`lu*&=lIw7nxl(Go(Dwi94szwf`6~Z7SXN zj}hH(ql1m;%LeC|+h{2j^=fb)yq&IQSns9>@+mXuRKB`^1~Am<)fo`?ntYf%raR~$ z>To9BK`+5dawg28eGTlVVa{o@X$v(vOm~jpqwmI2=0BXL+)bmQB+Bllt2~4_#F*_q zmyYprbPYk&zCjGZ*>f=jv5d{7;cT8a-#nK_0@lwJv)EO8z(+IdT`?wRjo?@2(&=ED zeh+<&8-`N90Grr(jY>sVx!Td(dj-0xiqUB2gn4v?!G(853V1QnvW3lUgw1`8m!CHkpARQj3+Du53o4&%MkXrW7P4fp+hkcg6<^=W7m7Ix?9bXx5)`($6E={%DjmqXhO zijC|VVc&Q!GQw6ye0f1^?*5zy$5!*>==~iFXfV%OO}%A%_GHm?gG|b8Y1B=;ADdx%3LAM@1gJn`H;`3wiW*|7C&pvoDiv&8Mkd=nZNrxnuP` z{L?iMTwXry!>_Cnwr)N;-p1SV>3W&7zifdi$Uf~JWmXX(cK+6*NHwpBMsxh;`3N5e zF$dWP{|}DBLYkJD}k@Q}pEy%vcg_iIvHS)4Ynfa+=`rb{ILD291+i#o; zuLvWFvd3!`Z6s((T{QWbL!9>m4NHgOOAO)$3w=W6;kUh;i0k5)dH8L211$`jJejY| z!*4qQEwzi5800)+p|>+u7sNxCLd*LFJEttAC#g})BObk+ZVS|%R`onR+SO@W=3u0> zK12Qa<>lywuxF{C+?4S-D`>RwL!pC8SI}8Hm!_5UW|kVv`>#Stn03XgVE79rUbTwe z)*lPbSiFVfOCQ|SEG93Z_8qfH`5tVLzW9B72i$9|-0J}vXWS=3Ne|FGsVE+x{d!|0 z?guNH*ddbgrUz(bXjdi$h!L%D(E(!5$wU8ztpcjE@LzPJXhdLubfpOPdOe}bAfMlO z-)GS_vDf4lE1fr}E8q6JV0fS^{=bdy7>1|JB5b-mz9S%<*mptCls__pU$WA0nYW+J zI~sY52iQUZ95NCf@+=1X6(oC zj(Cv18!a2uwc*DqfWjM0X;b$_Q-Xt?C7*qa%IyTr8TJr1U_rKE`?(QxTU8)C`k#2R z?Ky0zr+}kMY&re-ZL4V@t>SjE{gmyjSq(+{A^+wadiML(bbN304VKAYOtfTEmDmxD zEQS7*sRQ~rgc=M+ZY8d25R0kIaWp?zO6Qr;pa#*S)pz3AKXTZI9z6+uQExuxVOl7f z+`t_V(~${XyhY$GfgL;r?isN-!?bQFLpl?lSco$Q!Uc$pNdpghgeIu;Qy-y;F_2Be zHD^fQ_GS!=tr!5w)qRvh0qUjzdCU6y^14T8&|g{~v_=iy20md8oh4>K1Fu{|2Y5M< zJ{=ATuaY|kTuXmu&0o^b5ktDcnOjEV7_vP&p9ONqqmZ&+6;wglbQaA!AEo6=dcM5+ zv1_RtR2Y4tr8;cZ|CH*ib+kil-=;lI`>_@Ayx?)Vs4LI5$Gh?z%_luUcgZH~Sr6kK zEA2dQ=V%)pL;1{T=Iv3XEr9iQ=()fu=s8<7YS?6_{iy>Mz=&&W5?JNhdCQZu&d<>$ z;FdtrQG<~wwsnCU=tOp(w=-n}wvy{9^QL718*;B#cZ4k9&#^_oB2HzP?mE-_?im31W)Anl?rUy8%TwjM?FoWBmN=- z;R=vK+-0^mO;@hTef%v44du3{>1{%roqC$)8XZ`a`Ls>+a}U(2mE3%Q588|Y1N&q% zbY7A-kFTTwR(QuEkqLf5dS6L^?1NTv_r%NifvU?Wq?MF=+s%ldgb7rZ44#3S=U(u{ zYMw@KyDxaM1gRh1=(E#X>57raFXD5ZpKwpQf4Ka$N4H(7T{vPya z&GU545J&QHvpsw~v3CPg7`F3BBu%YIU{RG+ohTX$Ocj6aR_5z0tfn*FuI*Q3F>vP{ z+eR~(&tGaGT-quTpI1w>P<6k){DWG$$fHDbyk!g@`wE>el*99{&|G&1!FOg~ulduM zu2A2$-Sd0cdHrk98O;uQi?J04;`yN0=p#l)ILx94chOsT=WFzNcN<>ovp=o~=U$hD z_Hg?QMQGYdx4_-!6~V2$FzjtHyUqOkE?R0okI_WBeN+S3%6{-boucS4Crb5yE`OJNimfN2nQ=uBr-jKB8 zps5gv4cFplP8m4OxAz&j7ZMvT((x^}hPY&6*X}L&^(Tn&7VUNFdv$Ai)Fi2W(n9@X* zjx6D?6;NMi()-j#eK8NO?#X1v7%QhgpsyJ`9)xtlllnO~e@wsZ-t99V`%@sC__r^& zenIcD_VBUaFb-A-wjbh=pJX2CV;=?@24&)6_@#s;D(SO)?D3$NfPR&>%Euln(ub48 zV#%xXsPM5zf?f}+^lHAleC(m1g@M-c1ATqc&<(#jXEkD*Y-}z6-iH^TgsY>QFW)Tg z*ZcAVxZgC%*Y1lmL4=WE;*6%O#~fdKFVIq9+gzm;`r17~t0ykBb-q06OZawMeR=wq z*b;jA@ipR}2w%>ZSSIKA@sGcxePU79B}rKSUF!{&e^SQ9K zxIN6yp%^dj3A0z=9%Kl&*Yz&B<7tFPO$p~0f1vHX9LauR_OHfZWAQw(U*_MOrSZdI!pm4v z$6~ZyymW)<@XK?o48Nn}yL}Ym(DisH7+v-gy6~JIKQHc){@nLx8Zl(5KQ>Ih+kg5L zdH5uCKqEMyK4c!@Fa<=M$Y17B=+D!UCZJrUIVsZgk!hfE@EG7{bj%@t{^rjZhQ#+7#4pMCfxLgKSe}xxlbWJJ z=3rjjN-dBR-_kwESgpM+=XMJ6d>2+=Ke? z{uk&FmeGgLya0?=t-L@N8HFeYd(g9++;Ddugt^=*R@N>jocOMcpz(^|vFWkR4eZO``JI-CcPqo~_u=GCD#PARDJJ|1Cp!vAau-x1%Xt1NMmN7EIo@C%}U!(zQcETq6 z>LRsx*uv*U*n6DhPy9iL_(zRGs(u7glq%B}UJ_xy#ExRahY|K4`Qv}k zcy8*Ty+LSGPP__#ml2>-MA5s1_wE_KN5Z+FTl-mDVW^tV?lLfjv; zH{^*`YwRC%5<*zD9{U5&iEQCmwT}D&CpKRCh;;V8ME!)|t0H++CtdWv1@Gt-f*%FJ zf6+--DZz_l0aa4)W}%7k8!M6awPaYroq|d#m*a`NB0hJ9`R#|?Ap#jwi+Vz z4P*(}6-@|aDY#V!ve|I5rH|oP0$HuGAsmb7t3eFUa>RrlKhW{ni3whrJsL)a>W<_zRR&CG((p@IBmGh2pGVib?+D{0wLd`n+8{l6=B zr7z1stup$tnYiuk$D({1l56mlaqU33Hy&e$#lmx5I`J`Zy$djfqKW^SgBl+HF z_65v`wb6V-49obhBAgzv%m}Z1%rDW--h)^Wag!t8N_urb9}!#{XJhde<4lF6YcR zlq!muk9D;*p55YY+tX)4$5Ld`e#69$6(Xxi2`tN7KIRg`)r8@S^~c8R6W}%AQ&~^m zp1_LH*EM~3!F4R|zpMK4b?jbqiKqr@dw(pp+QJ!#+HOR3M3_fj&*IVckuiMs^`dKV zzyObh*sUR5sczD#Or8@uut?itmdEf@*E4*w^aafQ7dK9d8o{50(yNH~PxisSk_D2#kmi zhOxm$5#ekf#vZ0D(wkdHuoq~Od~W5DB=ifk*w~Snl1cJ(5VwtF(MDlW@Vb#~ zF^Y`}l*L{3PzJS65=s#5nmr2h&t_U2%lRnwf>)O)?u}Lg-b&6T$w5ttc@jJdRIGW=|_{cN{;T%-;2wjF`!f$8qO)79srY zUyWz42zkR1%j_Qwkn(Qe6%#Nt?-Co=x(O^YzAN5|_&bro?vLWc0h`tn%*T!|V0Luk zUB*k$=d(e(__H_feKUJl%mSI|qevv)mA(P@me3?Irs31Q8EX-mdUXj*LQ>&?zj!md zt2f@He+Tm~+OTmGx)NuA5-@WMC$b)53^X`PCbCuZCUj{-ITO#o{kETrR2BCOpU@He zAhAyY+rsd0`&eura_FO*hEmeu8*Ws)X=1d08p+=t!uo6oyWhm;O=7nSkIze!Sa=Y& z;SIZGrvBUaA=BB&2wUX_-aLuTyLmFuWMms^Aivy7*KUeNw&;fjQS4ai`{Ou#ogfIs zSYghn<{RuAk&767iLa^?oJkx{Sp)hy2;QN<|V3!OBMPnyaS z#B^^Z(Sx~lD)Z;da?lYqQ(1*kG|xHVHnvtA(c?#MXXBs?#PeewIgObS#&cs|K5H5a zQne|Zh9xCQI4ef*hG}d7tM9`vPGgy2sX`sq_p$fwuO=lrevvUK>5qDx4V8^wHJz=e z4ZOz;b{)gS96N)>c4LF=b5O6KfII+Kn9Vbc}%He|w^}shnkvbU9^5uxc zB)&9*o4N{K!2FhrXO~ z^H_I^10^n=Nm$eS;ELY|G2#*Ry=+TZLpT{^-x&%k!n2Bz+aOe2 z@B1+EVI~cB4!w`vA^Ubs3QHP!)wN%P=Sotjz09f$(#`fIus%-Qgkv9YYSv?WidCiq z8McPc>dUXBut;-j@~RMfFBA)3X-D&TW)}~4lfjXEFocgyg@_$y{%R__o;AYXn#z)y zUq2p|#`+C8+|T~5Tge>}a5~TF2S>AEZaehHUmnNfy}elwRx2s#&x_O84Qw84Jfvk< zSdXMJcy)P88oN;p)2R6@1BL|7?oUQ$&~LUcVkgLRPS7hhUOk`1!!|fR9|LCTTCDax z(%CJ;Y^Jnuc?ikxHht18*4W{Nrb2y5Yl_gTO~!}b2HW@b#RJeJFKRaJL_d~*i`S;J zn?)y&55ti;gJFA)F{$HhDA_d=Z7H4%?{xqtFU(}-9wNDYI8vT~V|+s zh12P)tu4Q3%b> zXRou)c;3B$O=e}VDGD$aaNkhCR^0B0x1W3i=Vh^YMx%=2Ad?>!Q?Yi)oSNh9k;pyu zX5p#SG-HB26tv%GCUyLUo}0k$Da81)C-9Zx?g)2oE@V{<28{Q0d~C5W97Kh(irM?3 zLh%+h)eHk7!S2-u*>08zB?WpHj`8JKl&(qFN#$y4Te*)O89sd__y8I%dKRJ6u>n<%?NZNEgRL;5ds< z&5C7l5(H@S9>|X@hUw-=jvL4?EoMdHQA)uQ7CjxmG&|7#c`ZKL(w`j_?~#6{!?MmK z*8b_$IKS;5>u|WxBBU%NWikCnqHE(B;BbOD?&Nr!QxD6u*P&kDbw(tS?0t6 z_UfP2ljWQsOs^zjU$sTO2!N-}LaRxGJ!>VFW`{T>{L)GxK4HWkTgk>*A=PUKu~th} zX}dUiguO)frEu?GWF?zMK~ke&<_K$UxZ%M~DYy?aJhaJ*`%uH`O(+Onq3fhS^IIst zNK^)2tw@ygc134+-=ZJraJ(q`x$DDZf~`mpf{5mxBrzM$6rx9K1{`ABxr$Yx=1)iQ z*$+TMwq*15e9Z%_6STFX_?mx-T}85SC=a!Yc_n-cv#r9I6%+Ne6$1p*ban~D$^5~? zovR;Y1E@y~+8p!AaObNJu^4K^s@lMtRCGyZx);AyBk!Dm|-jZ zmf(DFx;Mj`jKRhXI;pHo)vyN!M)Ixy#CoP?hjnaKY|=B zxb3yyDV@Hkx6{uqWNVh--*Gq$i;Rrpt6xLVaK zTi9^cI+Bm5!j2kMzo!bDHJklYgPnbDm?NR+pX)X@7!{a;(>m zLqjHZOoC$z5^ga4HtOnW>k-K6A`C>~mTF_=o5c3`H@0yTYKhOAinsZFx4+#>dcA}) zYX}chw0)o@!2>2~ZQ{!izT01A5Y7kN^j!4?J&7F8B4o-Tq z7){|}&%-}!<0a3tDG9c+Zx@X!BV>5jCvfTwDJQ~UkdrD;ds|OZF5*odWCY~dKr&+Z zrRTB3wDF*7)*nacDr4+hz=X#J!uo6=XJYuYY8EsJ`q8~ZQedq->B=!H){f$KdD5g& zu!Qiqy=;>=Dhb=kMs9ZRfV03>oP52VA-7~Qn!j3&X@G4(HM6sU-aP9Cc6gS}E5hYv zJA>QNHUrxZ<7~U|uuVb>yN*JM7w=}{vm!vF@yeMV4Yz#mDqLd}`kg|+IGhAf}Bg@7UUSc@D|5PpZ=dZlPh7WKlyKg%_ zk;Y|ti*C9)n1pP(sYXn^@`xDclp0n@Bd~S3$-V=h0+f<>G3&)HG8!WzjCVOu`*VB} zWI%TeM?LXve8P5i%c#E!VA&%jUZz;lOa1HZU~%?-gWCat^r=9u`^j7bo| zXdJ$f!pnV?En+yved<+Mo6!d6rB_)Zjl3p!Y?4jrRAHeD3$G9Sb#fA!@Mgek>|d;G z3_tdo998YF!J|urr5^V>+a2rWW?$4zZqMaDM9oGwdoF1Bs{J)ulhN6IC!0&zVgt|G zg-yr`H@;?sM7*^6BfgC)K9)8dcDFPW-Zt{p zyV;yMw%rd6v;P7kMwZwtK0M*K{UIzb?|BOKr{{ayHTpY(?y2ec5N8+vKG5-)KV}FiT|*NWk=g~ zv*Gq~)Cg}qeHILVL1#$PzM(jc9t14f;D_m1KJg~L)X9D}qqEE?Svb>tQR`H6R2iIV zV%!q(5@tMi?1c}Y)SaK-%L0abdB_S2L-~@)rGe3kE*kzD=(1urde~zydSVuP@X`BN z#KeB?c5hTm#{K4DU(pq&Ci_x^twRlqD1LlS#@}qR7lAem>38pNmsX+-&voa|?_+PU z*Lv`jH&`F*FWtp{UFG>p5Bt!r@O3@x30>i|9`?aq;itRXu^=n{<=yO2UEvws;26~O z!Jc+>rsC-^+52^cW4hTxy23|I@>RAhS=qDQ?9fCi!9J7Srz`wkH+%1{@N!SP_<0c3 zcuzd3*Wvd(?ZOGE) z_+dBLCwOK#;%%1ai-fH%rinZ<;C!3iY!nesy~C~(o)obV5KRTAM4?A$G&LFyKvFjOz(y9sQqG}8uLvUU%8*9d6+~? zuwgpAA0{m5izE1z1MGx&rSgk|>_#B~98`V}ir5yD7Vf;~Jr+zoAk)?uI9OJ`&vpx0 zTs1|dkg#PK{{b9j;sMSF?6wdJZs8jd?t~d`Si{ASAwxHY`}OCiKEUHhTXb%(A2PQfOsEzklny3RHYQRTCX!g%h&m9S`XP+B z7;zTd*LnCuHdXdzgVTJNg`%C;?Z;`uPuNeYeF>kkySu$h#DH~79><&;K4oXbJ38+g z_{s)64~1{Nf%%UeHw?clT7TnAG+0;;$HnZ1?w2xu*WJ!~PJHFtHKtcKg1#H8VGy($ z^}OYkZ`OOf5&*|9Pdv){do@tc@gNyqK{wh)ZHVVtM_Emz!!&MU2X@}SNYQ>5V;2X5 z&rX~u{UF^Sz{z*U@~C61FQ5Jy^Xrdwzco2G*8TuKJ7F@C8KJb#!WwKGzd2yE%RXoy z#MgYrR{ej@ca+M~9B04je`Q%Yn6Eze|0B!3Jn1+yt9%a)wqL;+imO#^xpJ+lsqs$h zah6T}U93%WJM_~olW+=me$IkCWP2xE&qGeAsWbKjtD}fJ!Pet31wNG24Y^|#anyWv z^FF+*zUW5?!%rly`2zjz;D^3o;UV??>?dI7)MMxT8SY|`Rl}(D6@115MyM*s>3E$-sp6e36PlT%_ZE+CG6u8 zwg$KW99z4Z(Gr*N3YYM|T*42zgdcGUKk5>G!X^BqOZX`jwo0*Ya*24>CA`%o{Gv;E zyGwY7OZat{@E(`&8!q9uUBdg5tk+unzDvYMF5ypI!k@W>Pq>7?bP504CH$>R_5n=Ms)^ z2@iA$$GU`vxP-5F2@iJ(-{2Cy=~~$8m3$3&O>_xQb_w6^628MFe3wgju1oknm+*X- z@B)|c{W5&Fn)mrG5k)THB`)C=F5!QNM26|82wE1XYg#sb0;vk2{xL)=#75JQiALTd9tFC=a)g@jHmvJ$uYA{1yL?qQ3Gp>QcO zT~0{Y3c}h}qL2rW!CK;$_$Z+*j}gP6Cy>}i+{vlacih22FF3--fTTcnB_e}D-RK7{tym< z4^g3yh@tW@ac?|~3_pQ%J|P}WpQ7eRh}*~pLOL6Wd*V^TN{$lJc9a;&XT)vYXN0Uf zMvN852&p_y+z%fowCV(LE5W*V?j$h=eMuPkiWtXy1xYj!lJIZjb&43Q^O_;5Z-}w( z8`Sn&Vl4lbm@2;`#$DeL67)S`x!)7R^dGR+{XpE7wGgAN1%3Z)4UUbAgzmje3}+yi3cTo-WTeE)ow^-%rv{UWx=+B;Kc)wzdm||65lP+10BSXs z51=$V2K#4t_Kkz6+nEH)vahFP*-&a|Po#9t2;>j z`P4llA7N`ghyd#fD6J}@#Au;xodv%jvY67t4^YGL5->kVY0D$1$Qnv#mBY;0h}Lps zfUgL~Jxxi?)0Cz@OWB!csbN$F#fSD>UkBN=uumA?Y-w zxj$3S^55_y4>iA2TF02-xEmuT4`!$}G1|k6dA0{KIz5t+$^p#K6vgPAp^P;TWz;g9 z8P^SG)Nd3sCX8Z+`WqNcn8Dmi?_jLu4o1(+V}_tq=GK_TjFIyhv*E*pwsdA}NM~-d zGMI5r1|!wkj2Uwn$-bXiX=xsFtITK2QoxMM3K*HNh#4m>Vjg7{#*!8zyqK}VrHsTa zV+O|x#u`_mf)6max_>c}@gQ@HT#dA=8Hp@q#^_R1po+0`TbXIr3#^CZB}VIOnTL4? zGiK~y1P3&XFvpG9!5h4!O5%IM3<0cam-EvwLz2nqo@DSbSf4m8RF@aosPCKg{VbfH zg1%Mb8hw97-}mVI+xq^2zJILm4f=jU-%siL_xgTL-L2$TP3VyKFj-S^xuWUDGpZt< z`rbp|yDH|Tv9G=d>U&>(kI;84A;{J1Z{@jpk-=w}lZG4ILY-dWhGz34C5AmE#&P&r zBB8z2AH@w@eyAwyzmuGElia>^vmS$a21P@llq&xNL6efpp14+bVgtl7GSiEe7g~sK zX1)sGi?>yui}>R|y5YJP2e*ynU=`A{^z6*^g(>N2xw&L)5!RZbjFcrg1-WTrnISh5 zmQ_qfy zndB*oI*33eMd_^~zT%uq{GP7(I!agy*-94|<))DRV6NFFDp}ehD%}18!}Uy=sIaU9 zcdKyov7V=vocxruBGivyiW$?2GlwUV6Er8kpfJT!kdjVL(}IFr5ybLM&eFv>x#SY^ zuB{e%pLr3YWtqk4X@!~OVixAwL-M(k$uO74!w9=;y$fo)YMpN!DCI>*NtrC=TTQJ~QMow{|%;j?fw89k9&a%jEV*$C01Qqy-IRt zn1o!A%P(%0qRjj(OE#)<(dtG#(qIoQNrRpAi5u*sd=x>Bxn<^|8&A3|$jQvjAgA04 zGc${d$#-r=nQB-UXXg}>AKf5F)Z!ez9*%C1*Cu&wcui1R<<)^JG34ds=H?WWGw%6m z`31$~KkmvXvlf$9cVg7BpXt~}9a~KP?T&#*es?E^O!BH5jK93J6#QuH;vzY@Qpg4m z6#TA`e#;3lF-p%#(bbBpLtg7%5#dHzEr$$O;|fubKRhhNS^|eag(R=jWShxCo&xod zq}Iqxs&GYLq@mYpO^fG~*G77V^hHm!L&nn`B9uWTU5rZ1%)dkko^k`ZB1m zfm$N#Rwk$(s7Fc$jNR3q8956UkhPwu%zDo(@|)u?^0dojkng}em55^xYhZYFdU+1!26;>==83VEfwB@Ow!h4^)c z#E5VEkI1bON0?Fg_n3l9t|w=^6GMg?MVU)7p@+F`s+))P>+U)EITkU&i^=KkMVVPS z#g@#XlO@alR!dFEfQ)LK&rBis9BKM|j;UqCVMa*AE+>GJm-x zvp6N6?C+7AnOP{Lu9ksAJ+5wk$frFp=3auH>X|mbm^64;=S!`dqSQPRpYTY}%E3B; zDcI!El|>49-vq&?s402Tlx@k&O({+TQ_hM^a@mxV4+)`3|R7(?@>&S_pmH4%v9?Ap`J!7Ik;7*-7>XYJR-uo%Dds(S|c=O-JfE$$q_@j zS3wr3?FF%x!6S$bm{``Xu64!aiC*(_)AASMCm66GxJGR1CFM=3dgYSWd*x+XigMD) zJIJW>KOV%2adX05Xj810Wxb)O*J7DwU25rx-WcJzY0J?Qm54mIR`hP?LBS#wsfx?Y zQ0e#eRx0cru(o{+-GWn>f^~kTWoahH?U~-`P^K30AH*NrE8^>|AHdWi?VG!*@TeEo z_e+A-VC$ki3tC+@T<}cDR@SDNRC^VqWsuhqb?}JDspU(-uplQFqbDx^4{s2XII~`4*!YO7?{RT0KO(9ze|d`RWmN}nc{_PDZdOU7m&7zs6S*eLdxX5-kBL$m@lop7Zk`PtJF&jV3CH{ymHB2uY9t@d(mQRX3_GLqO|-h z=qm4`%)EjnnYzC}z{e!_p;ESkLjPtJrR710K1;|p{7y^*=C^@3#v=lAx3H){M3c9C z3&jFy=Ml^<72|Az9}~Lh`NnO%gGrEu_u2*b2ku4@8xHETSr& z6$-j(v$!6Y;fAL~xN4KUK5e9Gl9O6LVM1Uy6ypcD#FQhO{PGrN`+tbw6mUf;6n$Sj$TM3b2S_8Vd?}!ml`mSl{(Sfl^&LKKG=BIT?`AQt~LiM_+zc zs2TALQFJI&3#szY&Rj-bL|oY^q1vkCwdPBqD3Lz~Unbe_zcj~^osx}8h-Lc_nAaT> zM#!fK)qgFL9Xu%$ezqLcDc(iU5?$pwEoS~~o@GQ9HF3?B}FYCb74d<>yO zYlUDA;?y$c+K)=nehB&*JZD5VwJ6G00fZG{+#Ct8Tve>!1Q553%v@_GgjDA*R*kd% zg#{4gzJQ|4;=+P_DEI>bxcr2~d1>h>#Y)MNT7QcLOUZ+Q=%Q_+)5>>Qop=Pu@)zf&z(R$^2H|5jkV!rWD$GtJhl3zB ze0>~qY&8S3trwWZVq{HIn}-WQIayHo9pG!j1`rF~Wx-vBPpe~m9L9oSkeiH6!P361 z3dSx1IvG2YmQum)ct~8UUlp0-=`!(5%OyvH<_lAv{1lWy{tQ}xI^o;Z!D0(SYJ+og z^F+z_<&p!z#hJMaQp6BYmX$2%!(a<`0l84!xhdEX<&q=8OS3VeVd17{lFx&MHNGnd zBlt_y!EsEK-ubDxHXIjbvn=>M(kk^(@5w87HT-$#&65=)=`$Y0-KQ&j5_Y=zX%YH>^OG$G- zo$vR^qxvKiC^?7F!PDp!NP4xLy62GvLup$>WgT)BEGIRgSZa!j(y()`?Le__&3O}H&#;XEc9d>^KOv$xjg^P=`$;L3XG*yGKVYN`l)g?k5r(rK= zffe&fSn+b0i+SW27)mdh(7KZd)qE;g>%j{7>_h^i96&#Z~&ZZagk+nB3S#7cb7WkWa%c1q;bB zFf>c|#2M^^uv7|N8ZK<_^N8vERJ8h_yw>0)X1{>6wz zu(oR>gjkBn>WEyjF`_VsR7Dh%*Fglwq40%R+Z)57hkpylYD3;ZURB4WfbgSe7$@>t zBd;w-1*HOE;-)tjzec3zTE*_7Jwoj+{)`Z{F6}Qy+oS!(v;((641K6%F=)?4D8ts) zUyY{}@id^AIKkTlmm##~mtyk|Re(`{y8qP)a25;=HE6a0x(&7kd8@yeAmn_1E0)>P zNGKNk5Cjx$ySO@V#n6)a?xo0LWhK7?rur=uvbWtYiV!OG{m9&c^o8Vbq=6iQKcAFk z;nFYPO1ig-twh@XT@c^+b5s1%b&23RbxeDcX-128V(Dh1nAQAc7M zfHiPI&NA}cfFf-Fi!!2yM&c7W7` z2a)Z;t#FNy4+mhh=8>I|m^$sC9=aqtT@flyJ1 zMHk?0C8&mW(Gd_xT46DHZ6LNOBH-*|e+%pt7saT8L@4M zMHh%{jM>ZQ7s0?Gn~Je2t|t;isiGId>)mPfvHKpjM8f76cX$@C8|)K{>CB zme)GPx`3x-eX{$f%ZtZ(~L8wZ!JiD*PO~ zxUdl8pR^&N?H$n&7+!y%3VCGHAT&Z$xf?c#F`49Kj518fe`0cA!7NL`Pn5LAG_XNY&tig(>9N;G#70*bqxD3`zLGp#YG}L1~lklGj78i(Ird zei2!SXR+`b4iUZ-R0>~!UmcHLdOk&15(le<830uy_K4f#wd30XhNgE!oz@)`VilgJ zkK&gkl7@IZb8R!*vS*f9g?q!LMG$^dXaH!95w^hw_LaCw6BRjj%P-ye4qI(Uc^bE7? zHAb&v2U)A3o>~slO4`ht154O0!(m!(tTZH)(A25NO}o7Pky%jKUc;&?e4hIZtL{_c zkzLrpN2j@&o%7P%PEhOPL4@?eC_48!!Q)dxDm0$-g~HEk9Q}>LuWFo&hqHqJU5%^H zD*TbgtA0|rNn>NH!ar&3xG1re{Gka4|5Oa!U=fK5wRuokfUm|ic#10ujMVs0jKV`T zPK{MKS!44cg{N!m6{qk#jh7_|jQ7v-G{Fx~e?O5q5N3tv!pn8xOh z6`rbbA|7ms{L(e9|5o9}8VB{l&m{{6n;vMia`GD2A~b*FUK6G>u!ZEfy6{)423eg$p%K zd`#g|jYn$CHSV!q#lNia;YzC_ysHUqcxWXG_)O!@Z3_ROaYn7e?HbqbP}t3^TDb0Y zg}pUy*r~8tP_tMHc^TPOWT5n2TS8hh){3cK}H_*;$pXdH1~#owrLg2t1(aI1=+qp?lnER9<= zUM#Q)^DoF?kRq>81me)RR$v%&BuT};t#OjZA8K5p@z)yHYka;d{Wz7L;y}2_FG1tp z5@Y@qYC?!+sDD=_h}GCDS-h`6$ViP-_bYsx#@QNYYFwl7Vu7)02OUuSB^oDa{G`BE zFig^f=QTsB#&sGm)3`z4?wGC`|Eh7h#=S#Te1*ob8dqsNLE{>Y=Kx!K;dpz!CgceQ z;6oZe(1qVqE!d!OgT^mv+^BJ##?2ak(uF@z>Cb4~qVcbx=zmdQt0w%Z8QL}O6{adg z4yg?KYHZSYkj7pb-=uMn#xpby(|Eqd(Ha+pSycfEny^+gjMR9u#z`8#s_`U^4`@7H zN?e z!VRiI(0_#Vre3(JQ@BRsAkF`V#x=840q<*!BTcfxIGKh9;?&ra zD*n928KnZF|Nqp4xH}XB>HCE_t&_vMBz~yC*7qm4v0zqgBujS zRpW-`3g4x%1#i#D^*>z`I<<%jG@g*J5{NZgw4hFR$zvLqqZO zPo|HoQ1P#I;b$=a5hibFLg`_}@V>@4`6nd+J3?j<*P!q>8lThgKWSXCK#3ebk|_Br zG=FytGSL8Ypz1=i#%Fry^&fVIWH5y)hEW=q;>(*zM{d!$^#+CS)HqvXj6IpYuD6QE zxh;uP2Pq6QLE>|FstRt_xbsf5Ulj1NCNyb=w=`~;qvDTh+^VrSz$9Aa(6~e6&SoVc ziltY?XD?J0@YmS5MCBKuagY_GK~!LFu&l*p~^bife=1dkyG(Vn$N$jQZ0F5mg zCn{_u*_tq3GtATY4vnX4oTl*vjSDp{(HIU8S)fVd4H{4VR#o_Ujn|!4_;raf|HHmf zgm*QASts~ZV=s-r(zsglw`iQCCDNwx)H5nSg8i)+1Czd2xQE6jo!(DiG5`ED!K@k1 z%~T?d)A(?U%3!3%El_DlMkZ-otMOcoOEiC`#yuj{AbeP3%VL%PW?-wRq4*JVks*8q zvc~2=6mHbmn5Q!MQR6l}>i^WZ?u6p+i6_k>zlxa(hiE(juMvs-uh+OttLmHFp?^gJ z<7&k)Q!^xD!ioeb8W-vW_iH>xo9z~j&3I@g_#f1G(#xuaPinmCH-&37ZYovy4R`dv zsK7a+%HWHx1X~ru4;r`WtyZVT3A%vZ9xDBWO2yw#x$t3g2zj zguQq^C|XdY@tDsP?uy@q(|ID^uHz5l(22mc8snSN5+BgGa*4tX8sldJWc+E3ZL1Wv z{-y~@C5q6^q*`>?Q%R(s#%I>3_@NrlIiPTo#(S$2o~iM4oWm3qEY`UE2ZbNg*rFE~+f5Ec{4 zCn=gRPq$#9#^n~(1^?36uTbIj8kfP85f!Y|c->irU(~ot$M4lRTDxS9Xk2?vum3mz zB_&Y*vlf}g2f-i;xT0~@uL}EM(;_66s`+CzK4era9;LD4H^qOm#s@nUo~7~hHppKT zus{<;8khV_;oCGWOILWV#`CNT6d_9! zvL8~|qH%&QaGl20x_~VjmtglKD!4;q$2NuE(RkHM3V*2a^z90_XlyO1RfIN8==@OO zKQ(TCUtzIL6A~&tsBk}x5ARoau*TK<6uv>@&bJhvsBx~&Z>GXlGEdiVzGj%9aiPYI zFQ^PwYFz)Z!ettpUskw6<3ufi8jV{u|Jxd`(-mrv82ulq3Eygl<_}bczi8~GD|A_7 z(|ao3ucwm8-a`ssuW{ooYLF&t+=LB)=%TwduA8WEj=*C5uhyQ)V$INblVW&CV~580 zribi;Y>lfljvK4^cWAr}I}%agI~pInPT`L=t{wkT*N-$P4lxoK!eqUT> z&@fI_;2w=5lN8R?I66z=Wf~{x_{TJE*N#Z8aRXjq5)FE$7y4g}>T}_Wuw65>p|1r4 zJ{=?Do3#Yq(l|rg_3vxEDoZt>LE{M;pVT;7Pb-O&WV?yiMa>tH6))ad=YIaE>4Vf1q*2N`;#=ZqxWXji+n=R*h4Ss|sE0 zir1KUtNfQ~+)d*WAHDtuYC@c^%Ami-_(gG9p#+V06{rf`q;Yh(i= z>C-i~>5WaE#;G&We$nFPnqY)0MBq}5>+l|&!0R<`)bX1&K0H^&zo@Zz=S}eM?Bc&) z;r$wW>Gl6pjcdPx{6&H$O|Ug8{G-M_G`^s5bFRwpN>>JYn)ZY!#Vj%E0s=Iir!`%; z#*qtE`gn~StvbV-G@oQ*L+4Ryp<4R@fRE7> zl6@H%2@+I%Ezz4YtF7>qFn0+9>z^Vd(gG z#Ih3+a0UG+b_1!fHxbz@%!j?-mF-8cTbYzNo{un*uswxONOULpY}lYm4X;BvqWz|g}xH;(Dg70j{ybAy%vuK_;%9Y}1E z;Czz^0+s+QOHI6lk|U`C>4SiE0Uriz3fLO36JTFXBN0JV-pf!wVmb4O6u_x~vj7(W zE&*Ht_&KLZh-S_N;uYW?!1I8)B{}!MG+;HrSPnyjvQ|{H7?d2>S?V9q5BaMc#n3<6 z1Ds8L4^<;Q1k#m&YXQFi+y=NCa6jM=oF*Y=ITMJ#0e=C!Ns4nf@d1_q3_UlPcvk1~@` zOhGXX1vLJKU_vnq#T*xPG7+W4wN497KnZeDR})b(p3pp7#2^&^tD!L{4-Hu&K0pDD z%l)5*5r}!Hd;y9@C|FQ@hGJu08oV-b41!1u3V+ zlY&a*rfH|5Xq!+!CgIagQc=#_w7x7<3>P&x2em*AzKQxw4b4S0P)+hs($o`qC~Ml= zJk&)2{k38K251b=0or5GI)5x;P!75PZas`ZLPPS%ANMy;sKf~_KZZaZH^d+j{8SrB zZY2`3Y#A=#@;%|L3e9;vfCyjl&u!_O`{k>_X4?qw!KD4arQ~DHD<+u?cfCf$ctGQg zbaI?b(cNRJ=&d~E#eGW!YSEa6O#^;|2+xMXcGvvrD)(O+`qWLn1n=?Dq^}fHY@^?n zYN$OH*rONcxO&5H+W^7x315k<-7V4z_h6&mMaS*<-{bP8bUxm`8M(b#b2`p+KaGAb zr@hVt$tC=;n?7|xP$7*^{JwW7@u|RMTuA?$t`1wb1l=*GPLYQ4mU_Zyse7oVeXcw< z_IoCsF{l%hdA_M~uJ>tsg3Oj9+wUL+%W!XnW{P_&u1X3ADU9f%@``rq;u)7nj%v1F zo-XGxUEdqNR-)LjdX5tpePSNz_9fF&4l3fvs~Sa>g~*A>UA1va28?u)F}6^?3G-sk zX~nZ9(yOjwijX1bS+9M2)hdRUk!_H9i*WoXAt1(tb-wbM40*V{HM&-2(o7NCif^nqo@C>9+On~_-4Ec?~+OhM#L#lvNiGTpS5qTRqsdB z1L@|JE!$$yiP5X~_-uEiDl`#zE;7#_YL@zt6%mgPzw!-z?$i{0x~JiHJGc2pO^;4- zBfoe2pBk%IEOnJ0X1b0FJJ?V}rII?U(~9wBzj?}tp{#{1Ynzvpy(!7_BvdfEV7Ck3 z$FaFM=1ox>)A9?m_k_r0spki@`%2_8*6LRBx2^k^k;4oQSCNCaYfG6da

D`HI)^ zAI?#uQo%_li(TrM#Ti|xMhIr`dbz>coeGs@oI@ny{Eb>BE6ZU~ z8gosg`-DxM^dEY=1ASNpB>N-64|EzGz97%Cv`WIi(Tr^QB3+HHgnBp;WkruQy-hH8 zm(wNWP1;-NYE7TBWIpSSVkS+qlIC}NM`A}}wI)mPbJUs+>j}*Juv&q4{S)M0CCTnf z%6AuP3R}$Y@?RSpzRhSKNAP7MaeO7Wc#dDXCiJpZr9oI5{VLkz4XH&}Lm4e^m2Wo` zVkocP?bTVa$K^^N0;@@5=zo8%<4Z!go#e*z8CTJ0QRL zG!I(C%lP5gq59pk@pGh7_3q74B%9aHW;fP|Z7xPSMj@lrR|J+=QB_5)rtUy9`hciz z-|2nDCx)uVTyCr?u^90k*}rxxyuL7i_v^uU3i#ZOkM~S+7(cdCj@^sv3_3^2+uE!l0nkqYXt2l*_nV;=Q1&U^O>qMe%%Lm{u z^6YqS={v3_w-zlFuvb@%sLc1AzH7)gaV^1?wo@-+?GbZHj?cdZqp_t#e=lCcOR_h8 z?;Z{9_1_A5BYG5a6>fIUgasK1<^^0_cBlv~6W0<**)`uRDx7k4K+Q6!diX@8HNm1U z*stkke91nmKvnlgt)$11;W~oCvvMR1 zXB?~eQbR4!6T79(n@2PFX>vPmOYUq|W<>L_;N^?~lB2}A%{B~;{RVC!it-E}t+F&~wt`|79B&6qCjYFX)yaX|~~mqlkV>y+xYhIjeR-!c{H?`{oK zKIa_Vs~N@;2y)Ttq$IDOk(I{l(9>`##-$AT;j+@@1J%x&>O~!Oae;p+wU?z4x$A^7 z=s{CF)o0U16AfR58h(oARZg3|>~?3wo3ZGZIq2hbeelawqGJxNv9_PGZ$?kD<+`uG zx5Br+zx@I`dE=H?9{b+?S!wXijAZkdju>GDK^xh*Ghh93wCtlN+q0jYYP9#6t`SQ- hOVe{ZcfGtRYaz+5mrj%z$D!Typ1jLobwfAF{{R5QmLUKD delta 94472 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%0D%149lrE%~;E4@ajcUR`Sw zf8p8J+NIVER=c}i`F|5fHR$NR_`X5@2IirUGq!!qL;q!7zMT3Rj$z|CzKa7_O=G^) zb5Ew`p_;SA`))PY)Oz(VkmcfiY`o3@agFO;rnSdH^D+-KCt9DYxhLaT!uY;EVRJn( zFx~4F;yu|!O$VdR{iR$kGW=7Bl*MLU>7{*?ERuwj<+--_n} zmK)#cZD;=BI`N5ZXZ{cQ<#S2&F)T!Hx5wGvHNYX>7X0UdJLWCD)(RHF&yG*wN$MYH zEKfPXWBFIwJN8)i?^B2_G1#|jviD9tBij#oA9aS^#5CN8uD;K^vLiXrQu(u`r89>; zeMkO%1uF}VRPV??@{LE>uaj(S$gk7A4%B1$-TJC;?!Qx?dno$_Gx6_@!Oxe)I?Gu0 z2@ipmOs%tYpH-tfZ^MzNw)-nz-Pd^6j(xS6f8Xc1w`8UF$R&^D9Vw|(U%WNml?AI$ z8s#~%v<{nfZ`q4WwcjJszKK|#ci77boI4nIWY(Hoe}?5l`)|^6uzwZTqqES=9GxMM z5?ZTt)}Ev9m{U(euXRkEk?(o&1UsHL znp6*REg~Cm33c>EE6P)^Z%40R9>w#Yb^UTS^-8Xa2ip2uzqEa=z0ORLjeTU%b&SEa zjKwv?-dxSz=AqV@f9G2HE_JrhAY{eSYhuS5mkh?mbL8>5FtOI{;26JSa3^(2M>I1} zjLqr#vWwOjp3LBv>67IHi{YycTfo9=+#FE)<#^76_6qOdh51P2kFoQh(aVuEokyGz zXmP!GGIU|D^9=h(3^v)K<1&M1oIp6dfHg69~hSfnXTg1H%J7Fsv}{$_zI4 z0R!^-!^AToj)yjH7zhS;4-DUkhhar#@PXriLAotHc3%2U)@F*Odx?Qd^09t}th}1@ z(oN2am==Sf0{+l_N3vP{7Jr=66@L08>kNI@i;r`cw9O;Mz>>H|bLg8Fb+6NSkjryd zes}xk13%k0W9y&y&Ald=$O(+W*nJOXPn|$sX2V24eP}2O=oVmpE-Pqd}V8G zd$Vx}|9^{r5}DPQ#C|Y*gUIw1xj)E+XVO9!(uW3Qgq8MVJFSp3pOXgtD&N_pwIlnj zeDIah{)046psuv-*@ip(-}bDO|4V0=dC&psi~J|LSBE%`RL|BQmbMLPxZ_UpRS=hu zXamRJmvXjYY?*HP9eVerHm)zV>I?pep1!1pk_4jzx7C-_&|uPXSg)}1S$# zX;xo2BjFnGz+F4x6)U&Hvaer+uL6K=|0bvxAu8TJ7V9;9yuFbEPFBjE~t2$ z!E?A_S-2WKi4KrI@(y5>9_Y`;Q2q||{#^8a6MBCsdf$8B=9T$JF4>X9c;u~4TA5T* zTe`<=xWjW_(#npBJ#}B#SKSHgekr~uORu=|xjS_36L6I7zS{CdOm^V=0(Hn%^4ynV z*-2_MC%0gw#y@=8v?k-!l$DMx?W_YPt}Q0Eu{oiQG5~tI3=W)k z1OHNVi5s2mMQ10W)05Hd!?3T0V+*>2>x;A2HQs4%YrfIkw)P6vC7*FMy^O8=%Gub< zZ<$T&CYsw?Qp{}@jlG%~?ApnmUhEplk!yfAJC!pokRki8a5Wvg&TNX@Xf#=QQ^&wZ zDWS`iC)226o>->wRScf-cjLD9C9W5mCf*}kYBsji?2d`v{HBTD%I}!y;dwXDq4}~A zZl}D{M-P2$Dz0DWjB_6N=N#A<+ugOq?OaB`E~S67=;utK>1i0|miT94dd|IuC9CFOKN!O{Sofr=Zz`kv;Mhk;{}cEBt+@ZM#QkTV zO?TO$asN+1J^t@MyuIyD&+hZww_#t~sk>vg^0klTz@KWKw)xy`Z1S5eN=&8HHn^; z=ViXNCfMVNdR%!wt37@T^&ZN4=-Vle+m3w25l1uzsaWQr>|mu`frY{ z#y?Re&!x`I(2Ey(*$lndGWJ^RgC|R8B4;FL<7Mk0`gN4tcK42{NR)eZ!0yvrD<=E@ z%zL726>mGT)q`wJgv)c^40M-G$4ANCO-G-Bo=CF+>WwywC!>CZ%4mp!Nc$j^9R`pOP$cuPMy z{dsO$ljqd*m7+zfKH@sssmEk(I6^tqDY?o1Cg4g5Rg;#3KGK=#ebYvdui3e)U@T?& ziyc&0{+BUdq3esY2lJcLg+ zXGwXN_DKALd_L@qsl`U{+Sq+QE#%Mpq}aM|bBSYDa_5Ka%4@MJr~UKZ9l|x2EIrx^ zeuaM{>W-ZEi5ov~TIem(!ynwcBT$*wl|q~9zwE6X^zMaxyEB%iy(SHctHEdXI_b5e zGZa%031g$S9dJivn>pV%@;wJ!JN;XrcktO?oPd+>Hu70C(-X(DLhBG|vGSi@$y|7e z=&bi$b%u3st9|}v6L}q)`VWJvuAAax7*N`W&+rpdKS+XusF2-;zocv$N#?J{}`Xd~GbJjBKn3?!k>-hC{=RQ5r2kY^V%0HMmZ@})i z_}3ZFE^yQceWvX%j!a>U^xt!&IFio2$j$Wc(eIucJG(w5bSCgra5mkW@HswB>rR(^ z(G+D8*K8a*%cBf5XsyGv#bOk!{Bgbs$&=&RXSG}7$=FxK@X#2Wd!^2w!v2|5#hs-( zFiS?h!Cs(di#Jk3Lx4l=IQ{+wbqPj$Jqc`|u=m z=}2@cXOS%$jZHJCw@t%&WYEV}&zwtJ@=Rk2JhpucaJ)p?or}+c=Tc@q&U+rb2d%c; z&i{tujCHs2Y=6XPxmnNe87-B1))_5+Js&VyzQI%LIXCgtS?f3O)LH)(JU`+2HJ*og zUe8mwyq2eMcr{P)`;|N;AA}RFm6h_;+HT%S#@XJH%&#+yvqQyKtWAtKv&+z*dzyIZDjN|DZ+VoD!kfvS9gPS@o z8PpUmb~k-cZ6kYulbPji%M;ty#bUt#3VwH^`$t_8~L2#`{Io z*UxHCjiKIS$qen!Kxb}^x2Lq$aAZ*_V?P@jxExyeGBoie{G69zTiJUIXF-#9^&wN* z;j!oV)`(|B63bLgg4SL=nXu2mOE9#d{F@$Y3EFe{yI!E!%& za|Y1qeXajFW$&PDfU>i8+Iv=!qg!j~lLvXF^)Kyhe1){|r^OLt?%iE?{Kbi}P6<5_ zE2I5WDxAGm5Tw8-6ci`ZMT$&?)0+OwzRWN>Fh zEWUd-%Ze%2dctkg*%v)&E&IEC`@i6~3#s>*{ASyzz4*|9tCzv{-Y_B+77B>>_*>Zfnlj3om*1u1?y_eGl0SIO{|6LbqYd zr#0Z|M(iNu;i>)MiSHNuAK~dE`t`5l=~DVU3p~xlZ)(r;@~AJ~e<&VQ-#dr{%)Zd> zyJ6lqK8<{HT;F^uFQ;O>Yvj%2C)WD1Z}feA{Efaj<8wW}>|FlOd3DbCoJ?-zvEu%E z?p}sgo1OSS%YFnm@v(u{*tDW8Vq@jxRr=l5I368GsBgCp@a^XVd>fYV&3NWJ+XJ-|xK5Uh`Vw{9cDn8RUdMX?c_E$Lq;GvzB+9~1j6UWvCWHpb%M3;V!lygr^n-6v8Xe{h8*uaBXR?L8#Y503v>UCs|$BK+@Hq zuUyL6UtZ2)P@IU)?ophd#SfedW1l~f5h|rlwSytwryVAqUPqqR*!-=Qxu5Fji=NVs z(*~=eKGC>v-=7UO8hA7xaNx|d;LHrEpR=5P68n`zUuV+SWt>G;zFAjZcrp_mJBGD@A-!!6=0Ls_jhTJFv|?b7 zltRau_PkoL@yOPx>7>iwvXDEtw12#sr{aKqhP*8QC;J2G$9deVR%@N%l-{`++bI4{ z8C$NThfbyM;=xvA-;b$J=Lbd@m(|pj=bv8)eNR>#X9KjUv;CA-ODweLdy0`+mmPKQ z^%M6gAINUxuRAADdL{6NdC#6(SokPo`#9%cM48V|LJknixqamb`#v(+p;7JkXP;%o zqJ>=n&Z^Kl&>6s#LmRcDIUjVv!mfqL*pg_)j__b(E%UZWgWI*uWd38>XZZ2F#u>Yj5c$;%|ysIjnW6U-sQ>nW5WAALkxd=g`TwfGJVNTf7&W8*Pu(BmGv}kA74B z7Ub_Z9xf*`C3ck4#{`m^?#WL2HhFG?2n`B+g zPY8Wl`~8w>D+j*&c((EAEBu0gj%JkcTlklweN~c|$cSdmku<;X4B}qIVZI3Cwl`UF zVDEi9T)DA1iI#m%IKa;RT&>k;~rIF}31ZiY2akxuUM`CLcair+bWo0~rL9m8Yw zCAJqa%=uG|ioJ^YiPP{Cw?e1FcRDbBi~o`f2kD=ItPmYbChUaAo@dXxcuaR8N=Cc_ zUJib3R8YR#3fI`WT@!6S?WF8j?l7#bJikzUSPPHpj7^+eWq$%E>f=@PRdnY+4t`1@ zui((RPgXmWmps@O*G?^bp9w!dLEN+le#T~6OZ^eepTy5Pi#A>O<-M?vwspQ)U%afb zR@+4HuPvjWmY#~^wReb5jpsE#?}@zDX5A^68Oowv*^kH5=Qm^Rwqp<3eYWpkew6g{ z!EKYxV{795Gcg{s_CH1(xO?;1ns^`0@$%S9)YTu4>FhfEG5zpZ@BO`s9XWhkad-Sk zUp)2&+7geA<@vYE6X!`iwmf|I_$pUQ=j-SW@y?UH>&%R5S8Atx3Gs7-L_e}c|LkLL zf)Dc9zpVL09`}bLvn+fj`h0!_EYkUNkyXlj${625A2zMduC>Y}_;gZZu{hc%eFN}? zp;z&UH!ddUO6+sleAioba~~-(%&{pPAGv4#WNdU#FMgK|5Zz?p%O&n}5w`ad`Do2h z1ALVS-kd!U&VI-+?K@|SRPf&*mRI&e0luUtak1iA(Si1$-7i>J;}YC=a>j=(Cv90n zo0eR3=7}#cHqQUQ^53}E_lUFaED_&=Pi;ts{R6uXAJdu!*PzI%B+dyz7INNB!JWv! zRQ6@e;hx6NF_!wSGehjL?2&hg^F;i&Ybsn9MFPavtN!0ne+6aZ$6s@mBa7IZO&{=S ztuY1?PK8iY<7%(&t^T4FLTy4TUR)qcjBh~&^H&WG@GPg~OHKxtua(n`f$7)#tQ z7{p!}OH6*o3x+#z;nYLX$C1w~4zdQ44NUEf=eoDp&j&o~xwEm|^;mtg-nCyz@I5gu z_`G$jyDYnVeyQj{jHMTQE?2=uO&NW3ZR!>0`7foMgoM7wsb+?;84- zOaHzaYY%uME%Yyp{A#rNcWzhuSnkfm_haDu`5gVJJ>+|s^GVqU>aEK^a`%p9?1@-4 z#CWl@I#4=c!>mJmd)Svdq}3yqY(h1u1EyJNUIzAV{yeDUNS;>kS|hctPJ%a$ziuwLTV z`E=OJ*zpmAdX6mWS=)B@Q60XG`7wUdk#8MsN8!6&^T;_DM|OCOwbBcwH&A*DFa^#T z5@}`KTRf4E!ub zEYDZTQxMDZ_NZVAdHl+A19{Gg<(WgC^E3vmJ&m{M>_ek#RM10StDUd&edEx>fs14L z=kh+&IP%z2MoYYmK5*40Yd+uBhwXYjeHH$`$TQww@GNV3o~_#Zp4vGHIBX9}dH*0UXKM7g@$A;-$S?ls_@eKFWneX4bV=(#df`;SeZeMVm7lUIW z&qO`pLsqE$t$eH1*()C!ds9DOYsI6szu9{)NGW+FPx{((oG7DIrz0y~qFmyhV=I4x z4nJO>z|GW`bBuMFx6!wnx4+5rSoeG$bPwfT=^^OL!J+-`LCAl1=n#6~6ZC*=$3n(S z{rMhG>4A@s-_iva#B@ObT@XMQ1keQmbU^@J@G^Hzzl5y3Go}kF&;?V#X8>J*%-mby zdb0j3y~pW-mB?Mc&UCkQ!OHr4eMc7@BE2M*?n`;3{z=Bn&-#!29ue@+&OBAT=8RvK zHGWy4+bOU0P|ag?kM-^^Y5c~9s^^_osP%4Vd`?n3(larg!r4U4o^Cjvs2{5D$o?og ztittpy<6{+&B%#(TUc`o>agVXIlv>GgYHvZjz6`REv)=0F_~RGfXx07xLbiqdUOo< zK&}Nn;4NeR*e2c3XnXejS<3JnFb*b}KSFfNWk(ojJ&D>4CHixo3RnQpCV-TVjn*EF{tM0($M zZ@-&iHXVdt`{LDRV7-(*k>Xd@4{d&hR*%K6uOH;@S#(b31GepkJy$>D572pxUk&$@ z^sHZ6ePup^kW--G5nco()JZverF8ZP~Wr zig+HBys~+4T<|N@ueb>DU|tUou85zHs;z-|unfDYhB?zoF&?Y{A9uxg&<`%M;K6$O zD;hy=?KOxY{^Si{1Lp@Nqp@uptr*3O(7Dth_zYrSgj?}HGD7RJYo@<3E|?3=C6On` zkxkfrr|_vkBRMN%(^EJ|oz?>C>`PwB$ko#r!2GBP?WTfRg$B+3n(JQ|54E2@# zspJ>@k1jTX0p@qD^0AYzjC>X3dvbC4x@COlY^l;(o}TB5u`|7vPhW8jCZiAKc3{SIDm=0(R8 zW_ap8WIwOQA&idJIAn9r$3}3^`6=8(5hyLCO`UIbHBX&ywwP~9*LV5olit7g;YsG8 zpyt)@agGafrQ2Nm-285-ac{fTbZ@(@#UIBRo;H5)!@l9CF4ns{ICzEcvTvBaUwm$b zZ}_b>?%>4%-bwprjqeu^koFv9|A(@Hn;LFiebee&H{SI0t?%6Q%&qfGPjLA(d?TFG zW{_@>Zjf#?uDLbY_}qA%=iiQhDtqv^_q8&H>POQ4Z$Dfye9)IBr46f_2dv9E8}Sxk zzty~c-3H)V4Xkr$kF+5FFUz6Ld8RA4e3bFx2G)1t>o(-SrhI-{QeDB|>CkfWyjk3L zDms_HW&!(X$GGje$yTZ{(suuW5;0r8<|RPY6WJ;0n)G`$o*MG@zkiw|qZ`&t^Y zV>79bd38i}i?$8uB7RPDEc^X(+7=7}%1^>Jm3@BKcwgjE?hdii(O)^V(VlO|Y=_13 zV|V2UBl9n z>mD5CYk7||J%2J{Sl#cbb7a~{bt6aP!*vaxmk&+<9vhH4EPbSSwPDn)vn78pj(CZL zvs~oYveM$_iPH5Q%t18=9|=6QG2NYo-xj&lf(=r&8~WCqNNZ*PgdTQLru`)Fg3ZC$ z?Cro-$r*zW6gtR+4$l9MuZweGn?!dvkzew!LGzf@lY@hx8`)58F+cPm{Lne{_haq| zZ%6*hZ|m3^vVT0jKxvA6Y0%upSv|hAkFYi3Va?1KTj#1+Gp$(^BV=dpgjrZNmGgrjpvhd{Ki?Kdc(2nqlteAW}?cLr_dm3|BN)Hb2 zif^y>J!@ua4x%;C{^xC4BS`cu zH89SqBaB}>Z4mb@v9^#5@1)}Evh>4rm$fgTLizz-l75galPh?zW#qq!Uw5@*)O(+e zGoSh5vCf$kU*8JvcgvI3p8aYuALJV2+1#L)b|qh)gf{V|ujtR0E;}ykIDF|F!CPz0 zZ!wlRQwhB2K{sXKOZU^?did~K%{SpmAM>UT@~iIteCm=*V;z4tUE&&oU^|}n?~m*E zxLEskzt8XTV+T0>ec=T4*MFS-#kXM7fYva!<^~@;LH#WmsK5Abo&Hvxp#GkIoc;ZL ze1E%ggR@Uie}@g!Ut$8B{!WSY_m9Z=bjD{8YYgvj!H8oSyb8;@f{?VzA}}wSU1t?Vs1vzAwIg z6V(2=f!hDip7wL%+iw^joOXiRKYYmm{6D>?eIvg8t4|5$o}l*sGEn==0?f&68@YXZ z9RK4BFptr`<`M(N&pKy9y&7vjz{h)$S^v&U)B1 z*2#X|__OWI&xoJsYd?tQTgzF?a^_o#(e^OkO5J7q#vgU&T*PPx7GH12Xfx;f6)M=h}z@q7B5I4$nC>39F6@O%Y*R9|QF^f0&N-h{pL zh;`Lo!wmY{h2L6dZfefBmOg85p~s!B`xW-)aF0NH<=tIAYrdHp`VMfne;S>lIavm0 z+P3rj=wi~CtL)Vi8~&eqV%xs2Cw=eK6I-Z5Pwa$ud1`L66MxW5=D4a$=i{0+Uwpwd zi4hxI@`CXl_Y0=?k{8US#Eng9z0epHxX`S*i0{S=f=}fItLjL`HwJ#U`Js!s)TQ-H z&#AH4vl?R0YN(@zdTWS1GXod;fk}N!CU#$YEi?ED7n#K2$Zw~(b={+@d~e=h5~uI! zd>tBCNT03&FFE*z0?btv*EtP*_^>T<@RK=d7m$W8ZnExR)fwfDm6#2h@@vY7c51n=TfT@fFFsZ;pYc;$?KqdSIg^}m zn;Pa!`C7(8_^i|Y(7>el>v4?1aBwO9eCHEq|0?Hg#L6$ij*5@Hu6XI1L(8~(u$J+= za^kp^Z^7ID1q|_PR`Kgq27Zu&!Lju!)7QdTuhx21-Wc{Xb3X4|z@#-*!Dz3ka+e!; z3-g}G*vS5~&wJJ#Z<(RL@vY%dbaHsSuaJ8ir@X~jCzjtnK>6RPd{C({U;{Vx_cqE#=zMny<=Plq9MhEiiW1d(NHxs zl=0#t77Y!D2K4<2#;A+)(GBcuH|=x3c(dTj#_!z8Iq0m*ZP%WhENJP?PhVap-fUS| z*!BPL_U7?X)z|<3odjftMZxTgWCDr_xDy~jEECWgKx>OwtxE}N+X;x);=*Ff0Ja9B zmaAA4`YEAmn~Y+yf~~ zci!uHpY46#=bX1ANu{ zi#rChTeDtxVtGMoX6tJ3Jez*aSh&kJSeU)yv;;kI*Ov=R@x*N@S*@FBTXus-E`!&y zw%y^+@y?2LMk^oRgRH0Ub>sfFW!c>6dNAFwRj$V8H~f?G`rh!((fD^w9ft2B=a39}7s+?`a4Wmm!+AdJ&(dB4{91OAk?i5B!5wGcJSKJ>eTWbIi89`Pp{u?$ zp6>RGUSCVxzGMT*?6hCJmfy&TT~_u$`*Fro2Q6X?xzn;9Up_}L!AFJvH_M0j1=4uct>%cgNL$9`!zYR5SR}h`h|0Jt}q$J}Liy`SOOc@WaA) zs)F-z&u=Pr>GAxgI_g3dPo>sRJ)6BaG+A*iKD@4e#hpILxbE%l$!D?sz-Rv##~I&J z+1kaEEMlPinUTp0$g6ns#f z4yUIn7i7E-^E_4@s~3mx;XZPHYb@{tc>3D6`DAjYxeXpV3BKg-hioY)PKfpnAz$Or zjCiB?MV$P7;*ST>Tad5jJh_S77U-*M_ruTj!xN>qq%pS$dYpKLWWZ_sw)h=P4L#a^ zuH1Eu=ds6cMb|TS$sy?qkGq@>^@U z`?7&?SDJBWM1QFHGwv9?O)^$I)kplyAI3W|8s6_$`7Iu*-!X7NWq!@OCj8OfKApQA z;5!?5DuxQ$TH8!Htz9wWW#3aDm@_6e20kY`Y=)k-f6%(gPpN=)i=(UdX8%w;Z#Ma@ zp{qGnu^srs$p7PYYe+C|5h ztTMoB9s2a-gUA};HXyYfnMmCFYKg0bl$mV9{(B)3j?f3;W zlS5bh+$oze6uCEQE4U;0_z(3OS(KVFv@zamq|U6u_$KH1Lh&2W5nK1R??E@k+NPw5 zKHPQYZV9_=e2V=Fv1CmL+onLD?mFj12f6Fq!rq{0&a7DTfwpz(t7y*fSo5%P^*Xzs z!1or`BW+G`tVr-=omLxs=Kd4rUk!eUE?eP$>Q{RTt$U0%1$XU*W`Sp~xO+9-4Gx}7 z3Cz1YRt&yXvu5PJs@Z`LxA7f-AN~DJ#}=Trbw{Sxp7@Hs3*WvjJj3tcR)cS$_|4{b zCi=>;eaduh>g{QM1k9}d?R%QGMLo9c93Gh2I;{81mce~y9=@Y5Hh_M_EuBi-(rLsk z^(StL+*{*&n0Pdu<3CIr%6(M<%tT|^u73J8#{WxnoNC4z<|%qm9)J1aUCB82UCf?$ zUSz{^GnZULH@n6;@>(&=qN9)a-E= zMZE1e+P3%|TjZ-(zUOLWP!)G0OyF*Ws_ztcxEnz>f#$)M;bn(MS@CD#52B%TK2Lxn z+JE`6LzDvZqT%el2ZJL%|0b>Vv)t_$92Pp_^WE|zfAd>g!^O>e`w);+~4e-|cBU{Gs{JdgJDSL4W1Iy1p?dZYO)%!2e}VN7+B{124X!a$xZM&=KqX zX*Yl+ck9=&rxf3p zF7EX|UiJ63*M9>V39wc#iY}S^N`pJ>|Mi3ytG21`6}@G3*h&a*to8! zZy7uZyq`F8=kN(Lp#u}Uw++9~hoR{hxj%;m%zZ(-4+C3d<&@%8>}kGR9-HXvQ!|mg zx08;PKL)SeJq@~Uh2P5GGXUPe4<-wz+FTy2-}2$X?-R{Q?(6wnm2dS3Ih5 z!e7`2t*su%x*>mrZ{ZYcvi}))?lA0k`PL}(&Mk{Sr#u6JRzG(a6IW@kJe_ikP5x7Z z=v#2O$%VrWE*!q1Cphyf;I#OZ(4Gew&jil#7pDX^$q!QZBe(MZNASB!U&AH0WHelI zYexC%nbYtC4fVLa_Ph8G7W(X;hEi{ThVKvK4;i^~TIiuyfeo-S+LV^}+9!AFlka?=W=?EGsf% zq_lyjBBw-)pCIccBX^t~(mm{=s1(vqt;C!%vX6>fh*7v?ICPTk?~Ba|UOu z7zynp>r)Q{V{pXSvnpMEinZ*ZPmM&bNT0f7PrKY|rOi*!E9Dm`pOviMPL2-gDblZA zK~D+c4_eLs*7Dup+7mOQcWO=1)tbR6_BinjUsg?YNO^rLeH8opw2r)H@m~UwC6gB~ zc=}u0QUa|l*jp!HZ!P}Mhva4Y#*g{{*WP1h3~YhFac9h?vA{|59)_N5Ro#2I@W147 zPnUPi#+%(ub9rOn9Bm+R}XKz#5(e`@~P|fJF?)bha0}jZ+y->mYaHbr>O(yHAbiHRQu?(=%|Gc^V(xTKRxp7FvG=I=055 zcy&+i|2qUeL$|eM@IcX<=$5+@C6~1}YR_8-{jW9a4eUjaKNys;qH%I)gTJk<U592p<_ANwnj{)~%C$nYxea zcN#e;zL3;z4Rk5HZ9eVB;Z4%}uBY9y!Nv~0J3{V>$c(u$^giQrcE8*9`|-Ayo55B8 zoZ0Kcacq~sjqiv3g_Q$a&|^KC_WN>c(y+^2NS`Ne&voJtiZVhQsTD z@6h*jd$iz0Uf#sJ($nn`ysIR>;cinl!znxEbo+eXN8DU*rv81W+e1~q&?@QB?h~im zXY#(m=s9j*Ye}ujJ8+;Rp^ts?;U39?#Ba{0gnNeX9QtsN$#X6q6#H;bA9zq0-Nio; zyD&QCT2KIW1a&7j>nSC4Y`in13-kIIP-P@l}N&efwH2Zz0Sy}GHF%72yEvJ&;O zLh-(=%YL`d80)7#!_231pZoX^n@Xat_7r{l-!X7MV~W$iW6wyB>JH%+%GQ#@%j-vF z%-a9o>EtZZJkp~n=<3@jS4sY@qssM8OOzW#xj#`ZdA^DEE^06LWBT1hIc%1R_5??> zrWI*+8vdPDiiO?9eRo}&eJbxN$@!aj_f2q;cMaq$OT2q1&F-PPnO2GJHdNov95T&Z zpVu6c*24SW^t&s~{(w5qP$mS9X`V&!h7M)=r`v+X4>d=3>_?R;amqYK8H=^?+DVM@ zx^!E%9O$iN1pV#B?vucM@b(_+)h6RDG;*igR-zml*n}Y|_zX`YitHCEkes<7)zpl{KGvK{Y2#8}J|NirdJMP&F|4ro*%P^q)RZv|I53vIrUq!6O%( z4Ua^hXoi>j;9J39c%bi1%_-&Qbx%IIr~1f2XTKL5SDXYxn%px= z$u#Z@4bGc|P8S~76Ww{lyx}q3AF8=+LcfqMHuW^+dX`Uu>@v=NOg1a+!!*|%zE|x1 z&Z9%eTXrkD*hl2z3H6*mb6mgQ+*Vm`9htV+I&$+C>&PuRz9Zbds#vMrKIGR__5jF= zDbjfY(s_uZ3eF23mX5}-8!JlO}89v-9nLsY(ie8~d$M&;! zk3%ofzD>5H`&{_{`*XmTb^J(A)^UfPtYfpDtmFUb3H<+Q{?CbC&N`_6goEFCv?VpL zX$R+SJAZarz1d$ezt!xsZf88Fog10Fi#@;>*#levy$s-v-2wDjd;5SDr&`z$s;!y6 zzQm-nhw}Be;<8`8HNYZ%KmZWt+q;9n~g#%tV{$z?EjKp(7frFMNm79(rn*?Qza{RD0~T678Wo zH=$!yqC0zY_f@#_=AGB(zxK76c`ruyA}>eQYs@`NzDeOxp8#=B=k{LF%Gyj~ZHBQn zeOVj%0Ia^f?}~aKI`Lv_=Bj?yk$;01Z($35et@$+ijA6Bp5nxz0@IyytJcqi?sh`Q zwR5TtKg=9gRZTZ@95k=$@GbDuAhG?IL0?)2a?4Elkny~Nj{GKj4)Oj8e0tM=EBvM} zW8mKRt*dADUh$m9@m*_XQ$fQewF?%E5x%Sc8LMQE$Y^bV?)#Z?^!?q?%pWh^nl} ztM@a;Rp8ABz%#^{d+=NL1T)?(e{sh?BO5=XPH|m2lQQp;&OLSJHyfJB4@D*`MztZu ziofT^OzBL|#CIVpK6tM^wrlolu6-6=>z+nrG&arbr<}VcYSY;(1D{>Im%df0Gs?;_ z_7Z4QaaCc?VBzDt70+cs>+cXJ(}3MqdzZnimlr3qEY->BdlmK2UDkFru7vKKIyEM| z336_H19sRC=*Nrix{|SK91+D@d~u+CyE~2$a#myUgZsxD!+G6|A%**7yuL0srXa(-zCLl+)4=hH0z3ax^!2yy z`eNVX_0^QzS7m|ibNgy&b?%9;Zf)zZW>4*CkFWCZ2D`x0+LpF;UxFTt{g2<0AvfrW zO#X_V$dGIGM21|WCo<$}Jx>e8zoaMhzV?vvVx*E6!;g)$>pSS`6ti3A*qrJX<;EID zJ7;cw?s}{kZIyg)r*n?!Cy!(^=i|ybdA-`l{@HX9Hv4bXVAHeaR2$!h0$a8#KQiEI zbm+b8Hw%iavTFBiWd`S$$n32d;QJ5YNvA=xO~6iP@XeIX438?+eSQU1#iiBI)imq? zIva2BasLoy)XscpZ3ncL#vc6O1LgJjUBRz>t*^lY3uB5?^O^hYw=-6?eY-c-!)@zk z_^kB3)R8W&T>jyUoVpWeudBLK-MW?74Q`~a+9R)d&0^+S{6c{(+hYJeTJ?qdCr|js zv)>BbX{`^R=gg&myvXL<7Q4qVZ{FBFjyrG8^SpUir?~UxyzgY^eL>Q^&voY=9_h?i z=b^`%^Pr?TbB5P(&fB|~a{#{s;HdS}oEH-dP(0XLE8jQCA8ZS2-u*(*UdHp_OF^4_ zDQmJ*3+-Q>7Mc7c-^(Ty+LB8SY_UDD&MmZ+Pj2OwVdeE>tA?63yXS3U9*u}kS@X=479{wGoy$X{z+1Glk z_TEcs?;W?j3Z45h{xI|Nhes#ctAk%Rr-GBn8Xq>{h0J|ideHu>+Th(0o{}+|hj2{t zSh#$wzSk%9z0U2MyK!o^)0Xl!-NpYcgJ}z!lg2Za+|>p~L%MJG$4Tw3bla`I?EbBd z=RUWmZuJ{`DlYwS4{(Zw(M!EGU&T6zPRsDYsv~YYd7d9|4r74tJr?M{<((ecS{}1e% z3n}CH=%q!c@qHV)Z1-YsQMqraPs+%jM!#?8w{*(7Mc2pb759g%mE0KX^S2fvce=Ve z_3#}P^|V=uuG~cagfO%#d8qf;Jj@+MRq!t5^$(M`PO=#IY%Y8{9r&b0 z)BcDbBW3SKH(sYab;K~PN>T2=v}hUsnX&uA;r%)k)>ns@%||au2nan~+p4O1bLu(5sL)W_1$i zN#%Z^awC(Dn~3*qF*aJ(OzLvxrLOAd@gAoSG1SQN-8&7<;Eq-tr>US zkVJd^lFHq#ejjw?j+rlaC3|pAO)7V*%HdC+7+*g3B)jVoAKkug*HbS1z2no-d(;sf z)oMT11s&CQq9ffS+L;GzG(4a^|2DL4{1&?6f7j5T_}}Mv`uNCix$_-X{|#Sw%AHRo zzCK;er#rsTPp~}(Ul`7RhW@T|?xjvq*-m_6s8eQ5VYO2xj_*-tzEJ3uS>u%1r81rP zLbg}NrQ;7(2EI@Qzv@iK8gqp6G?$LojQgjH59|%@1{NM2ze^jD+@x|IeNt{lQn@$O z7y7S@Uu(vBbV9jlN#%Z{a)Xk}d2~X#Ym>^YSGgfc<+9uFA-giE-192Oc`5uXA?Klk zHREn=FJGQi{>Li+*pWc-$3mrOW_gMzF4INZd zE=dnC_rN|@=Fq`?Jje2pd~6w~y(5PU-^jG*sU6-+&ijzj zzhYIZj>`mmu{Nq1!rgx#WHjTXZMXZCDAAkCusijjF zSa&KnKDPS@Z+$X!CH4fQ>?ZcrMcngQu#>xYXt#Q(RZ?)b@6OOrYf2SojgEgrTJ(*-IR2Jd+>zGAJWc^l z@{Mz1kg}pZ`TffDQKb=Z2l_WTS4ze%PJAC~U@5rqX z(z{$sdlN%v@W2s2V?Fr2OK}{+rJ!Os(5?M$49C4c4b_LSX}96e^bgilcWsSDpA3W| zlSjIDZ3*7GTj4Nm(I(&V%};yhzFd_I5}NJCb%$-46;9Y-<(S)>ROCdbsOBe5w~tO zb^W2rf$WXj>yv|^mHH<$2H`{Hkfb)qBk-3K9K%82WX3=)^TZs;1MoWa8<@XfD4GfQ zLSY6nhmsFqF z^_x1*XYz@z*?k%dXSsrn;s7RT9Oi7^`F%OREq=SWkZ6~&8eA|q0WJt9l5yedw41_S zQ95YlBi07V6WOV%UEcEIDC7n9uf3`Hx`U-`>Yq7(6L)lsfM z{@-26yB9ex*E=&m__NAS^yNHwDZIX%ed}KE5&zFD!{chtv}NPYWDcP-u`_m-7kiJE z7wSXyL-AiD7Y22b3-}FmB^SIpz-5>6C3`ZUE4d*1iTpFNkqf1+T)@7$q^v8sfPayZ z3j>i01)f~Ui+&znC0!)L%G*>6oFc$ee)*oi^n8A=oH3%*#^1EsjW-;DTzF+Dybr(M zT4X{kGNIPUg#3g|_%rr%_9)Pb`)>W2_B(oK*3EtQ{+ae4_0Gry_uZ~D?br3r$OQKt zy#9B3hfDyj30_~q*!XRD{cri+nb+R{udjgD%Z7U_UN0C5-xg5c;q|%ELoTncfY*N+ zUJswQIdg~CUmVjI5_3vF%eLP;IhuWrerhvCbMD;W)e+iYy^qW5|A)Gw**fl(NYsa) zeUthPpMuYRUt=M!L82}A*-f9at^3s0prp1gILn^+Dch=2TSJoCy74S~RL8aw{KN2# zZe+=q)z)P3rF?KYCwdm`IDE+z-9FTuSEO^GJ z<4e=>&>6LV1b?K9FUJ1F{hh{Fc5Ky%n0V*9g`9(+NB;(%7UWLs5a%D)Fu%ov#@8QY zEGxkw>Cc|dYvyb8=hr&uydG~`29G-U>oasNvn2cDGweCov&!xrW6N(X6J9nFUY4xW zR^WFh-i7~N2i}zhKNkI_!Mo5k?JqH=cHWg1{UX0t&KO=={gd(aE0~vJ9>#NquDsGl z=OefDaO`!{cFf~`)x0Qot}K-uLi(Tf%E~Jp<{lH}m40W0wR8n~-ecgn;5CnY(&B%W zsn%-Y)-?D~A-Pu`W-XFv@r3d8IrW|D;HhbgJfw3!Wm`|Gt+b@J$T9j2+VTV6TGknv zV)U?(D|;y@TWsoOoRvHG-?a=LH`BAn zRVT$V8#%{$#GP*a>v^_~*FDQA*yy>xY+es+^gdg;gPUAp;B1hDQ8XD`~T`Q(geo^WfIX{}J|6>}fY38%t!XFy)i{V~j3wf_LUV zO?$PBRdN@e9KXlt0qN0tXqhwFc>0_XvE=+J%-7gwbY`M^lDnFJE#uR;?*3PMd`ur> zXK><;WsAT*!2K}RluGO$5#v{%9(|s%1o6uS=1Z*dS1)NwT`)#|2V;0I_%(2!Ec8$& zm}$?v9{3QK%*~}BdqwAbcwT;k>u9S1{l|k<9dJU% za9{Tbd}=!0)$PHmD;#Pnad7Z8p2yEa;hgyt0#CuU+RaImO->p=@X>je;IxOf1gF~5 zxIZ2I-Vct2@jdWc)||(r#DopQnu^CUT!&N?GhrhG!_w=UHOr73Y)1CkLEd_n&nSD!;=Mb4SILmr8LzVcIaUeDD=; zBvyMZiPw z%?g*zHshRocdU>+IilG+V%+Bm%(Motq-3_f4!oNG(`#fLyee}2Tv|H&P`P+{hP#Fq z_k(wZUq2h};MWs8g|lhktky{|RE)d77jUEx`K0f^s+>Cu)1!5ib?`aO+|NCWJL?L# z<3Z=tnv3YUjWWnP6SJjvek-G@&2jvpMs{?eHyy!=oG*G`xwocvJ#Elqg&p)%b3 zP$y0k_atZ{da!Mo;_9`I+n}qHp^58UJUA9j?6}CGiMM$kO%pj$XthjqmrN7?pzQHz zVl@4BPZRBDXr1p#Gj#E459p#Fba5(laT;{dAG#nP#JtnF%eIHP%T~NyJlW8?=UbAR z8%uR*L;mG;%Goj)Uas@GXU-xI0e3+9mM%B@CGv#`r^YZ=3mI+RJ9ftno{{K0Ci*65|4L^lXD893?m$h~+ zp952^4g1fxHgwiCo%{yb(H@LZd*S`?iI>pN=b)38-O|@?z~=fAxAXj$Q3< zvs`_%tqXng8shp_Asc_ic#OV@9qev+d^30(ru|&VrNfm&`(RaJ^GpO){NV$p@77#~Ap8;-mFs9ZPvS z{5?Nf4K7!M%U`AJNY-;XJSCv}qC(Cc1Ku2JR2Q9D{RA2Bh=67E%c7pTXJBOPFh0AY z#pXQxKan9%un#f6*<;GKs_Tgc#_tO{civy9F$`<}eJ;P@0b7~}bJqm$KQNqo|B!=WY)Cq=($o9l*|yEkwT$!Ly|Y4P!1Dj3I(Nmp%XMss|oPo=YE)jXeK@q&*gE znPWM6w&J3-#|qI#5WI8tSh>+_XhVCfX70afX1x3HBiGt{c%peCi?j6J;Ys<%pX`U9 zNKWS)IemC6IENqlc5E)`8WXf9-t?B%i1!9&7hCbg=qZ8lh|-q#K40I$8p{{;@L2vI zB45<*+x^dl?d`62+YMiZKkClad#a!F{82~5>g10~U-Ch2ddkPXFeiG^0pcfmU0z>w z_Az{3HGbm9{*~0nO7+1z`MlOW^xU52L?30bBJ`+^ePl-qkRia(_YWU`qdj=_}MXJjI3UY{s^q|7ufmYLM6X z`DRDwQbsurG_L)?_Lb>HrEUK?ZTA)Eh>8Q>&i`7|N}auelYY)#wfEft9$xbdHhJjf z70zE%!I|Xq*HX@3edsXKWn`28q53i3bE0YwoLQ?jDxl-*0#;mhf(g*Eg`FVc>gVF` zrYv+?aOAYz!l~QPZ(5!jUoZd1-h9^>*VDG>>AxN0tdkhy4){e2;|h@vO1Zdt^Hls( z3-qsXYU~y_Grlr|L-FSER{U!_+m=a&8rwsbV|#d8 zU@sn62M^Dib8k#*uDAu&UEis$_^0L8MIYH*NIX^#>RWF8-gE9ftopt2GdQ98oDU0U zy!rvRe&9sw6EpSCr22lhzRs*qsDI+1-bt#T}) zL?4+_>B&XL_myk7WwC<~roZm7gUZ2G7}nzjG6GsrZ$fCF6FT zWe-z5-d*XAx1A^D8rgOfyxji$lsCRTZl8+p_=Nu|6SSWnef4~6>D?*$HIi%dIrnbq z+&})necb-f2kLKG<+g|^*g}eH#9FQ^j*S z_uDwc-boqF`?OB;{)F`{@Z}j?nP+e%&)~`@23L^B^#7XLcX6eG{X{5f&fnudZ_ZPh zGxC?5dr2@aIop2A?Ryu`j&tt5-)EEhwb%!QlI9%dzr*gFg{Sy7cI-ENw!OyfcPmf9 z&Rc8Ybb&9ob;8!RDMzihIqS`hKBV^DIa^zd9qA}pcLrr7>rUb6$p(-1CcuA^+xF=0 zo}_jw$;IW-o#dqGu8BEGCu|<&38{<@+EL`yvxlJIKVkMQ6lDZ^K^GgIJ3G=oHwzTb{M* z!JoLHm%6iU(WtL~Wb#dn8=kr*`5tbqrT)K*{~FwLifVK<>42ter?Z`O_iSe+`Wx+| zOJzhAXD&UiPsq8e_a4`ePCDE$+I4iejA$eLBJ7^?EQVKAadu&mTTnjgo%IOq%a6>v zf_YB@P7~{agV7!E3tM`;_|jyZLGh(~{_fb%8Lkw4*(0EjohP@4*wKH^{%% z&zZ&DoDJ5om$M2j`j5`CoAjehu8Pv)6&aYHxXC}59D9k zc#2il2p=PPW%|Y7m~51D`L6QMa%Zb@dRVcLUsaDZ1J7Z=K=xbW_w9$~o*PpelGF2{nOfxQLvv@uuH=5==ef6aC%FK= ze`>#)U9|h9jQ%wj68|?gn`>K$^q~S_lWD>)_%ZRaae*sc(G1vki#0tk3#wK zSc}Q`qQf2}P88k2#EIgM&>=>&PI49eaAGTv3FsNxPb$BjaA##|UTbC0nsPVuSU&f@ z*a6}xt5d9zTKn$eDQ|UgQ1Y*pxhsB5vfCdXS*m@${8kI9MwV_z_c&f#UrK80eYdT3 znYlIKpc%UpM=>%n_PS27q0q944V|KPp0ezFcuHPqE`BTXxUr!ZCiTDG?cbuF7aO|s zTqjO2li1L)%&Bn*dIR(74nFxwZ9e6}hdpw~xX_WYM(x8{AMxBe>HGNePQXT}yJJoK z)OgGO*~X*eM9rM92-;choXbvf&ij~?c!<_-UKev- zJ!<9MX2adZq4|377}do%ZtH3s-NcH%;EqG%(Kz-ST=aCUW5+3L zzTP-865~ME0=9}%p6HGv!{FkG(mLqW!^OqNh!dUTwpmM@D10OlC(7EJJIDL*zx0TG z=b)#ccWXc1mv>=v&Xs0jsym!FLEAcSy2Wi*I3zoqc!1=GKYVeizWc2_m-g6i6VHj9 zJn4AO#~9P`&iTC@>1Y41bI$Mh@uo!=6AuuUT_DLP;vnrAp9t=wkp3XQh#x?AvVBTk ze$4;UF{MLjZ`{gVKazPmS6$3GlX4zOPDp1iE_dz`YC=w67e3-AKg*Tu!Rp+zBKeo; z9P3SFMKyKnk8$R+`lxeI=gcQ@CrEi0cY+Y-7o@-L?gUZa@Me>vv8|W2L3_JQWQhC~ zE);H||2!&qu$D`Bq9-g#)~{sG56MRrzoR_XTJVanS7R<4Dsu3-QTZetOXa(}o6GYB z`4fGG$W@QuK>P>z%}7R7qfe#b3$m7R?PXtihgUdhjVjDraTvdepZ?7``)lsv3_Enx8Fs#NhD}Z_bB5i^*!f0O%#hs6H2aZv z%^7Q^*^fAJH_FAF8GVNF8{L!rbj0YLxiwYLQt{#<@4b!=21rU+k>apybt~<+QZA= z#NgfBc_wGhD14ve!09FzPIV{bUy_r6Q?uVH`CCtGL^H6e!=7GY_(S)wx;|e)HB>Ly9AGb7G3ofQ|9nz=wFi|W#)bXvcG#=!K)F>`arx1(pVJxk z=)lK<{jj9I#N)7CW_5*|@&S^6=zQ>U0lBV3SHBu&ExrC<-1iM_b$3qeoG~8TZ$x(@ zi5KnqtHaxLe)ADy7B0!(@n!m9J=*VsOY3|e9CyJT`TAqzIPQ~4?)N9)bvkQbN4+3? z&hS9t47p}y#}cnId~TJ`@Hz1~@jCg8MCf-|{rvj*;&p&C^u=M0i>)ZACact#tQ@;%Q;mzwPtzGy_|BuXH`_;jW>)V%?}Ob>XIPo=>L<{v&7EkhbCF9w+4!u8wyTWKN~ZBy`OU|U&kFe_TN~JSWUy~Z z_E%B9vt&Og&yVU(cPv52U*#zMAeH~cUp^Yj`3n9oDa=RbHqt$$0~doA$?eMb3mNab29kq$NwY@|EbkFS}FE9^c6-HW#n8M z&%mEV-_y^y)YwaxE_8C0g@9)SctwDTbeCzG6L!n9nM+qV5_09M04HvplR%P zGxnEqFOA>JGdBA3arX2}t}eKgGudo&rsc;57l3~jq*}Yn@GmcHm4A6!w3+n^74(P) z!Ew!(8(V6MQnQVJ`569-k3PkmP1oi2h_}u6)o;HAeRaHLd>A6Vtfdw5dtgr^zXv~l z4<5_|mJ>T_&h6OO`hbzfX(3nZfO#Y9Y|19-87kYI4}f=f)h`)W1NMhnXmUMzMl&=C zUE*^(DmE)Kvqrg#?iyk#4-$6ibTdb_ZS}Y8nbcKmCu4DKQMvZ2)3K-U-r?z=$G&qJ z_MJWPN(cxsIf-{GT93UyOyqX%vE#72g{)graw*lUF6 z1rKvyjPytOd932T80cDl9tADvzs} z(TQH>yKG(H)MnvS8#rb8mMwpQ_r^yB-gKlGx+NY$xKw@R{gW#$fBIW~Ke@NGHmiyg zdDjXqz%LqkT}A&oyY-jgCrSN+p1$3K;cMB(CY^0`K;g)C&XCWdtlF&|fDTJ8FZqcn zuk}CZ6MrLnC3;QKRPn}a!yCJ5Bi(Hyg3ocaqr)sI{!?)xN7{tT@1GnPK-AU^YLERC z^Cm9Zj4_vemGr3Y+CR)#G{y*V_YuwmrAumzzu>*bS8;Lo^*{3JbGKq*e7>RfQ0!K{ zIm0ggQYaSqk`=pQlsCStX!c2r?;WpwbP#8JS!R5XdgD8-`|V?-Q?L z&A~Qj*7HXG7tF3V&#dTm=9w1#n5Us}@cJ&k3y*}?*i)8_D;;XD8fV$R;XQc1q|iFu zwvfSRxpfSEd^CXd7A%$9C?op7I_FGRI5d!Q!jVhNGc$Uzd6MVHJhP&s;LqUSuB0<- zlb>N2|BE-I^E}>O*VOmUl%-36gQ6qp6d~$c?5nh=y$2t$m(r~g=^g3(_e9Mjlb_u5 z@Z{x_9+|wNre^XFC*41J+eOx$GvOiIMiSS|dE&Nj5!a2JB(L$Eh3IX~<{T`&wS_(8 zQnMFIH*}!<=eN>VZJM<3ssG@tKScNQ@p;fp!nL7vGMj=8QG zcjf@Qlsd}eCL9wUH4~p=bY<>mkxrBhGvSBemPuK)*MJiQDz8OAzGmh=g-1cf1*_3UF`TSSHP?N}c@Ae~x8~ z7CqV05kGPaemp{1$)R8=_l^$pWJ_lB3f{jx6x#=9bd4r2Wmh=nwDE1X4QnJi0DQ4% z#_-vV_&^n0=!_?W|2?^T6W=9wv(Oo|@7VXfmE-_RH+PY}cD8%w>;C>7zlG=C{~P%& zKdo!IGehy0x~t?G+Nv9PsgnaGz!}HSh*_P-IT`PiBjrkdH_UZ@dwEhScxO>Yek#&a z+Q<*Loqb(wTT1-_dS2FJw=iX1~7XOZ^#^>iQ@*Pic_e;W=CVWY@(}&i7 z0KY5wU5PJ95PO>$+ik<_J{lW7n$!D)jtI8Rj60y*8N}4So)ixZJaqTE$uXe#&5iV% znB#N9>@@NnNA|X@H9GK2d|URmO*sT?1b^|Y=3&OKYC{oxt7UK~UgG-ZuEe+W1KQR* z<;&GtC|`$fx9&%@(gU3JO0V<-r!;(pr(ySfL9l0^pgKVx_m~CnLjf0ydg9AGyM(pR zing#Gnv2?6^>1uE*s#(We>Lxw3*ogvjmwLPbv~0E44Rv8IS#+_pJ9Eg>7%wOiUF?W zDcEH*H}TaxD}9rEbGJS3;DO|We7L^Ec-oB4=dL-vQ$P6wGy)FqJsWz!ZYQ|J@fA>< zBx5%DRhWax%~H!#wxI^vNny?^SJbE3xqpwG;yspz2ljcRYM@}_gTDzsHOH&rf3t2L zgMO11eUZG(#@~bQKcpS;Kr0FEb?nOoui-A-=L2_Wz`$Mm*km~80_SpUPSUy*uB)W{NvrV7$b7W0-w6ZK}*+blW)NiAer< zxWO2QKZVbBYRKdR_F@yg_4megA#F6!cMuvH&AOT~VVlWgO!8F~jam3l4P-nY7+7gM zdC?1#$HE#-cE|E*#?Zf;F@yp$2Buib1@82lM!(z5IP#+d*he|?DJ!~i2)yQO&S8a< zwRra`f|x9-NDLIzoI{LPyY=zD_yGQGXHVr%C$3 zL8EhLxqDBYJ!D0{M_Hr86<|jiBK<%-BRhI2@AJ;a1`Xfvo4se2(LuXv<8HSN46o|Rt{Hha%ww=Y;}jKN&ly7Jk3YJZ#^&Evhs z7iQ0>_&n*zU5)QbuRix0C&u@ca}s;w`YXsE&VD{XF75l+Z#!emjLtrZF_yS}Seyeo zW7M9GJLJ!D$2hk8F`ntwXAh)1S1abX-?>^m|L8kctAI29HM=H0e2zWIhtCLdX5zF^ zZ0IyAHjlly;DX*9A4i#SHx6+8p1_#``jL-QxjQ%Q{l5bI$ELQ!Pv1=(Ab2SpIl>$a z{Mr9hYVS{d&Fz#As~*{{xZ*ZQ%<*WSdEM4>+Z;Fd3W&N1MDXr2qCMp zqX*pntcYdL*dRYZe z&UkijC%z@#M?5npDjqqG_sDwV*Y5I21B(Yuy`1Q1o{}N(!p+IP=H-SL%8q;Ndy9vi zWu?QvHhcDh5c8CedjV|*(QW-aH=TKWd*VJ~6}@vL)$?(lu$6kA?Et@vHDwQsBHy63 zyD0VX==q!1-R#6@{Q@~#hfPsjUL?2jyK5#YdH6VA3Q@gJXC*8wEYP-U;46}*_UR{E{)y8Q?}_~Dz<6LNhdm1 zf8zC-Zhwkp>fGP8^tT3@$d=!;7R~4=0r-gj+kq7= zeLA1vRdR;MIbP0#eRO|w7`rqGym@I#s?o(iqQ2-ZP|fHO|Dv9Som*uB@PUc+F%cN)oI`g37Xc#=hGU7V zE=QNm24?fgiR8d7)qY%U&{qljRpEd~C+OnFwj!JfK}*)*^X)%URyg|vv;w}ZeIFVz z<&$hH!rNRIkEV8mw~J{j8E-2Rcsn{4hVDdD!PM&IKc}49WKM=o8laQTeTp_uq|e*j zK1G{((5CuyXmd0?R<6lyc3-FMalDK zA9D3)IPZSl&D+iWu6c`&wB7{bl)MLyb+y(xE`E*e0>7>Y@3k-6J-D3@=d#vCiM1~4 zu-5z8{}{a2S{I#bXS#C+M~qKUV;49snmCcOy3OtwBJj#5;EnKQ;}ew0S>4T?gL*jk z4r5T8mEip?)Tsmyrs)Y>xPKVFmKMFqJiF&_;$I$JucW-_`g3mEvNMJ__kga;{JpJ` zu5$G#=DTgaRlj|(bPCJ9oU^AUc=+dNOFkkRMAhkvfBS9sOqYA% zEPS|zNS+-EJ<9p~)`0E_KXUimQDSUgImLRRb$(>>ppBCb@!zAN!U>0Z6o(G2f;T1a z=h5G%)TZ40Bl(}{zGUmUX#*8o8{oWs>30Gv{J!*>l#I}k5cgE7OprUMeb|F^A8zms zvbSasr!wA=MS~fme0LMFD6g|DYWF9REUKcPV%oR*`M(ex5V@qQoJWVg@k`D*eVlW4 z%=fexy+nB>D&Uzq$CI2Oe;fA4jHvtz?q)0@&M`Bsj7{QO_=VWLcqg29_7s`XQ~2FB zePrn}@W$YOLti_YA6ww^ZIpQ&KCJei&c#oKvkkS;nO?L`nXau{cZM(IEJS+YNMuXr zw#C~u&TD8}H1VFx=b^)+_`J$?r=NTUIxK_^PopjIdH8nx&#r#bh`x}4e)2f)DrNI% z$hAu;r?IxBIDCEqHoXfNV{#nBY&RZNaSZW6(k~nxw~_X%T^f50crK=WYtG16CGUjq zlpFCd<-NYnaQk}2?W-%9a-#asd$gv;BOv+QjnQw`3tahtIbBxv5V__d{LJyF= z^!JQwE_#9Nqnm&wad2BjKeCaUy#+SX>)?6WcMLN=QSxt>y>x17W@`xAt;Aj`J!1~` z(lVoOWJO=oT#da{x=T*d>6sxYiQjmRg5Z)7U`;O9X5M5_CWthvO^J#wrZHL|5*kx{R z?BJr*)xkw6e0+SY)xp%rC5=Xp&rIm?A)_-6vscijXeKu`v;iDgE1kdElub{RJrSM% z%d{gLkY3SQ=O4v8bg(t@0Wda+oIK+L5X1*yp4)%2PX1~7AK6|1>^+$8E{pqxr+!BL z<#yK}vetv|_|K@n{}gruU(Sn7e{1vYvp=K$KIpDL;*|_MOY-bKpHY9m@2)>$2I+5& za@T!KIpOPHz|)t(*Uq?dB0BK1Nqu$Jfk)-RHxH!V5nQxrjGsG%$(dm8^pf3uGWAYI zh88__N`29ACwE8D_wi9dr_tF+7~cG?Ep5xP;0eYj5FU^X4-oBVL;JGLRzmxhNBi(I zjajsxOvjQx&D2>>TPMo{jGUw06$yC$m-L?m)2`@WGBrXO$&_Q!y4JNjdFt)=FLwKC zLbfFD_a#q9c(ne-Jp0zqsK0{l`h(UbZzg<3ef8+BuOvD@_cQ9RIq2|}E@7EO=L0^Y z{@&=Wza%=}PdVX==zLu#IzJwsc>A9hlKML2>Rqx689Wi4@9Ub*ucO{)MdxAsyTfjd za{1}E4W(al^fr;Byons;P2?y)#JORGd<v7bdh3{|hkDp3u=n%VPV1jd1w~ZeO0gp%(s>%x6!uuP=4i7k!(#akf17 zGwN?dcl}{o^JK_ZkJF#oFLYxE^!!kB-2NiKQhQtAX!f=l%xU& zynWclg5%*7&fzXYpS~2m zdOZ5|IP~mt;<}{`FTlQV$L-$U>PZd9nr2X#$hh;Ah#lJ%x z`FhK~h%B5ufb%e&Md|Xc#*ZKZUzVBe}@^NZ#=&>{ZZ5Qj*)KAu zO7;<^OutZEdkOO&^zj`3Mc7Xqq`vymUO#{zjm|GjnJ=DeFXTK12f?KwavFv>J9~!j z+85(XvO)KBHymo4qVela^QYqY-~hWi&LP?V?Uw!idUSEwjD$b8P?tHa)trG}{Cdvw zMf3aVPiH5;#*U)rMxOK8r|e{J6&^&~9I%_nr#J9=h`5d0PVZY&L;VPFk^jv^K7Q73 zEO{Y9tl4d+2l$`;4R@gH9`%n>dvm9Hzv#yAPCXoCj{jng8;QGGwIDJ^?X51iwybpH zK>C79&GfJJI#SoROyk&uy<{Kum<6Yl$M8^IrgI%)dwA#AY2F;@*~h!j4e0UWvB1yA z8M5%!$DG67o}{G{luIl z-j`>e$~x(N6FOt!{crPZf8srULzI_2H#PB&y|HMk4rX1soYJSbk zp?Q{7Z|c0CZ%2_3&bqd#D2{0wAJKzg z>n9gv5zj_!DM9QBvVHy^?N_?-V-aJQ>S0f0%-AlLyf^gH_{;DG&Ip&RTUcnvz^mGY zQ_01b9$iEk>Xob;*M831_8<5Uybm7IA^uc)jO50B)X`XEXRbr9X+)PfB! zXD!DEg~zGUD)xje_<-QEwPx1DQ8s-zcO&?$J7=Xhek}pkyyapmu60lMEnF_2l$RN= z{655|_mR(U?LIDPnR zt<6H(GkZ3k%~wsR*PR>k1>1i)dH3?k{{|j}kLhoqGrg?n7V2s|mH2y9LyL{mFP<&= zScfe1&zTk5``18yBRnP-nJ63G41BV4-Yn-@1m{lO1MrL+S)U)iJj(bo9$;MLS>N4& zyeY*e;4aSTCI9cw4IK)>=OvR0sats0809Ki8X?c5-obM=7iOPn|AlwRwf1)vXWD<_ zop{#|Q+~KyafSQo<3pZazaweyUGDeYk6e^&Je8bMjy%bT_TjtmGmJm4d@ZV^e_b7l zUypxBvj2-<@rVlx)^pu_;C;X?*Xa1^Y%c!xnF&9bT;fCKoGtredQ^BQS)FF()Pz}s zuKjBqc;D^z(S(0TgUOBP_z(@}{kG}DOT!bpum3f#K4&D2DQWT_+Fbn1nTgov+(K*4 ztj}v)8PUhwapiH>dYCosZd_Nn?FO;mHqfr;H`LFJ>*CT`lZ0FCek=O!_^mke8tc_3 z1~37yo$ceA(2KZW#&#H5sYXt5ZhB{h=$iYA^L;;Do(jCZ^_0xH)g5~nzy9vVUFh~( ziLN>8a?5tcE`P=B=->0LrD^1=GH^A1{8_Cn|7z>x_vDQKG`F3mf3~gj_>B*K6N1L& z_pyq$;J=d}3Xz93p`x)@yDi+(?zJt=McgfbRB%97d8L|N0=P<%4~3*Uj~8vnWH*%ta(5PPz< zs$op#`pc};q?5hcFs9khzESGoqCk-IZ z@6Hy=gl6NTTVrk5dlj;ewQQd1tm%c6Yr2-b??=Sc!{7a^YsJ$KZ*6|~xjl6cy}762 z(hv9GzZffG|ImB`GU80u{izgt`>0U7*BbVCy(ZO%zo7N#BDV>BG+oQth1*9ZysZM> zsdvhW2LD)7{N#BF{!#pg?-@E3A2NL@9~n64$B(=k9mMoS++BBljY;b3+|GUd>%0UH zttU3n_!8b}t)F!sZ7Nsj_)z?7)YrOtIoq~R)t;#Rj(B|+@7eCoEl7FcwqU6F^_Prb zezoFbw5Rp?Yo2m*rW4--kA)X_ZB9TQB*#yCZT3l;!(sBt3tkoSBMlFqE!+`o3@nCr z4~sbcdgI#Rwv&K+#`y_Y82*S%nKeYbJ2QIbNy1@kPOeDdfrsP!SYPp^oK$z8#rL7q{o6IJykd_7ZcVB7 zStAI-PnV2BXIWE7OvrC2*MMA0yyG6*Cx1!o&5gX96pCkS3|S4A)Gm6`166!Of#M;^9npx-IkLsv zbr$6J-qg%Z0q*wI-En^K+kZyr(Pr8p@8OOJbI^S+=!#pEBS-Nc3j*w4(MN@Mn}6lV zk{ozL5S^hnV-;R`F{}Z8k0sZm^b4cM;cxX-#@vMb)qX`W5eu*z)Go>*$Ep?m7UkJ9 z)F{U5l||X>YX_%n`8nn57G1Z#2w0-)8GYEaRXxhSp7NZ78$FKyOJ2)$blgAilx`VE z-f6ydv9=KeQLql~IH)^@b|tqokFQ{xDUzPScofgHAvH55ocsdqV^6E8Ta+1lB{gfk z_STQM_3BcuU0+B1!;`FK?W?{m+bO>gzZBK`sToIR^l!kdF7+!h>FVw4cE0`RU$iY_ zEq50oyR`3944d%D!IAUrGwHYTGU>JMyB-(V1-z4v+2Q?d7uY$x4}BikAS0sm8~J6M z*$-AozS|cV`HsEg6140w)~?8yg8Mq+&>_a6eMR*i-|T99dOdu44SX64J~?*-=9zoO zgwq~ADZa)>{u<#zZ)9Hv{inh61n(mDp^BqvGPaK6;}^Mt68Kf#%bId{uzZHo%-Zb5 zhBOj9YdRa>Nb=oDo>rTEN=9o7_f26%o3i|j2@VE$@mTYP*e@v~H{x9E`uG)XZZC`%KO+Ukrk@g}+ z7tV}M;=cp*8|HqS>J)!XK~-7lP++td|6&85gZMYXPt;Ep_^)*pu6EVWU2Z>>7+>Ty5&5TKNQs4EgEj+hur7O$SXEF2Ys;{qjebu8=qFV?y!oi1l zFS_1)mFDEd&K_HzyPWc(t>915360*PeM?5PC+}Z$^&YkRzd6=Y={9wXvSY&EL;Mym zsC=evt@;Cpm-q)<*p9<5fWvDdW5TJ_fkzbFmcZpDh4916!R5-qC(aKS46>#OcXcPj zU9>4(%dF2J7k>*s1%C`$Q+7K!J9$QYiT~V7x)VGXt4O8l1|-Q<2ZI10QK2l68KYb4s5a<=^&y_+># zd0OCY`K|kr4g28Ri&^jFI|4LE?RhlEF-da-=IhQm+?KVD|L$V0YniL~P@VV?@Y|A& ze21_8QBTf3-qe%1Z_<-BdW~lhutwgpZ$d}Q3dMh`|G@d*@H_yI-U0j@kx~BbZ6kC( z^fvZoZ>@VVmKS%C3yiiaQ^vmQ%4ma6I>YtXg8!^7I63(tWP392kpFw~Z}DQ`@7}*o zsINBp8JxQkw6=;#iNpW)A=^5`MKC$YSheOmOc|9`9oFqW_%i#FdUR5Fy2+u@`w`j1 zGNOYSyVf?DKUY1})+sNFv)|rE`@-AGnznVDKf#9 z%l2*Z$+Q}HW<+o2c@TZ|Oy;Pk{4X0;I^{KY>093W!<5zd)#d`et4;Rqq7mYsFEF`0 z1|*e#-fc&AOs@^~YuX@I=$oC}h+Jr|LU;K!?=_Cg^&B6HUuJ%1M#r0HPPE)SZ)e1mPda`4ly-WV^yG;CmqHo**xuqUIig|G;zO zFJV^@oU}iz!?uu)ZD9*Ir9S@1Q~$lmQ$EdI`{cSY44j)}(Jnr>Yc*c+SlTRcXxPb% zvW@c>jZrf9Ny-|#5o7=&RW6>$yZcZvo`8_;!(Q>oS?_Y==AT9aFn)G6d+@-9*Krlfimd@n+mZ`tendDS(K@9}^8 zwH5v&!(kla&J)^Mi&?}gi-oMJeXb0!qe%d_8eYX&sQX zb3gCAXM8II)}7PnL*xAuJYhyg=+Qn^GfKDeeO9Jr)@mC6J?73|Fj)W{exKihi-FhT zGTZ7ITHW-3wc6@g&eOO0eRxqpYI^HJ=H*XK+tflE1xKvi*%vNeerP=H@==Zf*~e4S zk(Xs!OQ+5#EnSJ8HN4l-<@*2E+?As~)aNhxF8B++^IiDsyyiZ>&tcyXOii_Y?)!bW zSoMbg_ZV&$^8PB`tKR$cp*ruHXJ+&#iS{$1Px0O3J0@4~BIo|(k5smg6%P*Q4C{C{ zQRKI=iJG}(MSm0Jo~sAS>jPKHkD=XesPD#ZC|$NsD1N%eM<3P&$OH6)6yYB4v578` zP1JAsYl7I);UAZHc2Q#F>-`h38_}oqv_@#Gn!T~<@51i;JK)YKa!$wo)Q{=&7`9Q< z=eg~D3a0stT|D3POMUrnbT`-c+`emzI`(Z**NJ1#j6O;k)0dC@eD3^A`_M*rZ8x}W zH=Nb6?FsB@1K5vEn~bkRo2$BS^I5meAbY>$wMoG0+>v$=+-Fa8{p{=5mZi500^Z}! zDKUK37v#QU%>%w9+m7fqLVrQ+Vec<7@ho~b&wJNcVo&|Z8QYoElTI}1e;i)y>O@PF z|FO*-^Fs4Xk4k2UzkY|`UCqJA9p|Rc_e=0OJht!3&#*u)|Nv4E1WXI$gF=-r-8k2K^oRcI*O5w^~X&G%PTK0SImF!N;8 zCF+B*zr#~9%(7DLukc-ZLmc^J)(82tfSBi>^8R|(4OyCq^EYtfy!R~r(|PZyJh!Af zxlRs!qbEA&Dd?WP&_Vt9hXja&O0k*eTD5O=?ulCFgWk8QNc?v(2B- zZY?=7!<=hY46sK0m^m4^aGoHZwVMA!r&;UFJM3V3cR%?Kl~+$^1KJY@8t&g(%-Q7Y z*mb93*X>jI`tljRz=OBCd5}E2?o{l$+p+61PxlVm`^`B-8htcjdukvTAaE`l&e&%C z=X|@2w!QOC>}J~+y5)c(4^V?)EPGUZ?wXADJyJDxERBayHH7oO_)y{>=Bk@wkF zR*l8^!X99&{fcwGkR9F4?}8blz(3`LNQ++1oWZAdI}`S-CgivH)D4Wk5gf#aG|v6o z8{`+gg7VG7$tTa*LKEwva*}VCQns1zvK#PU$&2)(K3?D{9~RB8DBd=LSW@UzeWyo@ zXv@K?%;*!GC-~j-ghFyT$9l;gmK_~UyMEo1i5}6G#~21%_FT6fd&~`W*t4Es98Ld_ z-jyA_9Y09bd(8Bo8T~u7+Zj(h-Rlh6)?T$*IO66AG-Z=~uY^+>CzvDfUHS|HOTnR% z{pvmJS4BVd>{qL_UnNIiS2;1r^JDfuP1w3(hS#J=5Adw$f^M!=AK*`jXKd=PpcNmq zg3t22RQxY3JHmf+f8_AA&hvKZW0zGi%Kkg`r5Eb#KkT0Ucb>b}_C(^FpP((#D0mcq zpE)-(-$v$}L4333FFVqv6ln*fJqN|7{2cB z7b13bTFmnq*E2*ps|Wtqe4j{tt##Y~v}G;hd*}VRa9sZ%M80Vr@33zH&&#TzO?)PF zcWqhQSk3~-&vOIg-%c6vz!Ko3^3|E4Qtq0-_T8S3JF!n+(devQ5+PD7^w*v=96IiT&`o#}?t|vyyYV0B6xf+@V&V(tFcb?lOZPPZ^89yv~6Z zPoG{o^vF2cnO@o(J$DlA7Wcf5-&Li7|BtBi+f zyAb6(13r~RiEDB1b#yDzpNjb0J}0nWt1t30&V+n*^8s-_rTKu0F=hkJfDCj;686ce zQSKMIF5hw{9N!tVL#Ju#ggGqeW89Cp?Wlb61tPl8cQeL0=JuNhiL*HCX~u!E{9Kuh zGdU}NIOf>OAB}le@PB+`595$!Kfd#cajOFjNWvV=jM2}B@U7WJPW08te#dSb>dmyS55^Gpe;#Li=c|y}us+nh2pC@17KT3thO1*3 zp8G{>41ETMc)yM@Tx7x!agV_q06qdk>;n@RA|K9=F+2kd`P*ZR^|gq{YraVsXFR?V zF{Y-YEvNU(h%UmqHIJ)B=%YWmF!7xL%nZz#6=I$&3u9?8`sBLydG{`YDe(ETZ@^qw zCi>tY^i3P)A9xJ)U4e0e@za+SeADXE_R?tLrQd!$))8_P`jCOKt@cukmA#JLH=sUe zXTE^`jB{2KNSq1Sk9Ir;yfr?PkAAR!EAB_@#&f53?#Gbj$HLEh`Y+}=##s}zdF-4C z^PatE^G)$ud#`Szz3)eRv%bT;`7z|rV~WQj&aB{GU0Tn3o!>zk%k?zc>N75+!RuFC z?kLju7-{g>;jX6=xh|goB7x4TR^Pxv!c%M1Xi}2iQ zHtOVr9#w1Ux^_C;+~%C#F~oBtJ#hxrlCYi2$NcqZ!sP8AT`^_*OP?q+<9hcGTn#e? z#trkAUe@iOc8=S=>Qi+l!QT&NJd6wGXo8COEZfa>{Mw>M_lUe`JJ;9X+aIcmpsgns zRtwt7b1!uD$gJ^YmbzxPkE^AErn(K1+W%A{^Fr7VzJh?ucHp{1* z?$UYC!bmJ_bDhj-hrc6jt-bM$mv+p9ZekXZ;GiANG3Q(_zQ}OpgfPrs4e_D)xCC z2j69y^fAVY+6S>w4dYNhPY<>&tW$rjO+M)d8Hxl^fvNJZzC^`JMN;qI4oC$@ma?>@SKk5 z8=XJ{J43&=Mg<;b`9l9@Pzus#xxv;BvM6NCE^)TCn+H<#USLG{1{doHybgB~vd2Kk z9!aZccM`r&?f_pt`e{P&DCp2pOFT>*j1|TLqrxcL1%J5zy67njWC06p2j3o^rSu&R zo<4l$VMq3?V~*_Erybco-;iv-Z)kS8Z&-H0q`d5aFEg9@I&{j@PSBNCA$OkmHP-9c zUasVDc{ZT$wnv>IqZjeFe%tL`^>!xayxP(6zkQDUn8(c+@K(?EkWqOJRCPn zk1Y;@Za1H!%8Gt(J)EMpyW9G3-Z%Xq8@}cHBKs|By7pv`q=CQ0I$RR+-rj>c@^{lP z55I@yT^rK1V~uq>3C@ymN{_r~Xy@9&Ube!ScG@=y9sD6j2pAN*+V zeuMY-P8G)_AzotnUVMl1*qpozc9iSr9J;{sf6s!B?n+Y+`_wLLkEE&5aaXFR z58^B}&bGdG2H&uQ+_Y-~aN#-o@52K!LMqF#XP~z%PovW%z?J(X`g`hf@D{_*dyahZ zOYcp>U2OdQ>QgAkBG{iHzr48R+sC)xzs=oc`S#K)^R@%S05A*y!vHW0EQlMoy`=qJ z+ty(WJc@p}9Cx2BfXuNxY1!Ymc7h4cY#uEaOAA5Bh@HgCXA!0Ug;6*`8(ma>)ID$oN^1?=vqe-_N^*7ajxt7w#y+ z*qDtmG7CI#CU~G#jIl=O9v9Csfgc>A)a+=|C)%9RTNr1AHIwdi}rpTXnp^Jk@lItXld`((|)auwC~f??s}QDc@Bhm+2zXrzMjV>J&$MG z$YZIV#|7ZPWB#8l{{cPi)q2{Gw2`(;Py3U9G3{-7+Le0RtJ+ArKu`Ove=+U*^|Wu( z(=Kl#?NNH#yZ^xlO*T1!aP&(dwuzbV0Y0wjaJ zCAP8mZ9mG#&-Y^9cY(g1um-X*uO-;Tw>xaHerU`aUG6^0#H5u)vmpDXq+wne`!t&q z@(wpo=y#ZPIi6S2=Z#`|^wyQVn(l$FihaL34i27teky1*c=RFLxg5|oI^7vETb_lk`y%Xf>irL6%pdA!%Z04cx&8&zVKeSb5Mg#LY!AZnjIgsgBHm7f*^RJl zE#5CV9_E7a?v8#1S{M!nZrF_VPZ8$V!X8H$wbR2^X<=B$!~SLL`Nf^=yvCWWtnQfv zoS7Ez8dNr99o7eT!)89d8*x<*hkZUFFPd|e5V_>e`~` zS?9=msAy{V$8*dD3F{5p8oj_Fs9fy{+-Me5xTp9CH!2B~#ta34XVwm!OJ z{6>@!=__7 zOkH2J0DPqIL{LdbwvjBUf z{}XmPFkSu8upFbl1_p?e`hDNZWc`vc;IrI$-KTw1f_7k?Z#nLS{l5Fl`CfdE+YNJs zZG9ha6w1Bp>WAbRoYP}J&V4-!`v-WJ?-a(p{gp?#4Ki>Z40a8|`P;a6z~(yzmcZsa1^O<-xpcg@ zLhbq*+6Q~ayRPMPE*pW>k^T0yTm~EN?|B7ry{IRzb#R#X@6Dt3Bdo2plf?A9n6|BN zMcbgeF$RpGK4-qZW$$S3rkkPjg0`*a@rLOc?bk=BW)l)5v&pgQR5 zyq{&q_$6baynfB};5OjU7Ckt_V_r=V^xzuAG1CJ=hPp7W4aTlAnK z!kHd0O+@|P-nvrAi>>H_f_4;i0eVYTKiaf@k5|3$XW~?~G#I>@%dz?aF1FjIt7SnVt$;j5n3`u#PnneSAY&M)a$` zO7sNd(Jt@a)eF7Z2N#aY7V}qkY3Ej&Hz_&TzY%-h_(#h5liB|v<@~|y|Cn-qZ}xvm zIfu>uQ6^l8Kw?YFn(&T4MIbntT#evw?%MVE_SY~zjr<1E0P zTADFgXe(%gm-kgH8HH^myk0|J@>w2z?x0m)WtybP?JeIVG4@?Nlic?FUSd}vGqt8G z2ht8-+JAdDO+f$UzStRa2Yi;0`GXI%WesRc^Hp^I1n5RazmCz97RE}c+v!pd@A_Cd zd~ObDm_2_zc!;gO6m?|2#cB2Jh_k*p+j;DO)-Ib+&KQjuG@))ZWDY@>(!|_sl)ENU(8!$6rDaek-qkJuyfA=P2LX!Is~TulDB9{HK+jaQdHH2!82^d=c`s!Z~S zphe?tt?13KxoqD@Zy0B6Ly2h|t$;l+G`QJrObz z?h-=z?kaL4P3onso$~yA4}@V|=g@84EPSsA&Z_k|#dE&nEE7-TykBt+z9r4{g3oks z;BsNFEVo0WWhC}8q^?b~*w*r1QOHL{KgDy_mEPz^#i^9KcKO1Qs58IYv;Gy%_X5t7 z!LMM?$W!pwV*e}OQ{w1GB3}4j?b~^Kfi0hT;CMKvzabBI>zqftZ?Vr8>1#5ViT-Hc z+v{1+GZ2xqTw2k?gFi^gR4M<3(w*S!P( zhse_-_&4TOv5x9Qx?HEm&f0#r>rn5DX))h{m#Ej7zZ3ck)cFMRzFfU~==HAUdOw+0 zw;FNzJUHr(ZwzKM^+LGA(&N;A=)}FykFrt!?$=txT~-g{91A~F@r>~>Fqn)qxqqlB zw|rx4Y=;;XXEopJ?kHXo^}d(Z|+4S zi-8}@OU6FeyF0bL&z0BX_&y8=_TKV&=T`5eY40RqZ|rpJjh%SWH$rQ3#s1_&{Z@|= z_jA6Eylc~GBdeJ#aoB9BUjatD_mX8<=GMHtga;19VF zefwyuclI>)r9C{CI)dYtXzOB35BQ!mZ`Vydzrmi|ugcWA^bT~b4K%=)cu&!^5!!x` z746aAu+OwN#_%TGvxe_P7UM3*xB2`km$?VhO~jbmn!lo`abfO~+t7!b@eMhS&$`No zYVT76alf4H$^5!h?77|LH6M%g)>`mE+8)~;^}`UC*9AAcDO@4qRV;Z$S~{GvJVcF_BSaY56WBzE_xt?-kC$e#mCr`vCoT$F8Mu(X-f-`!3G( zJP2K`Z?mOxGwyQfdyQJz4}1Ps$0IBs-}gn>>Lj>xlu9SNJHUM<_DR8wbk^@0JSsX$ zq111#()d*zFqq1Fny&#pn1emdkO>dsuIt7*d3(GcH;-bTVE?#z=Lqzv37ne%u-%L9ANkw>>vd$GTK@6yGwJPx+XV{y|# z+^K{4l|2hFmZoDYjZ=~qbyqe$?88_QI5{nqDS;k7;V@QE$qzvB2k`CiW!+LqLpI`JO<)v36@qHo^4 zOs^bD;z?+?#Sh}X9^Q8?%C>)0v;k%N7JJLXe{CMQ{H=sa|CLxT8e*y34xGKew$ARW zsFjVtOZ1@?qoQ{cr3|X^E}5Q~yf#nidn6rgWUI7A`=ia5UuCJ>i#(QJW2rpK_8?1T zKcpw(^s_~KA&$A6cYg$WdII+f{a14_pEp>JGA;maF&caV->f~-jJ&~P_O8NO+1|gc z*6%SI)bAk9CnSmU2}d!PXuKoprH+n*F~!CU*KY*s%ruzWJr#U;!{qBlzcSh!`w3gM z`3=CerC%*>@=(CiGp zKj{ya$^&mTvs_R#4Lp3|^2A=YeKdQnlAgR8b3RFMJ20O#0rbr0N}P>8JZ!?7t?QnQ zbe7{Drh`L3b8!z-CNS8fB%R!xg>i^9xLvu9TlI4CJOY=KP+yjbdh2Cn`VQGmoCRPV zRqz#)j>_+RmyS9IvLJtN`}a1`^bFcr3qF4z^Z-tm^;F2r_!i@+rf(oqO#Vl6H?}9j z7JYh^)_2o@0ceIXU%sPXN`mO?k0Fh}Bi-28NY}!7%$!5G=u2Z0aQ8IRw1j9$I zS8b6)NnV(Nxh&=#T~I!>aVq-4j$M7?qaEQE@10ACE;ZcPSG5@K8#?*A0=1pU35>3++-elrlx_xdr-^@=+mT4?yi zyzEXrjlBN2D_8K}5lfZ|K7?<$Vx0c0sjML?ROsLEQ-CX`*LM3GB;^iMF zRPsEwsM9m;qGP$9?<7Tfk|1L4g>lz}?g(T5l!aX}V`uD5E`K%q|cUYpvJ=)g; zQ?fK&%X4X8;m!t(TWyZuEbAgzqe!VO8ihFaq^4`RozGdi4BWF4a~HU?mhXIEeUImF zS+7e&yd3Z~e5>L$^f@6L^Im|XIQQ@?oU3YV-cw`8Z#?)T)_EZFR6y1rH} z)~|bta($bCJqzfcw^>@sbtU4TwWJQje)njk)jO%;oiFrvHkj&?f_Lz}+dT&{2g%rT zK72owcHSF%4uQcjycb4ZXCPx9(chhczV#gTYcUSEE9Vj%4uCc?4y)rX#esRd83!lm zI^&RzwK4;TebAo_9FkBj@fD4f-;-0V#R-)UXzRE6#-&@$-?V z5g&JpiTDe!esn$DtmBLkc4|HJS@^rvXT#>Z#X*0*G_M;m4f(!%Lzq4?EmW}Q3g2}< zy+Vx97QTHq;uySb`8nLt_aDv0py%RFBmX_xH_AC(L%(2M{{-&HVL9Uo zlvT_dL#G}DH}k2zk7)OTinD8}lgUFxsKb8|WevFD{P_E~Uwe~&hNWfI%16?4)ZaV`fp5gG9q0=pTj*D$Dy09#yZee+#Q6yVf9b{ zN!t^_^GPTlNHFHMu-A|E48k72C-9ux59#a>XZ|hPnSU-D_L-dDe7!bL!a5P?()xa+ z-FfmDp7VLUZ*Ug|V=))?XY2@jI*#HQ&mF|*1MWS^pFq*Uh{Jj_-(i0*;xL{(|L`lg z^RPGZZ9Ppci%q}xBn@uk-jhD!eZC{Od;MLp_q*5s0&XwvB>*qJ(p;8hItsF04t4ybeOf;r8G*vw25n^IQ<0uNP&%S}XfBjN7)-gKQ+q z4mo#Mp`P9)_w#y3Hyy;fB-pKJE9->oGmhC~ zXZh`X|KsV}F$eE#$+t7^muIXF_NI{{FL6(^a_R(R`?l&fTh9x6#x87X6A`bo6(oLMJ?Th=OMZ4>L>~ihY$AlYblBmm6@DiK% z+U!QX{kd&KT918q8zh_3I;^L~eN?nTRoW$YPc;7Aj7e%e*YRJ$gzIa@WM?Z(_^!on z^|*WHQcQ4H439gWUop2YkFWO;pT`_yyxCL-^SudJ!^y!K4VnP_33oVY=RmrNeb>K? zYG<{XMoi|kPzDd|u$YVNTwfx>QtKDM=6eT#%^@>?&Bxpn%iztHj#w9I`&&l?zXaby z{;~e;?AOx2_o099L;uFT;l{Y){`M#2$8@|&^tbNc+ut5Ud~OQ^i}}EU>wHx0uJ^aD z^>Yx%hI1I4PxHcbjV^Th?mluC-Z9dg8pF5i+BJNK2lh2G&WX6w?I839qx@n_2EIF8 zzbW0}rgRh0Mj5!@-LBu|VaNUM^eFII*pfcW5clK#e+8deh;PP+W&0Lnvws zF5!)}8fIOvcC(estnZOIC+_y_Ql9_}wn8^B-={DIWog8H3al>?=1IEJ1L9s|7xLq> zLf(hnwH{+XmHqSKr#9}rK%0v)G~zjA0OnD9Rzn96<>UCKxeUf9Rln0<6ZR>Wpv{<$ z@ZEvt?<`m2JInhpr@`ye+y@%*9>+Tf`sBs@2H$V623Ywpw?Q={o7$pL{XjRri$3vM z>tWmp-g^C3JA-V?%iEI({gdzO>H80_KBIr`quuYx&GWI^rmZ^D5$Sf8oASioJZBdZOIeuV0IA5Z2-wgsaEr?OAg* zcn7hs2A zKap1heHY=dyTX1B_SO6x_Gs8I!=4QLP1rZVJ_5TG_Mc%_!!E*o9m{NUaK~uQ>YH?T zPq=T>-2>siU3cfgU81|E!(FPoZ-aZG?p_FYKzA>N8|h>2Mx^cS0~_gj2g631-s@o_ zJ$yewq~*OGHq!A1U?UChos?rnFMo*#&z8?4mw93n%v3QW)y9t8j9kCkj*g{JJoq&y$5i z`#e_|*XQxV3cT0xiIgD=@UDV933;kdqy!)9{aE4A-kS^e^?tN)W$$MSkKsGIM_1l8 z=Hr#MV?M(DYbTTQaGw(NPweUU=j84A$)t6ix6gQe`nHUM>E#3R_TXInp0}>Nr}G!n z-kknL`@-qcLOFw>PQk{9OF9zN@S($b;6uVOjPcdzrELP?p^Gi?2D$QTA0cG&(g z(GDYLWPFS~&f&h)87|T`X})U#kO>&Z%7n{$A~pj6125M=kX4uJ-zO?^3%a zS0U^^+p5mt(JxJ}zU`&yXDEL9ebhPWYl=@=tah9JD>XIwUA0^C{fM^?<;QtKl&5=r z6ZGG+miYQjiuLq9+~ZfTCMB<>M(gCBI6E$+rH<8D2FdxsI-YyIsaq>X4j4 z?cr{p!TVLseS+7l70`(bcif1+Q;a?|r>@DNe=laGc3uc`L1JIpw?Qk;`dxbG5Y9ur z-Hvb;8#FazAMyO&j_LVo^skuHQ8tgS8%*sQ)NNDh8h=T3DH|u&eL-r&Tgnv;aYv`s zec4T|JFRqY=z;GlT9h6QJ>Q#DH_?*Z;38{7uMeiz{eXHk^m%YX-2qFNhU7z2>t0f| zXI|>o(Ej!Ox|gVZLx**f>)ujQ8-7YxG+5Qn4HXpEu%1#HtPAqar>NG3xPN@munlGS z4C|oVNNM;C^1wDqXm||ec$~U7T=S2E4acZQ1IzqP@Smri4c}m&z&EfzMgDQUlj`E; z<(>aRiEH?A^IHvnr#=nc{g%2@l-$rW(+0as!#V1TxZN6T7Y;SFSK2ouk5uZCl@1ME zGUH*#BP_MShW8Wf$#snv4mWgAIyZcQ^{EbH)Vj~H?$iNsle4XeYiUTfCDfh59UI9? zazp#fMC^63HrN(mzX0D6Yo)sMZ};72bH~;F1oI~8zU{k{mw1~BedW79w{*B+UDlfq zw_B3lv>kosGxXyZS170X>?ikm8?{@T3>}JA>>H!3*gGaIj{+8J_d?f|-3zm*^yk}^ zL3g{AvY)TY-d8w*u6lEYHSJBMJ#9}O)4lL1lqI<%onQAT&YJeKoPLz=jX*ow_F2%* zylz(Bl#D*$S8NTK>pQ<4{NqI@oj&$OGx}D`9a_v}_zjz)8>-`&!-mrJfgIs$wVe0l{E3d%0CX{bw3hc?S+rvhg zR(61ma;{8swni6nWWj2Emp;8Q-X((}^sj|0N@u zj=M-sOrDJUa`5d=giXJ3AikBd=HZig@5EEsi^y{^ked{JE@lFrW;z6w$ur;V*) zytnns@&19)Wt<1^!B=`N+6uYh7@i9mx@k}px+&_~tG-#$WQQNXUyJ(M2=gVFC*%62 z$Nl^DWgLwvYhCx=nbGSnSNDxs(R=l}?-h0LQjay04Yglr z-=v)SMf3lYy6^mNs=Mv`>V7aQ%555J_eOm0$Y}QkL!uai8=z-&`>wIfa&&ilUbGv| zP!Q%W_94BlWqEbH_rQsM#QWxOMn>Et!uu5X4)X=PP7nFnit??7E|3bkvK8k#y5Ot^ z-|4d%@9`cAM_Qmd!s$ zJl5MbB9EUToky@o1N}Ue*LZ8yZqUcIdn1F0_bv9`^E*@FUcNM^sjCIDZvu7ffwGLl zzNd@JascN6HX*$pnDgK|FF<-f#=9)*UT*$@<@;}gm)=v>yfTGpp6R?%?=gYT zdp5UXjAdYq`7p-#P9luwIx$`+4v&82!hAFgkL`PqetHyyL5i z4#96*jD0|Qn6qeXrjJUlMl&t>ky!p0o$^fwQ;19k++m?Z|VCu(26AmFK~kUVn`Cfij+I z+&|WgH7{-W(I2*da&G}(Itnw81Z}>MnmK4Pu z4nGs&(7U!lH%ECoa(Rq*|ABJW0`s?EV@-A^w@GKBJ!#F&>&Nfy6Fq|WL1RYZo=x1{ zms-CC@j4^zFw$OtG9s@HFXNfv=5Nv9e8|rPkK%bIJm>QV*zeQr`|9x?;$E&E&m+z6 zs>kbim+SE#urH}c%5~8#c%SRB88+7=gm~t9Fu&Y@XIu|Apa2;+J@fOz*~+o--xf=6Q*METk7=t zOPsDnG}&;3JkD^C>nyAaX9y2GNYijcLQWSz6Tcx(WtA_4#EJ}u+f(5W*3d-FiUe_W z3sw7^bQ4U(87c$x#hMifp*h9}QCyS(Xu8ULGyw)Rs`ep=Il5i$3^>a?A+(5Qdje&? z09rt^oGzCq97ZGL8;)xDQQn(03$QJTP(?6I^C*pm&>X)r?4>!85Dliu{-6_$6o7Gi z@H>_!RZgm;v193az!Aw0g@TJ|?DYtxepDEYusxO?G=>V;H)bqsn!?WO$HJzoDIY!U z>Z|DoG&4j$_yNuGRd{Ar&=0N`F3KV;(X8ufhA&VRrd*m3^algthjMiv4We0oJRFE} zIzu#oW_dy`E?_zppcy;?%Ag|6aR(KQ7cH@jiZsVuEo2dZp09<|O0!WoHpFw{zd?ivbLl`QnQBIFDqqnmwxx62uF(|C+xU!aT%d=YLlSlo=TL?`k^ zJmuu~VR%eHho#c0fD7-Jg=wN7GpplWi(Q-0@R^2LLpz7 zHv;M~(NoI9#t|bD93T=13rfM>YG=sj44`r-zn9z|S1{y^pf|d`D7(|)b5ljg7jXG1 zoPG*;B8!8-7abUoa$g_M@CgiB;xi&G@37B!Phh3J8?FcjxYN6Xn{h>Ax>k90)XMhaCWAX_&DQPgVVXCT_x!Bopp%0ncb zCKWj56c-7*@Wz4yO3&gL;Yi4VbX^=H(@yrWW9?|jjFImU;Bj0d zy^IV_hg*%Gr^h^=@`^}JddtIrXR&x#?yLYDi_?dSM}`l5Q4nnurYeA5M7o!|k;CwS zN>%wIF|Ruq@Hi;_4m}8;@9A_Daw!DZ)zEV44 z*b$dqMzu3CL{Kgw;H3txHJZ&6@%;?M~h7uU=E-7^<#9f&ySI3H&p<6a40te9&uIi7~IXC-cmmM7&{Fb zg!x>*c<6^jrfiF0=KzgiPbA2(gp>Owa1nF|e9#js51Gn_ z5gMR{;7_7I@vFk)WWpqJ&;}Q1liQ<#tPeMb$6aQGF#ki0#exyC!%-D+X&$$)v{Z9B z-5^mMQH%pnK@4&f#91P&a_18Em1FRUA!1a-;c%ggR{Mf}C)3j~`TgYx^5exaP;j41 z1cW?gz}myr2m8~zAqeeG0GNpSk!~#qWb#K@M;;Fl15`*z90`5>ID61Y4^5`Y; z`YMdKDm)&LXQN~>ha+5rLV<{)$ko0uiZ7hyfYQ(O9^wTPE{Bk&sv#s zlTVM&eHNV(&$V~_EQ;vqML=t{z8r#h!%`4GKF!|M#V{Q$T$3=-*dv%NS3=FbkUK#V$Q4h&q#mV!tC zSa3pLX-zB&H#0NG7(o$Zxy4(;!!!0U@5ql8QzyM0eKQ=o%W~ zsH*b0nQ@VDRF4Evsz&QV))!D}F2+}LVZiAwNL1k#3WMS@)8;Oxl~n5|x(CvSuNCeJ0XF$9TVyitjh@kEj)Vu@& zl?VJl4-0r8xRnIa#V!tj;Nb_kg~FsiiP25nA9kXP>263ov3N!;wEk>F7Da6x6f1A5 z;8=-Tg&LW+3gm_lYawB;bNHyy7%xjmcb3#Z`6F++)8#NdH2bv}CC;!1lAR|Y*r@Jf zp%hG2^HqiXtsirM9wPuMY_MH!8M9xfFyg`A$z1v9P zrtuTa3`*yc%zKCEZozv6lR^s2{K2#WS$Vn|YA+2i?@EJ+(;|TtGKDpAnB>p3mqXO_ zRro!2urIq%lEQW$GdRIP?dgKI;Uzm*A=rf*+^o&lbzS)XA_*faw5=a1W7u921QuKz z&`86)gMXFGg8oOtS3!10Ff-8KkMc~68E*`WPf0f%~9}|v13yTcKZktwNeqTwe zurzRu5X5naP=m1p39s0>A=24_)^cTP%E&sT!aL4B%${q93L#ztwR3r6 z@_0H+@nf%N8C!4Obcp&OK2V+@!^grPtwRRSFa?<0dMqvmi~Z?5=@d&(gwl{9EnP#% zLM-tFf?2@|?kCgd*tNM5s1nTmLRn!Spl1=qQxVDFw_CN~ccj3RRQ7be0`_33U1-Ka z+!D>v;^kDQc%ZU_E4l3@=nHHpeqN+CXfBik@E9Sr4e|K#Kg$&?ufY6Q zXo%kC2#Ym8-qj|=>}i8rho@bqE2gYfu+|HCE>m-4a#Mqd=z?6P{bIMLQVRp+G{ibB zASTykB2j(|IzuL4H3T~?78o0X^dwly)0{v`hIm%$)1)4LU|=j-K@=qhhR)bHmYH3ONag_XsyV<& z(;TL?-9<@hEoh{!Rb6AfnMR21eF87Z1tr9Um(OkIB?|ihcM^p$3kf-_1cXcIfDozY@{pY`sDKA| zKbJuYun!$9{^jy3JndegD|~`QIjV=Zk+Mj}UOoIfQo4f$1wkMnrSP<-CoOjvWu|d2 ztO}>)0!uf%y7mZvsDu`m(9mJSM~oab`r7QA{P7bePMS<()9C8Ts$k?gN*lnhO`9{5 z1`HkP&KfXuxb{=buH4wq-~mHNxNoBxNb^*VX2A3UO zqyb2Y{}&HHLi~U5fD!IXL$UVch(tiWBe`e-FVm`n3B(^zdZ+@jRNlV(&PEq6c_ z`dS;+(4UwqgCOphrYh+nEfo_1B7XupC?k(`v9_WuD)^lx(DWldPY7#cSgI%oXMt4Z zq%a1ksEj5zIk{e@Dx%I9yioNa-DBR9B{nl^Vj3K+f_WH&ej<0wmH-f*e5$HICYqC% z{>sFJff1Fb{bJQbLu!c$;7Ck`q9!amxgj8HQ;VdxhRCoK%YkmRt=CuL!$L@n);YqM zOh7AQ7^8833drNK)<7FAjfZ7;(q?<>&)RBr{ZUKuNW=R}d7EijR7$F8_ zg=B}(>F4pY2-C}f4CJndrRAnkT4ov}sXO&M7I^~bJtK$aj7IZnyq`;mK?sozPvAm9nWKwwEkq@#Xc}9=j99RO z=M0&#LRxW%rTvzKQM07ESd`}VERTCWIyt7lP!`IJl?-$W1PAMV=Hi*2UtIFJsD2Qc z@|plLc6pI*5}JnD9jLaj!|aGP1SasxJV@PuKlT7j9>M&ZD~RqgaI1(j_n&xEoA|-Y zBDs;bawraZ=CYEbAC~w_?cEXg(ejh%`BqH`NjDK+{ze&HwJu5 z3Y~!OFu}vz*yWkVL~KBq@j((TK67Pw5etGQqVV)VahvFZNVNR`?+DoxR2>5V z$)L0vHPnU+hAFx5;{dU#5pz|>Ac5{-Oppv4Je1efrxq8_auiRSF=^(F#f}+sxWXWZ zG<8z`L{>Fo8blyyXR=|}*FVsuv^7L<+xAJg>JI-W=*mQakePThiCMWI&S}W7!NVZ) zBZo`l+rjVJC*dVl>>vi@+M!m4JtB3j#$>GFm{X2rqh-rpJpr-zW(Zcwe1Yr4Y#)Tl zu~m`MtZbSxZE`jhO`ANK7SF^_DM~tIaS&^-@D6YB4yQ5wCeEBteCw=9T4LTvIp)-O z=AJgUc9n0$K$cj#2PF1wt!;H2x86Hhd1@X5UQ~kfzX11M|j_k_HIkic&8g4@O7+I z-5B6iF4ouZ`s84!#OH`Gr;8#`Gg5$4tr~ye)}9Tn`ocJYqlaE-W%rOiF1^Ii#7$kZ!y#$j)*xi zJBk>iclt9sj|rC3=ZH~oaVM=Fez|^%X-HoA6}lc;&sfQW=9ocOUo|4X)X1vjG--j(DhoPqU~qaOvJ>q8d~ED|!gwh0PqXGpMY@x$w6SXBzr zyb_vMO7p6qY+}L2S?Yn(gKa>bEJOd&cj;uYD2T}dtgb?;=ebVE*;p2yh|XN@oWl~_ z9PRB1POLa!9>9;CiqMP#G~NSspcI>qSe--SSkB@7O*}|BEv*Gfh=f#9RR#lQL;7+) zv>#tt09AE)u}tcM)PuJ@kWQi0i4;QU0L(rJi`d8w*+No+?>_zxblS88b1BL=c9&p&-_Tgit@=&Yf`G)e^x1DOquWil9OaIIrFfJ6w& zE9eQ6K1Ue33bu>J1VGkVO|c+fafl$3dR+ABOPhg3YNo@wK&h?VB2`U$6++rFO6Mgp zR*{WR*1Uu?-Xh~L9++urk^NaY(==L?!%)@4IAeX#hh3%2<1{Ihv?;RV8pripo$pQdPZpNzKxh3C2M~E*p$~CNX(bbtmWZ%=f-09B^e3P+?*Apn~=|S+04w3zdJi{7d@d?HPeGpIqWTt zDK~%-qYfRIr>!w;1`E70)5P(BwsoXsm;q@0jy_7!_5P{XcxLvW$p=ls+7Gq-J(_a! zF$LZmDjpU#&L0!|Q+2zKZgZFw2Im~b^IzWi%rQIMY{Rada-uOPs#o9&t-|{&Ez=?w0rO9K|2^83<@opBA2cM* zfmL``cO8y2q6dfEJw7_|+RC^7zIWH-f82Fq?*5x{PIo+g>z2F5-TV97dq4GHeZqUn z+?AbP_~Eer2bQ(FF*5&!&_AB}bM2GyA3PE{{m8z3zDJJ#Xvzy;y!;>gu6X^?cKw5y zC$j2SMW%mHw`1P>tIt;#&A$G@@|TBgJ$Q{}$1BTkeeq24(U+%0pZxu7S3`VRMn>un zlYV_ocE4VOzb((4(Yby0oZ@hj=Ql|Us|UZjf5i_oL-#(~_~K(Xl=j?OvG#`jznJZR zrAOnvhx^ArbmWJlI-IT8yfCHfzAZg${%iXbES`GJuIG1*{8hW&In(RkE1cP|aqgMm zVDIO5{S-%N9$%8W(c#|V$#4lrF|aL)kY4l6Nkc^q?k?B~4r zeNL}8On;ax7@YGKY4H2F(-((925p%veyu%;l;i$FHkUuzVb-R3{;gYBq~vdYRXQjf<`eD8QtE0QVh%XXx=dy>`L zlj1k`B=rN>sl9Nsb8k|zuOVyRHKZ)bL~#a_vT6vCdl)J6CX>2jDk;SUq%N32@ej@* zb?8jQn@5%c2hl+Xsh=&NxQY^_T}tZ6GE&<4DDDS7va|~jZ3`eAm(w&>kWvt$xV<6d z7om826IWH}C49#j-154|TPUWt1>Ua{D0O8i7zk}#&7 zqU=sns9k^DY&Jl#ZWy2_-V9u1Jy21tgOs@ALlxDF%T1SzP%KR&73G#|mH6Jcy{=u3 zV%?FeShnHfl!JLlbG$;YPf+6h6P1M2$%>_5x?+t?S7_=DiaM)6iT|KLQMb%ctS`+_ zEC&k}t92HdYPMoMK3j>;E>hIpMG8GXN3qy%ROsx@iu(F3it_Dkik0TVKNs)JQ{ooP zS7^cQign5D3axf1YNJDmw=Gbt-4`hFt6^_kps4RHP%KkRP$rk6rn(htZ#UlcDAq$B zMJezp)?0iEz3Wqy9ezbU>sRQdaz)JxDDmz9+yR8ay)LLIn?nj&BZ|5%f}0Pj6y^10 zisju}#9g5%jXy#;eyk|P8*oVfe$@46c>iaLlKGHATOU%C1wU8R<3Cp{J2xweeGBTh zMM;|ayrQ&wNukWwl;jZ5*IlKDb6zZW*DfM@OhiWVC8sH(FIvb5!fl9M!TnS5=12R^wI` zscK`9svMuETDmV#=yH)EgZk4upRn>}%c)SZ$WmUNv zw=tlqk)Uc_5>#norD~m8sV1zBsA^sn+*PVtu~?OF-bkr!ulqabHuN+6rPOM2O-e1#C9t1$cD8xGfNh>9V4LRv*yi~H zws}s0ZI*x7X1$;7p1RHR0_FK;7m!2=-^{c9w1r)@`VT_)DoBs@ubKd$?|o(Cv}BJxaGn>o(7U@cTUP z!FG;r=j!%#x;;j>c@Bi*@w^Dz+Qeo`ZJzGW*X{ATJwdl8>h>hvo~+wbbbG39Pt)z` zx_yIg7wGm3-7eJanYukow`c2ik#5h??PA@&QMYf>?VEM`7Tvy8w{O$!xw<`1x998j z?Ya$>8-FRa3v}D5+a+_A9#mnrBVo+n?$7-*o%DuXk65+9Ir9&bh5s(N-1SA3y0f~S_Kq4R!kO)WwBmxoviGV~vA|Mfv2uK7Z0ulj< zfJ8tdAQ6xVNCYGT5&?;TL_i`S5s(N-1SA3y0f~S_Kq4R!kO)WwBmxoviGV~vA|Mfv z2uK7Z0ulja`>1|Cf3F|Nj1Op4p)tk^d*_|L@lKpUg%^lL$xz zBmxoviGV~vA|Mfv2uK7Z0uljDg>TN(3YV5&?;TL_i`S5s(N- z1SA3y0f~S_Kq4R!kO)WwBmxoviGV~vA|Mfv2uK7Z0ulja`qJhNlWzfz8WH$RuiY-p{KXLsFkak%X=;VG91H`3G6p<2Ul zH5}5G2uK7Z0uljAnCoE*VQz=1fVmT91I!aJ&%wM5^A(Iej?`H&)i4jhJO}e6(4097qDNHrYk6<2# zsfT$9<_OFuFkivM+kgQ~f0&Ut!R~NXh5QbWGhE|v`901+RfRdo7w|>Q{t8d1G#Dy3 z2ZcS6U`4A);Yi363I#)Ytgzn~jyRkZ6`p{*RZwZj<8e6sesVY_dP<#D{zy?(z*7)( zIsG1lIb7aF;m9I~+ZkHy3vhs*DjZ8Hh7IMAa%Xr^2rmh@r`%P6T6h<+FC1~Y7O}@s z>hy6IrjW8KX9z{%AUD!PjfK+}FkHc^h;T-N{@`K{D&lZNf>o#ioKBa^!}WFIA<`}J zaji<0dO|@|4z&roVB>d@qs$YD_{vc>c*BO}_AxHOFge`*a1D_3EMbUIBXX4L5lc(` zRbemuNC6Q`gMbcJMaUP3l(M5r1cy9MWX&kzH|+7C-lY)_7pin|$QMB<-uDEmh3yT7 zBLOFu27whmyr>s1Sn77xz*o*?b)azET%4ajSVjO?t5LZC7k*E9d9WI(lrIuB2{;46 zu;1fB>A9353^0k-H_BTP@p4g7>ww!)5(+xqE@v2ZZWSK(l?9wAdaFP#l6$d}0csU~ zQ4mt++8R;Z9<)8+GyLUM5zi7-#|3~|hgAhyhlV|V;0t(NUMG;ya1J@Sg}DZzc5rBr zggh=l8}ev)ggoe^h!+;U9D^c^{KUWrbLR~Q3^X|0g9?RX0a^y(u*(@h?&!GuG!gY~1LoHQ#(Q`mo<@RP)JO<@*s$Ty65-!6 zbWBIYU+pLf1|x{)tYF%%IOrW_0-)h!rHv;Q{MKGb#P61G6A|q8xI#4;8=XA?&C$b3 zn}5&G-#rzF-`#KV8!v6f`>M<9;ql4Ce;kkuhTM*7U(oN2_<{kNL~2=>a(s~*2i-tc zx7&f9?-1R$J@+K)t5K5?AzEamRe$9yww=<85OjO!0R=^1$3_L2f631u{LJ+HIpg{B zU?~oIOkpBO`w@9-9hY%cBbT@7aTUMES95t=iV((t3^^*CA!m7*zEC2*fWwL5Rzv6T zCfaQDNIIhU0>KK<42O$8R)Rr4I~n^EN)?FF-;vL@Eu7EsC%|x351PKhL$9fbg5ejT z!>X0udxIl<3BJ|}tk2X-(E1x4 z+ctB^XPY22sBT}lLZtG0E1v$5pKh|C+Z_WZb$iOtw_mlESNOmm&REInp#M^x6%J}r z%V?K1NEZ5t)A4vgZ0Te?=mJP-n7)iBtN!q9{o#ADhkuSopQEqh$>O13#(|!dI~^2_ zuL_AF=Aio$kncW*zVQf;k5!)u;I{Ga4)Oc^c6PrfO0`3{x8N5*&^HMYs?t*V5cwUG^kls-yu`>Lri!Ba_}CzOVQVkv>OS&^colQb%<70sujtu7r$r4Z=?AA0KZ(c`x7JdNFoM-2z^Np zeF~w^AhcE#Z8e7`pcoE!Rftw5x_zakv?dW{`DtPqJ(}pJUne5_eTm_!5)tJUy!!e} zT!?kA@bBjR{JT+vtQWsq4xq!u>q5@AiD2YN;I1T3c?Af=>Ll)S_arfG-jEdVET)H( zFk~TGBH4rdd+>F1{b2^Pr^6xhMYW?-mWU!M^gq}paTErj=WIV_sk0e)Cc_5Y1_T-2Y>HHSY*B#`( ze)c4%wh`hk^8N&4uX;G0NG6M0>p`As4=AxS6!Jj`_){{=hdi{y^l@^?Q^t}*$l(RU z^g~qoBAFZHKyp=pS&D=Hj!ag)&wcHz=-tn6=K^`1!$*yFl+;8#VMl=Ww_{;~LDx9J z!FC{t=Y)oZUjPW9O7upekW*=MQaRn790)E(O5zdSpB$oR+lA@fc9EJ2 zk4Dw+YL9OD7*pHT8pHSzyLWC#!ta+`nNU9e59T*M?#3M;Np0%@R97c)Ct+sM!tBCy zPlpn}Gq8v@bO0MLKX|xg&qXgHp>IznAcuoT;+cqoU#`9a^S!Td37Q@;N^m!Hquqb!utV#Ou%9FB`7H^I0=k+gOqjN$ zK>nj=@#v+uIHAV(IYOz=kDlXk(;F$GLhs=D&Nq+{{Q<5Ip68hB&vVb*3+0F`T5-Nk zDXoJ1a3Mvcjki~J1jv7l!)t3gqVM_2yd^=<-oK`>D6j<&U%!uWIQ~;k?>(qVDDJ!b zyWuS^MM;fAw6Io$j>7r_-rBv7OY$LHs~R}=+2@TauIL0_cAmqIKgWPMBVi5E`#Z(> z#3P*`7GSiz(GdckBY>iW>FbUjCxklsai<79+KG~!^cWzf-(BHxmtmxQc?CoarUtA2 zPkZMAozu}h{CO@RG$jZ^B634SMAZFKO-U6Ejk;7z`y_IakXw@=+EgDE1VO6NH-AzM zLW7hbty>TTQ9)D?q@?aD2+~RkzP)Gf^W@3V_g&w&-tSxM{nmO}^O)bvo;fpf=FIGw zb7r%~zKdx@igmcyVI3(pHGxMrW`+T@#z`Vw+fl*lz>ZlfzWbnFbnI z%RmE77YmxhZM==6OKLejd2&P%8O=k3DWDor=SR80RJuEKN z5DI0$nYs{!lTV}8aRPk#zhbh2^D^;u{4Fno#Clu?8v>@rg^EYbWk>m|xsuD5&nZaFnFEZ!hWAxzHHN<@B3yg_#%-%8m> z(zju&(v3>9#a^<~R)9_`hu2xQbU!m;11857I$}*@5RRN0VE}a$6f|ggSOf%%Bev0@ z0iwtj+U#2#Ml)w?K{%xm2-6HCmkf_=!zRHn{}+f=ZNib)_zZ=Uj^J-u5zG-fDYv|p z)KW8A$+g2eSdZLFMDd(2@i%ib=51^xL<3lQp0b6td{nf!Ya1k<+lD}qLPTmSTzH7= zR^j0hv{*UV3KxmE1b|)%YZVGT+6p#74B;?bhZ|rO6fRD-njQ*EaL{H0gTZgET&noG0brw}X&F znJi`j{KA#wH1)_X9A~w^AhPrr2FoGig&i$oQtaWG`3GJp9k$!QN=T@91pjiC`wxgPJ*f44pxZvVQ@Q6+RI5F6bw{@V#Ndd$l&-m z*!6&wi~%-D9^2D8PcGh`*<+tx(gv2pk+Jgm4~vKn4-145GbT80YD}cq09P*i8lSGx zB`^ztcv$2lk?8>Q;37F7!&AG#0oA}=5LWXHhk_jWd#eWh+0XH}`XN|^w1Aa&xH#cJ zk5h>Q4!su~Vgja%atF@$2IP@>9>!Nu0ltE(m^Od5e75gH4qCX_>b9~7VIea_R$G{c zVqyYdNuBS2!^hILP&XJa(%Z(0O>J?VmeU6Mv&e6&6WOgHuS{6F>qJH;$SP9YYa1`B z+QMBe$4BhiZ+Mwo<@kH89I6Tf0~BzHBb4AK)KqV3(bu&?--3+TFV@1+R6mM z;@LP@XBu&^4uGXy94I%(9b;#J4jCa%gFxa_OQ_p<@MWDq(R>hv*4YLL^s+AwM7L)Y;c5!SS)aYORv#E%_;`LPZd1lB8hfnQkgdgGxptv9NjX}$5>8OxmLf*oyv3qFG&tiuNZ25juZ z70#sVrnpd7f_+lx3Sv9RmR-dATXg~V0bp2wXW*)f>2bIX0>xQSX&sDx)1b_IT<~!b z_g!EDPIQGaX1N@OtMNAnexX;%;qZIcSkjw+0HOTvG|=!Vlko~T;2w6ByKqIWI#DjZLJObbov3(%odnlBFyT%K7K__Y37&yF6{+oE zw1P-z|G)6Jv>NXMG)F*mtk}{XmM!Snu88je@wCU77j)8t?J*03+!Te8C0LY0Y!$>p z`(rlx&>0hBK=BdFA-TBG9tFko_S1r6@KI0ffVT-p%knIpCOlGX>;UZ%Bff0^3H1LC zxQ#5ffJ`;W=!CHy{A9OBAH0~+1>wvZE6#KX3xa1-TkE088m+`^0fB8AUjW}p_%?mUM*6Y{hzK zZ^!uo7maH=(#XEPqf{VZTI>kp!e*4*f|AKOCZ4h^OlAsLGSU=+LEtydPUP}iv zMzGlC4l@VnZtl1|=WFkSMAgSJ$8?z}V-F_H*$s*GG!0yF$6I&Ho!&~^bEj7lRgf-a zA65g@u_sW12(i2qQ~?Xz5EhIbgT?udq_BwJJHjqC?1o2$h{}%P;!F2v+)hn*j|q+r zM^)tq_gHbrJq|{F%KHb%Xvb@fMUS}F0hGGcZc{)4S6E`Zn_T9LLO0l(@PIC`MmA(7{?@>2GHAWk*r-y= z64yO&g9v6T=$CguI-4Yx!Mp=o^I~UQI8TY z?+nlXK(#ahlw~*(0K}O-5>2dEg*bqus8wPRi)rUzGxw=*X6$7?as81av$RI zo?t@+2Ez_MR_%|@|3n#>;|cZJi*?D_fxm^@polt{>BJUK?9|&mu{ZDWged@bM>0A` zO@aOO&M^UEp=Vq;=#{WV4kH2NQXtj#T=`qL6?0*Q{V`-gTY=9!agPNG2`>m{cY%Ah z2DO2L4AcW)$iW5VhAzA(o&)h^`>;sK1=z^AA@y^YY28I}7on4?{`@Yu9sX07sW`-( z1@Yo7sDYJk#NR~l!>kHJCM->2LG{4_A}|j266B=(SC_vFebEKfEi+N63C{5nEesK% zF#HAwf&#}YFi^(D^oe4%Hc%|F2ogWl4;Gi2g^1s6u+dVQhl=$r!^G~^us{53TNoCm z}lQcZ!jKl~=wtUsI(?guj_kaNm55ZBjkkpwZVf{)HObpmdASLT$O$sISn|zlm1a z^>Q^?7R6elCQp;6?O&;>(x&QaJkkKGG^v`B`bAp5@>k+gv?*Gnu3SIF*Q-*KsjF#_ zu1(Y%wSInCx*e8oC7L9y*My)TYwJX<-r8DkDgW3&p-g`q9n*D=j{4C?O``UiHd$8) z)y&cBtKbHtVO^|JwEm9P_VCB1ebMMODND)StM%mH7VMPdbTNE1&z}zljlZFso8NT<)QH(`S11oC#cNuBSL(UPe zVRrkCcr$bOP2&B`nYW35W=^^O*PvbHQ`shM+2Ad8+DbWOaX3m*Ge3sefGveFK>C7*fqZdElKa2QX=3B6tg7pbtPFz47&D?z?5TdqTZx-67jGlBXZHA!xGS?a^I+y7%;TBIF-J3p zGS6X-V@_l4{}biE2^rM1oo9&mGT*pOe1Ulge6xi0twe?ieDytIi#Ehpm|HVD->3N3 znZ1~YDO^eM8~;0Vt&Y6$^4wTnz@l9l}{8>`Zmm#%$=C6nFlc2GLK|- zWS+?E#vH@!#XO(6H}eW+Z|2R+LzoXT`!Sa=k7F)ZxQNPM$?VUpaiaQ#GFvl8Gq+=o zXYS2xWcFoFVh&_ZVUA}`V@_4Ln92icwP>udhF_X*TSykdek!pmvvDRp&-kD7G}Z{= z%IwXYF`43rFqcfF`DFz2j!BfCKeJB?aXfP(kN5MKv!_yi-!PAkC(dHFW%*sqS)(bx z!_4|Py8dbAYW(IC{P&rI5{aKPd%Q;sYK5#{&?w?&%%vg3F3izJ;y%pYV~Gbc7ko`T zl(~2Y@mS`#>BND|HQYW?%s%*?DwORD<~+V13z>~!6u*o)IhuGS^8~&gycVYWl}7Pf z6#kZY7jt3}@nPodlfV=Et$V&_Ps*oUBjGwm3S+& z<8Q?KneAEr1hX~sMdnPFzs2m$?NP<-dyVoFu(^Tvf5;7DD`rbhZ^LZEY|mUVirUkI zx#$+9@6CJ*1~SN23}Mb@{*c+o^1;kjuGIhLFvm@${8unrKBD|!mq?b^{t0m@vp#~- z-(jxe{{Eaf?<~o`3SS^#ebYt}+cEomMf@6b5|7UVnDw(MeiU(ljp z(n;Qdxq1QZq>1rgF&Dr$NXXgDp)l|w zA7oCSMqJE10VV>Bzsj7FK>P=@w~@G^CDo^>0kww%^R;;t-;H_PL1J&_9T~)l6>)L(2P^2@?mV-_IPhg1Cg)dLr?8WoXZco?%Ir~i;S zhxH=^^8_yc6z0@8YX6zcHqpdOn3F(p!SbauC*LMs$DG0OJDA;gzvU!zb_L19r*N|V z`S-ZJmVpId3p=7;`4?H^ws8 z450WgnRA$zGKVr}Fnhc~@|&3BVc~(-+s9ncmG~HQ{+q;Sn5%jbUuX7!e=+?d=1d-+ zs+lvIQ~Wb#dtP5yHKO*o7ESrJWDa6>W)5ZU#+)BZ@^3IF@_yk^=HfSLyc^H#>P;NZ z>^6xwp4pq@7cy7#{^CEFi%(Jczh$m)BHqAU1@{^2pUYg%_20uB#QOVT=7dR9{$gey z=JU*M%vYJym@An5ng3+AW!5yN_RI*Q`q?nMGP^N*G52G3V;;eLE0oe3m~A;enz=jk z9OkkJs{dEaam*RaemowpWey+C?Zs@FK%CF)#eAIEXC%d!Fz3HZ{2Q}%58`{wLp+I} zFeh~*ZfH&IoSQ)MJDA5YA7M`WjN;3ftC+7d`>}i_vwsPd=dlvcESgaJ#4|T! zHZ~>smdqZ_h+UY44Y3zp@i69by#F$e+0~iS2QsJd`Xz$dpLqte9yU7g zc}rx@`-pf6b1BEKU@rQQ;@2^c3nSj9$WJCdz--O){R!smi&VZc=9E(6JIq$hkC@BD zDZdv=dVW4%g?7aGP|x|dV4lF^n-jC^6iVNPxs>x8z+A@Vd51ac0+nYh^DVw!0J9I5 zFNV3A_gC<~VtLXzeKK>#CCYC(bIz~CSC$BYwo3@D8zneum|n!17I)%Z5?B9kU0^cVu=QPVv2&hw;J8MRSO!Gxz_T(l2G!8|Zqgn7t+t=P(z3K)jE+fXBlk=3M3r%tKiIcjg^U zDE*(zKGwuqcHDGJWj>IDvnU`XDXhf;zcT6s^aA;UajJdD&DH%Jt{t|;u9)9tKxeq*0rpA zzwA`(sp0`D9--oiDvnq2Too@-@iG;!P;sV;e^Bu@74KH@K@}fW@fj6gQ1LYtSE%?8 z71yX(Z(Fy$8>+a4iXBwkUd5g&?x|vL6%SGI7!`l4;t&-_s(6};zfkcU75@q&*(Gq7 z!Igu<_d7Sh-2`_V9Bk`}JK!q7-350K+J zEj|SY+j|1GJjHWxFTml9g?3rA;B??%J62eLs|T(=I7@I1z%>N-3OIOOBwhvA2pqiX z5!T?EfNKg4K2;Gm;F^PL0S;a@30rWjz_kWv2M*smwE^b<4qi10M{rKyoWZ$(gY9zB z4jjC85*@&~f$Ip)9b6}H_@1gWI8Sh0z+`XwLx-W|L6{ z#e*gtz)uz$6pz7V)WH;jV$hgo<{1FZ?K2qoxVg!`f)W5D%!_7zWF-6_O_!y!b$H#{rjWd{s$?y8j1Gs)l8m@*3sgw$GiA-2G zmaCw|Duy5MYVxR*V!ldYI&fu*rgK*puNAT9DJ>F`^7jER8fSdl`%c{m;mAengj z7mkP_o7*HnhAu6QIgp1v9O>B$w0Dh zpaj84PCbPRhfk0+2%y9(0d)%}do9~sP$bR5RKjSJL6M3y*-dyU1kcNporagAGHaoA^5Q zh$S-(CNYV1+YX*E#pr`c%xor+_SewHo5|t=&c0}JflM0Uu}D1BRZB1r0hwDp0PAj$ zNLo%nFWyFwh*fN`flt~`z#umKruf+O0u43LQ50hdhEOvL0d$hDP7t2lgV7o62C&5e z0@)8`Fm^g9xwM~Pijzm^Om-9~SehuP^~#Eo-2}5hYIB(}%BymgL3KrDP8wlv5gY@Xb>`ej)r0Q{u zJavU)CUXV|e`nAD!&T?;G04oQ0XzjN)f@u2u;}|2iZ4WiR!JozKPs*4GwH3hO!_CW zVyb|}SxKchb2(O3A;Nr)P>^N;B(hq7xk2@~9SLfivX-dlvV9eu}4>zWh5 z5Ho`Uh$c;+{AybUDDuzk4L~fM*r!wd^4YA*m^m6CFc*{Bh!m?$fDf}YH$Z}jbl$X< zp)oicj72j9wQ+T>LN)~`QYtd?S|oyJlMQu_?19M)xbxvS+Nj!2qBI>qG17cMt(OfB zPypE!FzeJx_ckbY1x#@Uwl5$9*m{8Uo3t8fKtKku4FS;APyvg8!`*m-5e)?pps|2j zMGmz%Sz+jsp)lQnb|QUn{F*(eZpa`w{ZAfg8d3(uqKyDpBgkX**z=Szf`eppC`zb# z7%QUYL9C3L2g!SF9w6JD1L)?k4FKw~bn;)_d+{_anE5n6R!Q9%7jtO4Q`$ttqJs@o z?g;W9Wn5rjqnl`bf=2<0z%?t43dCV(j8jUiqVPq*V9VjgUD9FeE z6=Wj-j5Jt8e`4UH^tC7W4Yh%MlpjN;1V>;s@yx!0utQ*ub%a&t_c4h)q>mmxrVs5% z^}>I!o0v|g8emk4gmtq#iBCYM@yV||aOO%inDHcgKXU2@f9(-`L#*lCwL#iyHDHsG z4`wO!gANmnQ@!Gq{e?oIRwfDAzv1e#uYd(y6lah}j0wqFo8qVA_mW_7!bjZ+VR?$_ zN!KC2>2$h`k-Zc}*bFav@xZz~YcC~`=*Yc9E7L0|Sw~8ThX}2`xkDG&{~7%2{=}I5cBk9R7>>CC+pZ9nY;BYEgEO zT9h55jyhCV2a<%fnV$Ynu=)L8^VjBPvHxrS8mGMfB=gs}X~hP%$vbf>6p!>Uwuw#} zAIuj9GM++9%OEfW&$a|nON{_k4@Nv%Oh@7TVzy`o;}uiTsJx6Nkjv4@6WRDUc;xzp z)+w+_BezVUDAG!KU4)rH#=@{SEeZ@bF$IIocGlKW!7%W=Fd6hXsY5BuS5gpH79lVl zqrwi!6=|H=A}5)x0HkukiEv_s8QHWGBWDTT?wS+>CRNG$rLs>F5*7oCeK4UXtxqYT zD1*%;n+>))r2SXcBFyu`tum;xvYUoGfifvBIO+z=O*IalgnJ=!-md$$05_bW9I!

T4i0F{o0?+Xe$(8hQ;{4-AE61h37J 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 == fixed && z->offset_ns == offset_ns && + strcmp(z->id ? z->id : "", id ? id : "") == 0) { + return z; + } + } + if (_el_zone_count >= EL_ZONE_TABLE_CAP) { + /* Out of slots: build a non-interned zone. Equality will fail across + * such zones but the program still runs. */ + el_zone_t* z = (el_zone_t*)malloc(sizeof(el_zone_t)); + z->magic = EL_ZONE_MAGIC; + z->id = el_strdup_persist(id ? id : ""); + z->fixed = fixed; + z->offset_ns = offset_ns; + return z; + } + el_zone_t* z = (el_zone_t*)malloc(sizeof(el_zone_t)); + z->magic = EL_ZONE_MAGIC; + z->id = el_strdup_persist(id ? id : ""); + z->fixed = fixed; + z->offset_ns = offset_ns; + _el_zone_table[_el_zone_count++] = z; + return z; +} + +el_val_t zone(el_val_t id) { + const char* s = EL_CSTR(id); + if (!s || !*s) return (el_val_t)(uintptr_t)_el_zone_intern("UTC", 0, 0); + /* Fixed-offset shortcut: "+HH:MM" or "-HH:MM". */ + if ((s[0] == '+' || s[0] == '-') && strlen(s) >= 6 && s[3] == ':') { + int sign = (s[0] == '-') ? -1 : 1; + int hh = (s[1] - '0') * 10 + (s[2] - '0'); + int mm = (s[4] - '0') * 10 + (s[5] - '0'); + int64_t off = (int64_t)sign * ((int64_t)hh * 3600LL + (int64_t)mm * 60LL) * 1000000000LL; + return (el_val_t)(uintptr_t)_el_zone_intern(s, 1, off); + } + return (el_val_t)(uintptr_t)_el_zone_intern(s, 0, 0); +} + +el_val_t zone_utc(void) { + return (el_val_t)(uintptr_t)_el_zone_intern("UTC", 1, 0); +} + +el_val_t zone_local(void) { + /* Resolve the local zone via TZ env or system default. tzset() picks + * up TZ if set; otherwise the C library reads /etc/localtime. We store + * the zone id as "LOCAL" so subsequent equality holds; resolution is + * lazy at use time. */ + return (el_val_t)(uintptr_t)_el_zone_intern("LOCAL", 0, 0); +} + +el_val_t zone_offset(el_val_t hours, el_val_t minutes) { + int hh = (int)(int64_t)hours; + int mm = (int)(int64_t)minutes; + int sign = (hh < 0 || mm < 0) ? -1 : 1; + if (hh < 0) hh = -hh; + if (mm < 0) mm = -mm; + int64_t off = (int64_t)sign * ((int64_t)hh * 3600LL + (int64_t)mm * 60LL) * 1000000000LL; + char buf[16]; + snprintf(buf, sizeof(buf), "%c%02d:%02d", sign < 0 ? '-' : '+', hh, mm); + return (el_val_t)(uintptr_t)_el_zone_intern(buf, 1, off); +} + +/* ── Calendar interning ──────────────────────────────────────────────────── */ + +#define EL_CAL_TABLE_CAP 64 +static el_calendar_t* _el_cal_table[EL_CAL_TABLE_CAP]; +static int _el_cal_count = 0; + +static el_calendar_t* _el_cal_intern(el_calendar_kind_t kind, el_zone_t* z, + int64_t period_ns, int64_t epoch_ns) { + for (int i = 0; i < _el_cal_count; i++) { + el_calendar_t* c = _el_cal_table[i]; + if (c->kind == kind && c->zone == z && + c->cycle_period_ns == period_ns && c->epoch_ns == epoch_ns) { + return c; + } + } + el_calendar_t* c = (el_calendar_t*)malloc(sizeof(el_calendar_t)); + c->magic = EL_CAL_MAGIC; + c->kind = kind; + c->zone = z; + c->cycle_period_ns = period_ns; + c->epoch_ns = epoch_ns; + if (_el_cal_count < EL_CAL_TABLE_CAP) _el_cal_table[_el_cal_count++] = c; + return c; +} + +el_val_t earth_calendar(el_val_t z_val) { + el_zone_t* z = NULL; + if (z_val != 0 && el_is_magic(z_val, EL_ZONE_MAGIC)) { + z = (el_zone_t*)(uintptr_t)z_val; + } else { + z = (el_zone_t*)(uintptr_t)zone_local(); + } + return (el_val_t)(uintptr_t)_el_cal_intern(EL_CALENDAR_EARTH, z, EL_EARTH_DAY_NS, 0); +} + +el_val_t earth_calendar_default(void) { + return earth_calendar(zone_local()); +} + +el_val_t mars_calendar(void) { + el_zone_t* z = (el_zone_t*)(uintptr_t)_el_zone_intern("MTC", 1, 0); + return (el_val_t)(uintptr_t)_el_cal_intern(EL_CALENDAR_MARS, z, EL_MARS_SOL_NS, 0); +} + +el_val_t cycle_calendar(el_val_t period_dur) { + int64_t period = (int64_t)period_dur; + if (period <= 0) period = 1; + return (el_val_t)(uintptr_t)_el_cal_intern(EL_CALENDAR_CYCLE, NULL, period, 0); +} + +el_val_t no_cycle_calendar(void) { + return (el_val_t)(uintptr_t)_el_cal_intern(EL_CALENDAR_NO_CYCLE, NULL, 0, 0); +} + +el_val_t relative_calendar(el_val_t epoch_inst) { + int64_t ep = (int64_t)epoch_inst; + return (el_val_t)(uintptr_t)_el_cal_intern(EL_CALENDAR_RELATIVE, NULL, 0, ep); +} + +/* ── CalendarTime ───────────────────────────────────────────────────────── */ + +static el_caltime_t* _el_caltime_alloc(int64_t inst, el_calendar_t* c) { + el_caltime_t* ct = (el_caltime_t*)malloc(sizeof(el_caltime_t)); + ct->magic = EL_CALTIME_MAGIC; + ct->instant_ns = inst; + ct->cal = c; + return ct; +} + +static el_calendar_t* _el_resolve_cal(el_val_t cal_val) { + if (cal_val == 0 || !el_is_magic(cal_val, EL_CAL_MAGIC)) { + return (el_calendar_t*)(uintptr_t)earth_calendar_default(); + } + return (el_calendar_t*)(uintptr_t)cal_val; +} + +el_val_t now_in(el_val_t cal_val) { + el_calendar_t* c = _el_resolve_cal(cal_val); + int64_t ns = (int64_t)el_now_instant(); + return (el_val_t)(uintptr_t)_el_caltime_alloc(ns, c); +} + +el_val_t in_calendar(el_val_t inst, el_val_t cal_val) { + el_calendar_t* c = _el_resolve_cal(cal_val); + return (el_val_t)(uintptr_t)_el_caltime_alloc((int64_t)inst, c); +} + +el_val_t cal_to_instant(el_val_t ct_val) { + if (!el_is_magic(ct_val, EL_CALTIME_MAGIC)) return (el_val_t)0; + el_caltime_t* ct = (el_caltime_t*)(uintptr_t)ct_val; + return (el_val_t)ct->instant_ns; +} + +el_val_t cal_in(el_val_t ct_val, el_val_t cal_val) { + if (!el_is_magic(ct_val, EL_CALTIME_MAGIC)) return (el_val_t)0; + el_caltime_t* ct = (el_caltime_t*)(uintptr_t)ct_val; + el_calendar_t* c = _el_resolve_cal(cal_val); + return (el_val_t)(uintptr_t)_el_caltime_alloc(ct->instant_ns, c); +} + +el_val_t cal_cycle_phase(el_val_t ct_val) { + if (!el_is_magic(ct_val, EL_CALTIME_MAGIC)) return el_from_float(0.0); + el_caltime_t* ct = (el_caltime_t*)(uintptr_t)ct_val; + el_calendar_t* c = ct->cal; + if (c->kind == EL_CALENDAR_NO_CYCLE) { + return el_from_float(0.0/0.0); /* NaN sentinel */ + } + int64_t period = c->cycle_period_ns; + if (period <= 0) return el_from_float(0.0); + int64_t base = ct->instant_ns - c->epoch_ns; + int64_t phase_ns = base % period; + if (phase_ns < 0) phase_ns += period; + double phase = (double)phase_ns / (double)period; + return el_from_float(phase); +} + +/* ── Earth zone resolution: TZ-based offset lookup ────────────────────────── + * For an EarthCalendar(zone), we want to convert an instant_ns into local + * y/m/d/h/m/s, including DST. Approach: setenv("TZ", id), tzset(), use + * localtime_r, then restore. This is not thread-safe by design — El's + * runtime is single-threaded for the request handler path. Cache the + * computed (instant -> tm) to avoid the syscall churn on repeat formats. */ + +static void _el_apply_zone(el_zone_t* z) { + if (!z) { unsetenv("TZ"); tzset(); return; } + if (z->fixed && strcmp(z->id, "UTC") == 0) { + setenv("TZ", "UTC0", 1); + tzset(); + return; + } + if (z->fixed) { + /* Fixed offset: POSIX TZ uses inverted sign (sign convention of + * "hours WEST of UTC" rather than east). Build the spec accordingly. */ + char buf[32]; + int neg_secs = (int)(-z->offset_ns / 1000000000LL); + int sign = neg_secs < 0 ? -1 : 1; + int abs_secs = neg_secs < 0 ? -neg_secs : neg_secs; + int hh = abs_secs / 3600; + int mm = (abs_secs % 3600) / 60; + snprintf(buf, sizeof(buf), "FIX%c%d:%02d", sign < 0 ? '-' : '+', hh, mm); + setenv("TZ", buf, 1); + tzset(); + return; + } + if (strcmp(z->id, "LOCAL") == 0) { + unsetenv("TZ"); + tzset(); + return; + } + setenv("TZ", z->id, 1); + tzset(); +} + +static int _el_decompose_earth(el_caltime_t* ct, struct tm* tm_out, int* abbr_len, char* abbr_buf, size_t abbr_cap) { + el_calendar_t* c = ct->cal; + el_zone_t* z = c->zone; + _el_apply_zone(z); + time_t s = (time_t)(ct->instant_ns / 1000000000LL); + struct tm tm; + localtime_r(&s, &tm); + *tm_out = tm; + if (abbr_buf && abbr_cap > 0) { + const char* z_str = tm.tm_zone ? tm.tm_zone : ""; + size_t n = strlen(z_str); + if (n >= abbr_cap) n = abbr_cap - 1; + memcpy(abbr_buf, z_str, n); + abbr_buf[n] = '\0'; + if (abbr_len) *abbr_len = (int)n; + } + return 0; +} + +/* Format an Earth CalendarTime under a Java-DateTimeFormatter-ish pattern. + * We support a useful core: yyyy MM dd HH mm ss z EEE MMM d h a — enough for + * the acceptance tests. Single quotes denote literal text. */ +static const char* _el_weekday_short[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; +static const char* _el_month_short[] = {"Jan","Feb","Mar","Apr","May","Jun", + "Jul","Aug","Sep","Oct","Nov","Dec"}; + +static char* _el_format_earth(el_caltime_t* ct, const char* pattern) { + struct tm tm; + char abbr[16] = {0}; + int abbr_len = 0; + _el_decompose_earth(ct, &tm, &abbr_len, abbr, sizeof(abbr)); + size_t cap = strlen(pattern) * 4 + 64; + char* out = (char*)malloc(cap); + size_t pos = 0; + size_t i = 0; + size_t plen = strlen(pattern); + while (i < plen) { + char ch = pattern[i]; + /* Quoted literal */ + if (ch == '\'') { + i++; + while (i < plen && pattern[i] != '\'') { + if (pos + 1 >= cap) { cap *= 2; out = realloc(out, cap); } + out[pos++] = pattern[i++]; + } + if (i < plen) i++; + continue; + } + /* Count run of same letter */ + size_t run = 1; + while (i + run < plen && pattern[i + run] == ch) run++; + char tmp[64]; + tmp[0] = '\0'; + if (ch == 'y') { + if (run >= 4) snprintf(tmp, sizeof(tmp), "%04d", tm.tm_year + 1900); + else snprintf(tmp, sizeof(tmp), "%02d", (tm.tm_year + 1900) % 100); + } else if (ch == 'M') { + if (run >= 3) snprintf(tmp, sizeof(tmp), "%s", _el_month_short[tm.tm_mon]); + else if (run == 2) snprintf(tmp, sizeof(tmp), "%02d", tm.tm_mon + 1); + else snprintf(tmp, sizeof(tmp), "%d", tm.tm_mon + 1); + } else if (ch == 'd') { + if (run >= 2) snprintf(tmp, sizeof(tmp), "%02d", tm.tm_mday); + else snprintf(tmp, sizeof(tmp), "%d", tm.tm_mday); + } else if (ch == 'H') { + if (run >= 2) snprintf(tmp, sizeof(tmp), "%02d", tm.tm_hour); + else snprintf(tmp, sizeof(tmp), "%d", tm.tm_hour); + } else if (ch == 'h') { + int h12 = tm.tm_hour % 12; if (h12 == 0) h12 = 12; + if (run >= 2) snprintf(tmp, sizeof(tmp), "%02d", h12); + else snprintf(tmp, sizeof(tmp), "%d", h12); + } else if (ch == 'm') { + if (run >= 2) snprintf(tmp, sizeof(tmp), "%02d", tm.tm_min); + else snprintf(tmp, sizeof(tmp), "%d", tm.tm_min); + } else if (ch == 's') { + if (run >= 2) snprintf(tmp, sizeof(tmp), "%02d", tm.tm_sec); + else snprintf(tmp, sizeof(tmp), "%d", tm.tm_sec); + } else if (ch == 'a') { + snprintf(tmp, sizeof(tmp), "%s", tm.tm_hour < 12 ? "AM" : "PM"); + } else if (ch == 'E') { + snprintf(tmp, sizeof(tmp), "%s", _el_weekday_short[tm.tm_wday]); + } else if (ch == 'z') { + snprintf(tmp, sizeof(tmp), "%s", abbr); + } else { + for (size_t k = 0; k < run; k++) { + if (pos + 1 >= cap) { cap *= 2; out = realloc(out, cap); } + out[pos++] = ch; + } + i += run; + continue; + } + size_t tl = strlen(tmp); + if (pos + tl + 1 >= cap) { cap = (cap + tl) * 2; out = realloc(out, cap); } + memcpy(out + pos, tmp, tl); + pos += tl; + i += run; + } + out[pos] = '\0'; + char* result = el_strdup(out); + free(out); + return result; +} + +/* Format a Mars CalendarTime: %sol prints the integer sol number since + * mission epoch (Unix epoch fallback), %phase prints cycle_phase as a + * 0..1 decimal. Other %-specifiers fall through. */ +static char* _el_format_mars(el_caltime_t* ct, const char* pattern) { + el_calendar_t* c = ct->cal; + int64_t period = c->cycle_period_ns > 0 ? c->cycle_period_ns : EL_MARS_SOL_NS; + int64_t base = ct->instant_ns - c->epoch_ns; + int64_t sol = base / period; + int64_t phase_ns = base % period; + if (phase_ns < 0) { phase_ns += period; sol -= 1; } + double phase = (double)phase_ns / (double)period; + size_t cap = strlen(pattern) * 4 + 64; + char* out = (char*)malloc(cap); + size_t pos = 0; + for (size_t i = 0; pattern[i]; i++) { + if (pattern[i] == '%' && pattern[i+1]) { + char tmp[64]; + tmp[0] = '\0'; + if (strncmp(pattern + i + 1, "sol", 3) == 0) { + snprintf(tmp, sizeof(tmp), "%lld", (long long)sol); + i += 3; + } else if (strncmp(pattern + i + 1, "phase", 5) == 0) { + snprintf(tmp, sizeof(tmp), "%.4f", phase); + i += 5; + } else if (pattern[i+1] == 'd') { + snprintf(tmp, sizeof(tmp), "%lld", (long long)sol); + i += 1; + } else { + tmp[0] = pattern[i+1]; tmp[1] = '\0'; + i += 1; + } + size_t tl = strlen(tmp); + if (pos + tl + 1 >= cap) { cap = (cap + tl) * 2; out = realloc(out, cap); } + memcpy(out + pos, tmp, tl); + pos += tl; + } else { + if (pos + 1 >= cap) { cap *= 2; out = realloc(out, cap); } + out[pos++] = pattern[i]; + } + } + out[pos] = '\0'; + char* result = el_strdup(out); + free(out); + return result; +} + +/* Format a CycleCalendar CalendarTime: %cycle and %phase. */ +static char* _el_format_cycle(el_caltime_t* ct, const char* pattern) { + el_calendar_t* c = ct->cal; + int64_t period = c->cycle_period_ns > 0 ? c->cycle_period_ns : 1; + int64_t base = ct->instant_ns - c->epoch_ns; + int64_t cycle = base / period; + int64_t phase_ns = base % period; + if (phase_ns < 0) { phase_ns += period; cycle -= 1; } + double phase = (double)phase_ns / (double)period; + size_t cap = strlen(pattern) * 4 + 64; + char* out = (char*)malloc(cap); + size_t pos = 0; + for (size_t i = 0; pattern[i]; i++) { + if (pattern[i] == '%' && pattern[i+1]) { + char tmp[64]; + tmp[0] = '\0'; + if (strncmp(pattern + i + 1, "cycle", 5) == 0) { + snprintf(tmp, sizeof(tmp), "%lld", (long long)cycle); + i += 5; + } else if (strncmp(pattern + i + 1, "phase", 5) == 0) { + snprintf(tmp, sizeof(tmp), "%.4f", phase); + i += 5; + } else if (pattern[i+1] == 'd') { + snprintf(tmp, sizeof(tmp), "%lld", (long long)cycle); + i += 1; + } else if (pattern[i+1] == 'f') { + snprintf(tmp, sizeof(tmp), "%.2f", phase); + i += 1; + } else { + /* Pass through unknown specifier */ + tmp[0] = '%'; tmp[1] = pattern[i+1]; tmp[2] = '\0'; + i += 1; + } + size_t tl = strlen(tmp); + if (pos + tl + 1 >= cap) { cap = (cap + tl) * 2; out = realloc(out, cap); } + memcpy(out + pos, tmp, tl); + pos += tl; + } else { + if (pos + 1 >= cap) { cap *= 2; out = realloc(out, cap); } + out[pos++] = pattern[i]; + } + } + out[pos] = '\0'; + char* result = el_strdup(out); + free(out); + return result; +} + +el_val_t cal_format(el_val_t ct_val, el_val_t pattern_val) { + if (!el_is_magic(ct_val, EL_CALTIME_MAGIC)) return el_wrap_str(el_strdup("")); + el_caltime_t* ct = (el_caltime_t*)(uintptr_t)ct_val; + const char* pat = EL_CSTR(pattern_val); + if (!pat) pat = ""; + char* result = NULL; + switch (ct->cal->kind) { + case EL_CALENDAR_EARTH: result = _el_format_earth(ct, pat); break; + case EL_CALENDAR_MARS: result = _el_format_mars(ct, pat); break; + case EL_CALENDAR_CYCLE: result = _el_format_cycle(ct, pat); break; + case EL_CALENDAR_RELATIVE: result = _el_format_cycle(ct, pat); break; + case EL_CALENDAR_NO_CYCLE: { + char buf[64]; + snprintf(buf, sizeof(buf), "instant:%lld", (long long)ct->instant_ns); + result = el_strdup(buf); + break; + } + default: result = el_strdup(""); + } + return el_wrap_str(result); +} + +/* ── LocalDate / LocalTime / LocalDateTime ──────────────────────────────── */ + +static int _el_days_in_month(int y, int m) { + static const int dim[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; + if (m == 2) { + int leap = ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0); + return 28 + (leap ? 1 : 0); + } + if (m < 1 || m > 12) return 30; + return dim[m - 1]; +} + +el_val_t local_date(el_val_t y, el_val_t m, el_val_t d) { + el_localdate_t* ld = (el_localdate_t*)malloc(sizeof(el_localdate_t)); + ld->magic = EL_LDATE_MAGIC; + ld->year = (int)(int64_t)y; + ld->month = (int)(int64_t)m; + ld->day = (int)(int64_t)d; + return (el_val_t)(uintptr_t)ld; +} + +el_val_t local_time(el_val_t h, el_val_t m, el_val_t s, el_val_t ns) { + int64_t hh = (int64_t)h; + int64_t mm = (int64_t)m; + int64_t ss = (int64_t)s; + int64_t nn = (int64_t)ns; + int64_t total = hh * 3600000000000LL + mm * 60000000000LL + ss * 1000000000LL + nn; + return (el_val_t)total; +} + +el_val_t local_datetime(el_val_t date_val, el_val_t time_val) { + if (!el_is_magic(date_val, EL_LDATE_MAGIC)) return (el_val_t)0; + el_localdt_t* ldt = (el_localdt_t*)malloc(sizeof(el_localdt_t)); + ldt->magic = EL_LDT_MAGIC; + ldt->date = (el_localdate_t*)(uintptr_t)date_val; + ldt->time_ns = (int64_t)time_val; + return (el_val_t)(uintptr_t)ldt; +} + +el_val_t zoned(el_val_t date_val, el_val_t time_val, el_val_t cal_val) { + if (!el_is_magic(date_val, EL_LDATE_MAGIC)) return (el_val_t)0; + el_localdate_t* ld = (el_localdate_t*)(uintptr_t)date_val; + el_calendar_t* c = _el_resolve_cal(cal_val); + int64_t time_ns = (int64_t)time_val; + /* Convert (LocalDate, LocalTime, EarthCalendar) -> Instant. + * For non-Earth calendars we use day-anchored conversion: treat the + * LocalDate's (y,m,d) as a Gregorian projection, convert to seconds via + * mktime under the calendar's zone, then add nanos-since-midnight. */ + if (c->kind == EL_CALENDAR_EARTH) { + _el_apply_zone(c->zone); + struct tm tm; memset(&tm, 0, sizeof(tm)); + tm.tm_year = ld->year - 1900; + tm.tm_mon = ld->month - 1; + tm.tm_mday = ld->day; + tm.tm_hour = (int)(time_ns / 3600000000000LL); + tm.tm_min = (int)((time_ns / 60000000000LL) % 60); + tm.tm_sec = (int)((time_ns / 1000000000LL) % 60); + tm.tm_isdst = -1; + time_t t = mktime(&tm); + if (t == (time_t)-1) return (el_val_t)0; + int64_t ns = (int64_t)t * 1000000000LL + (time_ns % 1000000000LL); + return (el_val_t)(uintptr_t)_el_caltime_alloc(ns, c); + } + /* Non-Earth fallback: project as if Earth UTC then attach calendar. */ + struct tm tm; memset(&tm, 0, sizeof(tm)); + tm.tm_year = ld->year - 1900; + tm.tm_mon = ld->month - 1; + tm.tm_mday = ld->day; + tm.tm_hour = (int)(time_ns / 3600000000000LL); + tm.tm_min = (int)((time_ns / 60000000000LL) % 60); + tm.tm_sec = (int)((time_ns / 1000000000LL) % 60); + time_t t = timegm(&tm); + if (t == (time_t)-1) return (el_val_t)0; + int64_t ns = (int64_t)t * 1000000000LL + (time_ns % 1000000000LL); + return (el_val_t)(uintptr_t)_el_caltime_alloc(ns, c); +} + +el_val_t local_date_year(el_val_t v) { + if (!el_is_magic(v, EL_LDATE_MAGIC)) return (el_val_t)0; + return (el_val_t)((el_localdate_t*)(uintptr_t)v)->year; +} +el_val_t local_date_month(el_val_t v) { + if (!el_is_magic(v, EL_LDATE_MAGIC)) return (el_val_t)0; + return (el_val_t)((el_localdate_t*)(uintptr_t)v)->month; +} +el_val_t local_date_day(el_val_t v) { + if (!el_is_magic(v, EL_LDATE_MAGIC)) return (el_val_t)0; + return (el_val_t)((el_localdate_t*)(uintptr_t)v)->day; +} +el_val_t local_time_hour(el_val_t v) { + int64_t t = (int64_t)v; + return (el_val_t)(t / 3600000000000LL); +} +el_val_t local_time_minute(el_val_t v) { + int64_t t = (int64_t)v; + return (el_val_t)((t / 60000000000LL) % 60); +} +el_val_t local_time_second(el_val_t v) { + int64_t t = (int64_t)v; + return (el_val_t)((t / 1000000000LL) % 60); +} +el_val_t local_time_nanos(el_val_t v) { + int64_t t = (int64_t)v; + return (el_val_t)(t % 1000000000LL); +} + +el_val_t el_local_date_add_dur(el_val_t ld_val, el_val_t dur_val) { + if (!el_is_magic(ld_val, EL_LDATE_MAGIC)) return ld_val; + el_localdate_t* ld = (el_localdate_t*)(uintptr_t)ld_val; + int64_t dur_ns = (int64_t)dur_val; + int64_t days = dur_ns / EL_EARTH_DAY_NS; + int y = ld->year, m = ld->month, d = ld->day; + /* Walk days forward/backward in canonical Gregorian. */ + while (days > 0) { + int dim = _el_days_in_month(y, m); + if (d + days <= dim) { d += (int)days; days = 0; break; } + days -= (dim - d + 1); + d = 1; + m++; + if (m > 12) { m = 1; y++; } + } + while (days < 0) { + if (d + days >= 1) { d += (int)days; days = 0; break; } + days += d; + m--; + if (m < 1) { m = 12; y--; } + d = _el_days_in_month(y, m); + } + return local_date((el_val_t)y, (el_val_t)m, (el_val_t)d); +} + +el_val_t el_local_time_add_dur(el_val_t lt_val, el_val_t dur_val) { + int64_t t = (int64_t)lt_val + (int64_t)dur_val; + /* Wrap mod 24h on Earth-default. CycleCalendar wrapping requires the + * caller to use cal_in / cal_format for the right modulus. */ + int64_t day = EL_EARTH_DAY_NS; + int64_t r = t % day; + if (r < 0) r += day; + return (el_val_t)r; +} + +el_val_t el_local_date_lt(el_val_t a_val, el_val_t b_val) { + if (!el_is_magic(a_val, EL_LDATE_MAGIC) || !el_is_magic(b_val, EL_LDATE_MAGIC)) return (el_val_t)0; + el_localdate_t* a = (el_localdate_t*)(uintptr_t)a_val; + el_localdate_t* b = (el_localdate_t*)(uintptr_t)b_val; + if (a->year != b->year) return (el_val_t)(a->year < b->year ? 1 : 0); + if (a->month != b->month) return (el_val_t)(a->month < b->month ? 1 : 0); + return (el_val_t)(a->day < b->day ? 1 : 0); +} + +el_val_t el_local_date_eq(el_val_t a_val, el_val_t b_val) { + if (!el_is_magic(a_val, EL_LDATE_MAGIC) || !el_is_magic(b_val, EL_LDATE_MAGIC)) return (el_val_t)0; + el_localdate_t* a = (el_localdate_t*)(uintptr_t)a_val; + el_localdate_t* b = (el_localdate_t*)(uintptr_t)b_val; + return (el_val_t)((a->year == b->year && a->month == b->month && a->day == b->day) ? 1 : 0); +} + +/* ── Rhythm ──────────────────────────────────────────────────────────────── */ + +static el_rhythm_t* _el_rhythm_alloc(el_rhythm_kind_t k) { + el_rhythm_t* r = (el_rhythm_t*)calloc(1, sizeof(el_rhythm_t)); + r->magic = EL_RHYTHM_MAGIC; + r->kind = k; + return r; +} + +el_val_t rhythm_cycle_start(void) { + return (el_val_t)(uintptr_t)_el_rhythm_alloc(EL_RHYTHM_CYCLE_START); +} + +el_val_t rhythm_cycle_phase(el_val_t phase_val) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_CYCLE_PHASE); + r->phase = el_to_float(phase_val); + return (el_val_t)(uintptr_t)r; +} + +el_val_t rhythm_duration(el_val_t d_val) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_DURATION); + r->period_ns = (int64_t)d_val; + return (el_val_t)(uintptr_t)r; +} + +el_val_t rhythm_session_start(void) { + return (el_val_t)(uintptr_t)_el_rhythm_alloc(EL_RHYTHM_SESSION_START); +} + +el_val_t rhythm_event(el_val_t name_val) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_EVENT); + const char* n = EL_CSTR(name_val); + r->event_name = el_strdup_persist(n ? n : ""); + return (el_val_t)(uintptr_t)r; +} + +el_val_t rhythm_and(el_val_t a_val, el_val_t b_val) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_AND); + r->a = el_is_magic(a_val, EL_RHYTHM_MAGIC) ? (el_rhythm_t*)(uintptr_t)a_val : NULL; + r->b = el_is_magic(b_val, EL_RHYTHM_MAGIC) ? (el_rhythm_t*)(uintptr_t)b_val : NULL; + return (el_val_t)(uintptr_t)r; +} + +el_val_t rhythm_or(el_val_t a_val, el_val_t b_val) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_OR); + r->a = el_is_magic(a_val, EL_RHYTHM_MAGIC) ? (el_rhythm_t*)(uintptr_t)a_val : NULL; + r->b = el_is_magic(b_val, EL_RHYTHM_MAGIC) ? (el_rhythm_t*)(uintptr_t)b_val : NULL; + return (el_val_t)(uintptr_t)r; +} + +el_val_t rhythm_weekday(el_val_t day) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_WEEKDAY); + r->weekday = (int)(int64_t)day; + return (el_val_t)(uintptr_t)r; +} + +el_val_t rhythm_weekly_at(el_val_t day, el_val_t hour, el_val_t minute) { + el_rhythm_t* r = _el_rhythm_alloc(EL_RHYTHM_WEEKLY_AT); + r->weekday = (int)(int64_t)day; + r->hour = (int)(int64_t)hour; + r->minute = (int)(int64_t)minute; + return (el_val_t)(uintptr_t)r; +} + +/* Compute the next instant on or after `after` when rhythm `r` matches, + * under calendar `cal`. */ +static int64_t _el_next_after(el_rhythm_t* r, int64_t after_ns, el_calendar_t* cal) { + if (!r) return after_ns; + int64_t period = cal->cycle_period_ns > 0 ? cal->cycle_period_ns : EL_EARTH_DAY_NS; + switch (r->kind) { + case EL_RHYTHM_CYCLE_START: { + int64_t base = after_ns - cal->epoch_ns; + int64_t cyc = (base / period) + 1; + return cal->epoch_ns + cyc * period; + } + case EL_RHYTHM_CYCLE_PHASE: { + int64_t base = after_ns - cal->epoch_ns; + int64_t cyc_ns = (int64_t)(r->phase * (double)period); + int64_t cur_cyc = base / period; + int64_t candidate = cal->epoch_ns + cur_cyc * period + cyc_ns; + if (candidate <= after_ns) candidate += period; + return candidate; + } + case EL_RHYTHM_DURATION: { + return after_ns + (r->period_ns > 0 ? r->period_ns : 1); + } + case EL_RHYTHM_WEEKDAY: + case EL_RHYTHM_WEEKLY_AT: { + if (cal->kind != EL_CALENDAR_EARTH) { + /* Non-Earth calendars: fall back to cycle math, treating + * weekday as a 7-cycle-per-period proxy. */ + return after_ns + period; + } + _el_apply_zone(cal->zone); + time_t s = (time_t)(after_ns / 1000000000LL); + struct tm tm; + localtime_r(&s, &tm); + /* tm_wday: 0=Sun..6=Sat. We use 1=Mon..7=Sun. */ + int target = r->weekday >= 1 && r->weekday <= 7 ? r->weekday : 1; + int target_wday = target == 7 ? 0 : target; /* 7→Sun=0, 1→Mon=1 */ + int days_ahead = (target_wday - tm.tm_wday + 7) % 7; + int hour = (r->kind == EL_RHYTHM_WEEKLY_AT) ? r->hour : 0; + int minute = (r->kind == EL_RHYTHM_WEEKLY_AT) ? r->minute : 0; + struct tm cand = tm; + cand.tm_mday += days_ahead; + cand.tm_hour = hour; + cand.tm_min = minute; + cand.tm_sec = 0; + cand.tm_isdst = -1; + time_t cand_t = mktime(&cand); + int64_t cand_ns = (int64_t)cand_t * 1000000000LL; + if (cand_ns <= after_ns) { + cand.tm_mday += 7; + cand.tm_isdst = -1; + cand_t = mktime(&cand); + cand_ns = (int64_t)cand_t * 1000000000LL; + } + return cand_ns; + } + case EL_RHYTHM_AND: { + int64_t a = _el_next_after(r->a, after_ns, cal); + int64_t b = _el_next_after(r->b, after_ns, cal); + return a > b ? a : b; + } + case EL_RHYTHM_OR: { + int64_t a = _el_next_after(r->a, after_ns, cal); + int64_t b = _el_next_after(r->b, after_ns, cal); + return a < b ? a : b; + } + case EL_RHYTHM_SESSION_START: + case EL_RHYTHM_EVENT: + default: + return after_ns; + } +} + +el_val_t rhythm_next_after(el_val_t r_val, el_val_t after_val, el_val_t cal_val) { + if (!el_is_magic(r_val, EL_RHYTHM_MAGIC)) return after_val; + el_rhythm_t* r = (el_rhythm_t*)(uintptr_t)r_val; + el_calendar_t* c = _el_resolve_cal(cal_val); + int64_t out = _el_next_after(r, (int64_t)after_val, c); + return (el_val_t)out; +} + +el_val_t rhythm_matches(el_val_t r_val, el_val_t ct_val) { + if (!el_is_magic(r_val, EL_RHYTHM_MAGIC)) return (el_val_t)0; + if (!el_is_magic(ct_val, EL_CALTIME_MAGIC)) return (el_val_t)0; + el_rhythm_t* r = (el_rhythm_t*)(uintptr_t)r_val; + el_caltime_t* ct = (el_caltime_t*)(uintptr_t)ct_val; + int64_t period = ct->cal->cycle_period_ns > 0 ? ct->cal->cycle_period_ns : EL_EARTH_DAY_NS; + int64_t base = ct->instant_ns - ct->cal->epoch_ns; + int64_t phase_ns = base % period; + if (phase_ns < 0) phase_ns += period; + double phase = (double)phase_ns / (double)period; + switch (r->kind) { + case EL_RHYTHM_CYCLE_START: return (el_val_t)(phase_ns == 0 ? 1 : 0); + case EL_RHYTHM_CYCLE_PHASE: { + double diff = phase - r->phase; + if (diff < 0) diff = -diff; + return (el_val_t)(diff < 0.001 ? 1 : 0); + } + default: return (el_val_t)0; + } +} + /* ── UUID v4 ─────────────────────────────────────────────────────────────── */ static int _el_uuid_seeded = 0; diff --git a/el-compiler/runtime/el_runtime.h b/el-compiler/runtime/el_runtime.h index 6939d01..a5c2733 100644 --- a/el-compiler/runtime/el_runtime.h +++ b/el-compiler/runtime/el_runtime.h @@ -316,6 +316,89 @@ el_val_t ttl_cache_set(el_val_t key, el_val_t value); el_val_t ttl_cache_get(el_val_t key, el_val_t max_age); el_val_t ttl_cache_age(el_val_t key); +/* ── Calendar + CalendarTime + Rhythm + LocalDate/Time/DateTime ───────────── + * Phase 1.5 of the time system. Calendar is pluggable: EarthCalendar (IANA + * zones, Gregorian, DST) is the user-facing default; MarsCalendar, + * CycleCalendar(period), NoCycleCalendar, RelativeCalendar handle non-Earth + * domains. + * + * A Calendar interprets an Instant under a particular cycle convention and + * produces a CalendarTime. CalendarTime carries the underlying Instant and + * a back-pointer to its Calendar; arithmetic and formatting consult the + * Calendar to convert ns since epoch into year/month/day/hour/minute/second + * (or sol/phase, or cycle/phase, depending on kind). + * + * Storage convention: Calendar / CalendarTime / Rhythm / LocalDate / + * LocalDateTime are heap-allocated structs whose pointers are cast into + * el_val_t. A 24-bit magic header at offset 0 lets the runtime identify + * the kind safely. LocalTime is small enough to live in the int64 slot + * directly (nanos since midnight, signed). */ + +/* Zone — opaque IANA zone or fixed offset, used by EarthCalendar. + * `zone_id` is either an IANA name ("America/New_York", "UTC") or a fixed + * offset string ("+05:30", "-08:00"). The runtime resolves it via tzset() + * on first use of the owning EarthCalendar. */ +el_val_t zone(el_val_t id); +el_val_t zone_utc(void); +el_val_t zone_local(void); +el_val_t zone_offset(el_val_t hours, el_val_t minutes); + +/* Calendar constructors. Each returns an el_val_t pointer to a heap- + * allocated, magic-tagged Calendar struct. Calendars are interned by + * (kind, zone_id, period_ns, epoch_ns) so identical constructors return + * the same pointer — equality is reference equality. */ +el_val_t earth_calendar(el_val_t z); +el_val_t earth_calendar_default(void); +el_val_t mars_calendar(void); +el_val_t cycle_calendar(el_val_t period_dur); +el_val_t no_cycle_calendar(void); +el_val_t relative_calendar(el_val_t epoch_inst); + +/* CalendarTime constructors and methods. Returns a heap-allocated struct + * whose pointer fits in el_val_t. */ +el_val_t now_in(el_val_t cal); +el_val_t in_calendar(el_val_t inst, el_val_t cal); +el_val_t cal_format(el_val_t ct, el_val_t pattern); +el_val_t cal_to_instant(el_val_t ct); +el_val_t cal_cycle_phase(el_val_t ct); +el_val_t cal_in(el_val_t ct, el_val_t cal); + +/* LocalDate / LocalTime / LocalDateTime — calendar-agnostic value types. + * LocalTime carries nanoseconds since midnight as a signed int64 directly + * in the el_val_t slot (no allocation). LocalDate / LocalDateTime are + * heap-allocated structs with magic headers. */ +el_val_t local_date(el_val_t y, el_val_t m, el_val_t d); +el_val_t local_time(el_val_t h, el_val_t m, el_val_t s, el_val_t ns); +el_val_t local_datetime(el_val_t date, el_val_t time); +el_val_t zoned(el_val_t date, el_val_t time, el_val_t cal); + +el_val_t local_date_year(el_val_t ld); +el_val_t local_date_month(el_val_t ld); +el_val_t local_date_day(el_val_t ld); +el_val_t local_time_hour(el_val_t lt); +el_val_t local_time_minute(el_val_t lt); +el_val_t local_time_second(el_val_t lt); +el_val_t local_time_nanos(el_val_t lt); + +el_val_t el_local_date_add_dur(el_val_t ld, el_val_t dur); +el_val_t el_local_time_add_dur(el_val_t lt, el_val_t dur); +el_val_t el_local_date_lt(el_val_t a, el_val_t b); +el_val_t el_local_date_eq(el_val_t a, el_val_t b); + +/* Rhythm — pluggable recurrence AST. Returns a heap-allocated struct + * pointer in el_val_t; rhythms are immutable so callers may share them. */ +el_val_t rhythm_cycle_start(void); +el_val_t rhythm_cycle_phase(el_val_t phase); +el_val_t rhythm_duration(el_val_t d); +el_val_t rhythm_session_start(void); +el_val_t rhythm_event(el_val_t name); +el_val_t rhythm_and(el_val_t a, el_val_t b); +el_val_t rhythm_or(el_val_t a, el_val_t b); +el_val_t rhythm_weekday(el_val_t day); +el_val_t rhythm_weekly_at(el_val_t day, el_val_t hour, el_val_t minute); +el_val_t rhythm_next_after(el_val_t r, el_val_t after, el_val_t cal); +el_val_t rhythm_matches(el_val_t r, el_val_t ct); + /* ── UUID ────────────────────────────────────────────────────────────────── */ el_val_t uuid_new(void); diff --git a/el-compiler/src/codegen.el b/el-compiler/src/codegen.el index 5d1d9dc..a40d04d 100644 --- a/el-compiler/src/codegen.el +++ b/el-compiler/src/codegen.el @@ -202,6 +202,51 @@ fn cg_expr(expr: Map) -> String { let right_is_inst: Bool = is_instant_expr(right) let left_is_dur: Bool = is_duration_expr(left) let right_is_dur: Bool = is_duration_expr(right) + + // Phase 1.5 LocalDate / LocalTime / CalendarTime dispatch. These + // route through their typed runtime wrappers (el_local_date_add_dur, + // el_local_time_add_dur, el_local_date_lt, el_local_date_eq) and + // forbid mismatched ops at codegen time. Cross-calendar arithmetic + // (CalendarTime + CalendarTime, CalendarTime - CalendarTime under + // mismatched calendars) is structurally meaningless: a CalendarTime + // already projects an Instant under a Calendar, so subtraction + // between two of them only makes sense in instant-space (use + // cal_to_instant first). + let left_is_ld: Bool = is_localdate_expr(left) + let right_is_ld: Bool = is_localdate_expr(right) + let left_is_lt: Bool = is_localtime_expr(left) + let right_is_lt: Bool = is_localtime_expr(right) + let left_is_ct: Bool = is_caltime_expr(left) + let right_is_ct: Bool = is_caltime_expr(right) + if left_is_ld { + if op == "Plus" { + if right_is_dur { + return "el_local_date_add_dur(" + left_c + ", " + right_c + ")" + } + } + if op == "Lt" { + if right_is_ld { return "el_local_date_lt(" + left_c + ", " + right_c + ")" } + } + if op == "EqEq" { + if right_is_ld { return "el_local_date_eq(" + left_c + ", " + right_c + ")" } + } + } + if left_is_lt { + if op == "Plus" { + if right_is_dur { + return "el_local_time_add_dur(" + left_c + ", " + right_c + ")" + } + } + } + if left_is_ct { + if op == "Plus" { + if right_is_ct { + time_record_violation("caltime_plus_caltime", "CalendarTime + CalendarTime is not allowed (use cal_to_instant + Duration)") + return "0 /* TIME_TYPE_ERROR: CalendarTime + CalendarTime */" + } + } + } + let any_temporal: Bool = false if left_is_inst { let any_temporal = true } if right_is_inst { let any_temporal = true } @@ -877,6 +922,27 @@ fn cg_stmt(stmt: Map, indent: String, declared: [String]) -> [Strin if str_eq(ltype, "Duration") { add_duration_name(name) } + if str_eq(ltype, "Calendar") { + add_calendar_name(name) + } + if str_eq(ltype, "CalendarTime") { + add_caltime_name(name) + } + if str_eq(ltype, "Rhythm") { + add_rhythm_name(name) + } + if str_eq(ltype, "LocalDate") { + add_localdate_name(name) + } + if str_eq(ltype, "LocalTime") { + add_localtime_name(name) + } + if str_eq(ltype, "LocalDateTime") { + add_localdt_name(name) + } + if str_eq(ltype, "Zone") { + add_zone_name(name) + } // Inference from RHS — duration literals and known-typed calls // propagate even when the let is unannotated. if is_instant_expr(val) { @@ -885,6 +951,27 @@ fn cg_stmt(stmt: Map, indent: String, declared: [String]) -> [Strin if is_duration_expr(val) { add_duration_name(name) } + if is_calendar_expr(val) { + add_calendar_name(name) + } + if is_caltime_expr(val) { + add_caltime_name(name) + } + if is_rhythm_expr(val) { + add_rhythm_name(name) + } + if is_localdate_expr(val) { + add_localdate_name(name) + } + if is_localtime_expr(val) { + add_localtime_name(name) + } + if is_localdt_expr(val) { + add_localdt_name(name) + } + if is_zone_expr(val) { + add_zone_name(name) + } let vk: String = val["expr"] if str_eq(vk, "Int") { add_int_name(name) @@ -1232,6 +1319,191 @@ fn is_duration_call(call_expr: Map) -> Bool { return false } +// Phase 1.5 — Calendar / CalendarTime / Rhythm / LocalDate / LocalTime / +// LocalDateTime / Zone are first-class boxed types. Each has its own name +// set in process state, populated from typed `let` bindings and parameter +// annotations. The BinOp dispatcher consults these to forbid mismatched +// arithmetic (e.g. CalendarTime + CalendarTime, LocalDate < CalendarTime). +fn is_calendar_name(name: String) -> Bool { + let csv: String = state_get("__calendar_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +fn is_caltime_name(name: String) -> Bool { + let csv: String = state_get("__caltime_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +fn is_rhythm_name(name: String) -> Bool { + let csv: String = state_get("__rhythm_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +fn is_localdate_name(name: String) -> Bool { + let csv: String = state_get("__localdate_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +fn is_localtime_name(name: String) -> Bool { + let csv: String = state_get("__localtime_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +fn is_localdt_name(name: String) -> Bool { + let csv: String = state_get("__localdt_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +fn is_zone_name(name: String) -> Bool { + let csv: String = state_get("__zone_names") + if str_eq(csv, "") { return false } + return str_contains(csv, "," + name + ",") +} + +// Calendar-returning builtins. earth_calendar / mars_calendar / cycle_calendar +// / no_cycle_calendar / relative_calendar all box a calendar struct. +fn is_calendar_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "earth_calendar") { return true } + if str_eq(name, "earth_calendar_default") { return true } + if str_eq(name, "mars_calendar") { return true } + if str_eq(name, "cycle_calendar") { return true } + if str_eq(name, "no_cycle_calendar") { return true } + if str_eq(name, "relative_calendar") { return true } + return false +} + +// CalendarTime-returning builtins. +fn is_caltime_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "now_in") { return true } + if str_eq(name, "in_calendar") { return true } + if str_eq(name, "cal_in") { return true } + if str_eq(name, "zoned") { return true } + return false +} + +// Rhythm-returning builtins. +fn is_rhythm_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "rhythm_cycle_start") { return true } + if str_eq(name, "rhythm_cycle_phase") { return true } + if str_eq(name, "rhythm_duration") { return true } + if str_eq(name, "rhythm_session_start") { return true } + if str_eq(name, "rhythm_event") { return true } + if str_eq(name, "rhythm_and") { return true } + if str_eq(name, "rhythm_or") { return true } + if str_eq(name, "rhythm_weekday") { return true } + if str_eq(name, "rhythm_weekly_at") { return true } + return false +} + +// LocalDate-returning builtins. +fn is_localdate_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "local_date") { return true } + if str_eq(name, "el_local_date_add_dur") { return true } + return false +} + +fn is_localtime_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "local_time") { return true } + if str_eq(name, "el_local_time_add_dur") { return true } + return false +} + +fn is_localdt_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "local_datetime") { return true } + return false +} + +fn is_zone_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "zone") { return true } + if str_eq(name, "zone_utc") { return true } + if str_eq(name, "zone_local") { return true } + if str_eq(name, "zone_offset") { return true } + return false +} + +fn is_calendar_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_calendar_name(expr["name"]) } + if str_eq(k, "Call") { return is_calendar_call(expr) } + return false +} + +fn is_caltime_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_caltime_name(expr["name"]) } + if str_eq(k, "Call") { return is_caltime_call(expr) } + return false +} + +fn is_rhythm_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_rhythm_name(expr["name"]) } + if str_eq(k, "Call") { return is_rhythm_call(expr) } + return false +} + +fn is_localdate_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_localdate_name(expr["name"]) } + if str_eq(k, "Call") { return is_localdate_call(expr) } + return false +} + +fn is_localtime_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_localtime_name(expr["name"]) } + if str_eq(k, "Call") { return is_localtime_call(expr) } + return false +} + +fn is_localdt_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_localdt_name(expr["name"]) } + if str_eq(k, "Call") { return is_localdt_call(expr) } + return false +} + +fn is_zone_expr(expr: Map) -> Bool { + let k: String = expr["expr"] + if str_eq(k, "Ident") { return is_zone_name(expr["name"]) } + if str_eq(k, "Call") { return is_zone_call(expr) } + return false +} + // Recursive type predicates for Instant / Duration. Mirror is_int_expr. // is_instant_expr / is_duration_expr return true only when the expression // is provably of that type at codegen time. Anything ambiguous returns @@ -1810,10 +2082,80 @@ fn add_duration_name(name: String) -> Bool { return true } +fn add_calendar_name(name: String) -> Bool { + let csv: String = state_get("__calendar_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__calendar_names", csv + name + ",") + return true +} + +fn add_caltime_name(name: String) -> Bool { + let csv: String = state_get("__caltime_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__caltime_names", csv + name + ",") + return true +} + +fn add_rhythm_name(name: String) -> Bool { + let csv: String = state_get("__rhythm_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__rhythm_names", csv + name + ",") + return true +} + +fn add_localdate_name(name: String) -> Bool { + let csv: String = state_get("__localdate_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__localdate_names", csv + name + ",") + return true +} + +fn add_localtime_name(name: String) -> Bool { + let csv: String = state_get("__localtime_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__localtime_names", csv + name + ",") + return true +} + +fn add_localdt_name(name: String) -> Bool { + let csv: String = state_get("__localdt_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__localdt_names", csv + name + ",") + return true +} + +fn add_zone_name(name: String) -> Bool { + let csv: String = state_get("__zone_names") + if str_eq(csv, "") { csv = "," } + let key: String = "," + name + "," + if str_contains(csv, key) { return true } + state_set("__zone_names", csv + name + ",") + return true +} + fn build_int_names_for_params(params: [Map]) -> Bool { state_set("__int_names", ",") state_set("__instant_names", ",") state_set("__duration_names", ",") + state_set("__calendar_names", ",") + state_set("__caltime_names", ",") + state_set("__rhythm_names", ",") + state_set("__localdate_names", ",") + state_set("__localtime_names", ",") + state_set("__localdt_names", ",") + state_set("__zone_names", ",") let np: Int = native_list_len(params) let pi = 0 while pi < np { @@ -1829,6 +2171,27 @@ fn build_int_names_for_params(params: [Map]) -> Bool { if str_eq(ptype, "Duration") { add_duration_name(pname) } + if str_eq(ptype, "Calendar") { + add_calendar_name(pname) + } + if str_eq(ptype, "CalendarTime") { + add_caltime_name(pname) + } + if str_eq(ptype, "Rhythm") { + add_rhythm_name(pname) + } + if str_eq(ptype, "LocalDate") { + add_localdate_name(pname) + } + if str_eq(ptype, "LocalTime") { + add_localtime_name(pname) + } + if str_eq(ptype, "LocalDateTime") { + add_localdt_name(pname) + } + if str_eq(ptype, "Zone") { + add_zone_name(pname) + } let pi = pi + 1 } return true diff --git a/tests/calendar/examples/cross-calendar-comparison.el b/tests/calendar/examples/cross-calendar-comparison.el new file mode 100644 index 0000000..98ebb89 --- /dev/null +++ b/tests/calendar/examples/cross-calendar-comparison.el @@ -0,0 +1,22 @@ +// cross-calendar-comparison.el — same Instant under two different calendars +// produces identical cal_to_instant() outputs. Calendar choice does not change +// the underlying instant — only the projection. + +fn run_test() -> Int { + let i: Instant = unix_seconds(1782216000) + let z: Zone = zone("America/New_York") + let earth: Calendar = earth_calendar(z) + let mars: Calendar = mars_calendar() + let ct_earth: CalendarTime = in_calendar(i, earth) + let ct_mars: CalendarTime = in_calendar(i, mars) + let i_earth: Instant = cal_to_instant(ct_earth) + let i_mars: Instant = cal_to_instant(ct_mars) + if i_earth == i_mars { + return 1 + } + return 0 +} + +fn main() -> Void { + println(int_to_str(run_test())) +} diff --git a/tests/calendar/examples/cycle-300yr.el b/tests/calendar/examples/cycle-300yr.el new file mode 100644 index 0000000..1d7e80e --- /dev/null +++ b/tests/calendar/examples/cycle-300yr.el @@ -0,0 +1,23 @@ +// cycle-300yr.el — CycleCalendar with a 100-year period proves the math +// holds at long periods. (300 years exceeds int64 nanos: 2^63 ns ≈ 292 yr; +// 100 yr is the largest round period that fits while leaving headroom for +// instants on either side.) One earth year apart yields phase_diff ~ 0.01. + +fn run_test() -> String { + // 100 Julian years = 100 * 31557600 = 3155760000 seconds. + let period: Duration = duration_seconds(3155760000) + let cal: Calendar = cycle_calendar(period) + let base: Instant = unix_seconds(0) + let later: Instant = unix_seconds(31557600) + let ct1: CalendarTime = in_calendar(base, cal) + let ct2: CalendarTime = in_calendar(later, cal) + let p1: Float = cal_cycle_phase(ct1) + let p2: Float = cal_cycle_phase(ct2) + let diff: Float = p2 - p1 + // 1 year / 100 years = 0.01 + return format_float(diff, 2) +} + +fn main() -> Void { + println(run_test()) +} diff --git a/tests/calendar/examples/cycle-30hr.el b/tests/calendar/examples/cycle-30hr.el new file mode 100644 index 0000000..4355d5e --- /dev/null +++ b/tests/calendar/examples/cycle-30hr.el @@ -0,0 +1,20 @@ +// cycle-30hr.el — CycleCalendar with a 30-hour period. +// Two CalendarTimes 15 hours apart should have cycle_phase differ by 0.5. +// We compare phases via float subtraction with format_float for determinism. + +fn run_test() -> String { + let period: Duration = 30.hours + let cal: Calendar = cycle_calendar(period) + let base: Instant = unix_seconds(0) + let later: Instant = base + 15.hours + let ct1: CalendarTime = in_calendar(base, cal) + let ct2: CalendarTime = in_calendar(later, cal) + let p1: Float = cal_cycle_phase(ct1) + let p2: Float = cal_cycle_phase(ct2) + let diff: Float = p2 - p1 + return format_float(diff, 1) +} + +fn main() -> Void { + println(run_test()) +} diff --git a/tests/calendar/examples/dst-spring-forward.el b/tests/calendar/examples/dst-spring-forward.el new file mode 100644 index 0000000..31b50a1 --- /dev/null +++ b/tests/calendar/examples/dst-spring-forward.el @@ -0,0 +1,17 @@ +// dst-spring-forward.el — Earth calendar handles the DST transition. +// 2026 spring DST: March 8 at 02:00 EST → clocks jump to 03:00 EDT. +// 2026-03-08 06:30 UTC = 01:30 EST (just before the jump). +// Add 1 hour → 07:30 UTC = 03:30 EDT (the wall clock skipped 02:30 entirely). + +fn run_test() -> String { + let z: Zone = zone("America/New_York") + let cal: Calendar = earth_calendar(z) + let i: Instant = unix_seconds(1772951400) + let later: Instant = i + 1.hour + let ct: CalendarTime = in_calendar(later, cal) + return cal_format(ct, "HH:mm z") +} + +fn main() -> Void { + println(run_test()) +} diff --git a/tests/calendar/examples/earth-zone.el b/tests/calendar/examples/earth-zone.el new file mode 100644 index 0000000..6ae7505 --- /dev/null +++ b/tests/calendar/examples/earth-zone.el @@ -0,0 +1,16 @@ +// earth-zone.el — EarthCalendar(zone) formats with the right zone abbreviation. +// We use a fixed Instant on July 4, 2026 (definitely EDT in NYC) so the +// abbreviation is deterministic across runs. + +fn run_test() -> String { + let z: Zone = zone("America/New_York") + let cal: Calendar = earth_calendar(z) + // 2026-07-04 12:00:00 UTC = 2026-07-04 08:00:00 EDT + let i: Instant = unix_seconds(1782216000) + let ct: CalendarTime = in_calendar(i, cal) + return cal_format(ct, "z") +} + +fn main() -> Void { + println(run_test()) +} diff --git a/tests/calendar/examples/local-date-arithmetic.el b/tests/calendar/examples/local-date-arithmetic.el new file mode 100644 index 0000000..19d5f14 --- /dev/null +++ b/tests/calendar/examples/local-date-arithmetic.el @@ -0,0 +1,16 @@ +// local-date-arithmetic.el — LocalDate + Duration produces a LocalDate. +// 2026-05-28 + 7 days crosses the May/June boundary, yielding 2026-06-04. + +fn run_test() -> String { + let d1: LocalDate = local_date(2026, 5, 28) + let week: Duration = 7.days + let d2: LocalDate = d1 + week + let y: Int = local_date_year(d2) + let m: Int = local_date_month(d2) + let day: Int = local_date_day(d2) + return int_to_str(y) + "-" + int_to_str(m) + "-" + int_to_str(day) +} + +fn main() -> Void { + println(run_test()) +} diff --git a/tests/calendar/examples/mars-calendar.el b/tests/calendar/examples/mars-calendar.el new file mode 100644 index 0000000..138b00c --- /dev/null +++ b/tests/calendar/examples/mars-calendar.el @@ -0,0 +1,21 @@ +// mars-calendar.el — MarsCalendar uses sol period 88775.244 seconds. +// Two instants exactly one sol apart should differ by 1 in sol number. + +fn run_test() -> Int { + let cal: Calendar = mars_calendar() + let base: Instant = unix_seconds(0) + // 88775.244 s * 1e9 nanos = 88775244000000 nanos + let one_sol_ns: Int = 88775244000000 + let one_sol: Duration = el_duration_from_nanos(one_sol_ns) + let later: Instant = base + one_sol + let ct1: CalendarTime = in_calendar(base, cal) + let ct2: CalendarTime = in_calendar(later, cal) + let sol1: String = cal_format(ct1, "%sol") + let sol2: String = cal_format(ct2, "%sol") + let diff: Int = str_to_int(sol2) - str_to_int(sol1) + return diff +} + +fn main() -> Void { + println(int_to_str(run_test())) +} diff --git a/tests/calendar/examples/no-cycle.el b/tests/calendar/examples/no-cycle.el new file mode 100644 index 0000000..0d374d0 --- /dev/null +++ b/tests/calendar/examples/no-cycle.el @@ -0,0 +1,18 @@ +// no-cycle.el — NoCycleCalendar's cycle_phase returns NaN sentinel. +// Detection via float_to_str — NaN renders as "nan" under %g. + +fn run_test() -> Int { + let cal: Calendar = no_cycle_calendar() + let i: Instant = unix_seconds(1000000000) + let ct: CalendarTime = in_calendar(i, cal) + let p: Float = cal_cycle_phase(ct) + let s: String = float_to_str(p) + if str_eq(s, "nan") { + return 1 + } + return 0 +} + +fn main() -> Void { + println(int_to_str(run_test())) +} diff --git a/tests/calendar/examples/rhythm-cycle-30hr.el b/tests/calendar/examples/rhythm-cycle-30hr.el new file mode 100644 index 0000000..e02e9ac --- /dev/null +++ b/tests/calendar/examples/rhythm-cycle-30hr.el @@ -0,0 +1,18 @@ +// rhythm-cycle-30hr.el — rhythm_cycle_phase(0.5) under CycleCalendar(30.hours) +// returns the next instant at the 15-hour mark of the cycle. + +fn run_test() -> Int { + let period: Duration = 30.hours + let cal: Calendar = cycle_calendar(period) + let r: Rhythm = rhythm_cycle_phase(0.5) + let base: Instant = unix_seconds(0) + let next: Instant = rhythm_next_after(r, base, cal) + let elapsed_ns: Duration = next - base + let elapsed_secs: Int = duration_to_seconds(elapsed_ns) + // 15 hours = 54000 seconds. + return elapsed_secs +} + +fn main() -> Void { + println(int_to_str(run_test())) +} diff --git a/tests/calendar/examples/rhythm-grounding.el b/tests/calendar/examples/rhythm-grounding.el new file mode 100644 index 0000000..3788214 --- /dev/null +++ b/tests/calendar/examples/rhythm-grounding.el @@ -0,0 +1,18 @@ +// rhythm-grounding.el — Mondays at 9am, grounded against EarthCalendar(NYC), +// from a Wednesday timestamp returns the next Monday at 9am EDT. +// Wednesday 2026-05-06 00:00 UTC (1778025600) → next Monday 9am EDT +// = 2026-05-11 09:00 EDT = 2026-05-11 13:00 UTC = 1778504400. + +fn run_test() -> Int { + let z: Zone = zone("America/New_York") + let cal: Calendar = earth_calendar(z) + let r: Rhythm = rhythm_weekly_at(1, 9, 0) + let after: Instant = unix_seconds(1778025600) + let next: Instant = rhythm_next_after(r, after, cal) + let next_secs: Int = instant_to_unix_seconds(next) + return next_secs +} + +fn main() -> Void { + println(int_to_str(run_test())) +} diff --git a/tests/calendar/run.sh b/tests/calendar/run.sh new file mode 100755 index 0000000..fd3e49d --- /dev/null +++ b/tests/calendar/run.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash +# run.sh — build and execute the calendar/ acceptance corpus. +# +# Each examples/.el is a self-contained El program with a fn main() +# that prints a single deterministic result line. The runner compiles each +# via the canonical native elc, links it against the shared C runtime, runs +# it, and asserts the output matches the expected value. + +set -uo pipefail +cd "$(dirname "$0")" + +EL_HOME="${EL_HOME:-$(cd ../.. && pwd)}" +ELC="${EL_HOME}/dist/platform/elc" +RUNTIME_DIR="${EL_HOME}/el-compiler/runtime" + +if [ ! -x "${ELC}" ]; then + echo "elc not found at ${ELC}" >&2 + exit 1 +fi + +PASS=0 +FAIL=0 +FAILED_NAMES=() + +# run_runtime_case [] +run_runtime_case() { + local name="$1" + local src="$2" + local expected="$3" + local mode="${4:-exact}" + + local out_c + local out_bin + out_c="$(mktemp -t cal_test.XXXXXX).c" + out_bin="$(mktemp -t cal_test.XXXXXX)" + + if ! "${ELC}" "${src}" > "${out_c}" 2>/tmp/cal_test.elc.err; then + echo "FAIL ${name} — elc emit failed:" + cat /tmp/cal_test.elc.err | sed 's/^/ /' + FAIL=$((FAIL+1)) + FAILED_NAMES+=("${name}") + rm -f "${out_c}" "${out_bin}" + return + fi + + if ! cc -O2 -I "${RUNTIME_DIR}" "${out_c}" "${RUNTIME_DIR}/el_runtime.c" \ + -lcurl -lpthread -o "${out_bin}" 2>/tmp/cal_test.cc.err; then + echo "FAIL ${name} — cc failed:" + cat /tmp/cal_test.cc.err | sed 's/^/ /' + FAIL=$((FAIL+1)) + FAILED_NAMES+=("${name}") + rm -f "${out_c}" "${out_bin}" + return + fi + + local got + got="$("${out_bin}" 2>&1 | tr -d '[:space:]')" + + if [ "${mode}" = "either" ]; then + local ok=0 + local IFS=',' + for choice in ${expected}; do + if [ "${got}" = "${choice}" ]; then ok=1; break; fi + done + if [ "${ok}" = "1" ]; then + echo "PASS ${name} (got: ${got})" + PASS=$((PASS+1)) + else + echo "FAIL ${name} expected one of {${expected}}, got: ${got}" + FAIL=$((FAIL+1)) + FAILED_NAMES+=("${name}") + fi + else + if [ "${got}" = "${expected}" ]; then + echo "PASS ${name}" + PASS=$((PASS+1)) + else + echo "FAIL ${name} expected: ${expected}, got: ${got}" + FAIL=$((FAIL+1)) + FAILED_NAMES+=("${name}") + fi + fi + + rm -f "${out_c}" "${out_bin}" +} + +echo "==> Running calendar/ acceptance corpus" +echo + +run_runtime_case "earth-zone" examples/earth-zone.el "EDT" +run_runtime_case "dst-spring-forward" examples/dst-spring-forward.el "03:30EDT" +run_runtime_case "mars-calendar" examples/mars-calendar.el "1" +run_runtime_case "cycle-30hr" examples/cycle-30hr.el "0.5" +run_runtime_case "cycle-300yr" examples/cycle-300yr.el "0.01" +run_runtime_case "no-cycle" examples/no-cycle.el "1" +run_runtime_case "cross-calendar-comparison" examples/cross-calendar-comparison.el "1" +run_runtime_case "local-date-arithmetic" examples/local-date-arithmetic.el "2026-6-4" +run_runtime_case "rhythm-grounding" examples/rhythm-grounding.el "1778504400" +run_runtime_case "rhythm-cycle-30hr" examples/rhythm-cycle-30hr.el "54000" + +echo +echo "${PASS} passed, ${FAIL} failed" +if [ "${FAIL}" -gt 0 ]; then + echo "failed: ${FAILED_NAMES[*]}" + exit 1 +fi +exit 0 diff --git a/tests/calendar/runner.el b/tests/calendar/runner.el new file mode 100644 index 0000000..0b58c77 --- /dev/null +++ b/tests/calendar/runner.el @@ -0,0 +1,13 @@ +// runner.el — entry point for the calendar/ acceptance corpus. +// +// Each calendar/examples/*.el is its own El program with its own fn main(). +// Compile, link, and run-output-diff is handled by tests/calendar/run.sh — +// this file is the El-side stub kept for pattern parity. +// +// Run from the calendar/ directory: +// ./run.sh + +fn main() -> Void { + println("calendar/ acceptance corpus is driven by run.sh — invoke that directly.") + println("Each examples/*.el is a self-contained program; runner.el is a parity stub.") +}