From 572cb42f0b9786687b4d27a7f2f45891366a8cec Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 22 Nov 2025 20:33:33 -0800
Subject: [PATCH] Removed physfs support
It's easier for people to play with the assets if they're available loose.
Also added user storage support
---
.gitmodules | 3 -
CMakeLists.txt | 12 +-
Maelstrom_Data.zip | Bin 1246150 -> 0 bytes
external/physfs | 1 -
game/init.cpp | 2 -
game/main.cpp | 66 +-
game/replay.cpp | 170 +-
game/scores.cpp | 75 +-
miniz/ChangeLog.md | 260 ++
miniz/LICENSE | 22 +
miniz/examples/example1.c | 105 +
miniz/examples/example2.c | 164 +
miniz/examples/example3.c | 269 ++
miniz/examples/example4.c | 102 +
miniz/examples/example5.c | 327 ++
miniz/examples/example6.c | 189 +
miniz/miniz.c | 7909 ++++++++++++++++++++++++++++++++++++
miniz/miniz.h | 1507 +++++++
miniz/readme.md | 46 +
screenlib/SDL_FrameBuf.cpp | 34 +-
utils/files.c | 172 +-
utils/files.h | 12 +-
utils/prefs.cpp | 16 +-
23 files changed, 11193 insertions(+), 270 deletions(-)
delete mode 100644 Maelstrom_Data.zip
delete mode 160000 external/physfs
create mode 100644 miniz/ChangeLog.md
create mode 100644 miniz/LICENSE
create mode 100644 miniz/examples/example1.c
create mode 100644 miniz/examples/example2.c
create mode 100644 miniz/examples/example3.c
create mode 100644 miniz/examples/example4.c
create mode 100644 miniz/examples/example5.c
create mode 100644 miniz/examples/example6.c
create mode 100644 miniz/miniz.c
create mode 100644 miniz/miniz.h
create mode 100644 miniz/readme.md
diff --git a/.gitmodules b/.gitmodules
index 24708b40..45920c96 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,6 +4,3 @@
[submodule "external/SDL_net"]
path = external/SDL_net
url = https://github.com/libsdl-org/SDL_net
-[submodule "external/physfs"]
- path = external/physfs
- url = https://github.com/icculus/physfs.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5bc28c47..f61d6ad7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,13 +8,15 @@ if(WIN32)
else()
set(GAME_INSTALLDIR "${CMAKE_INSTALL_PREFIX}/games/${PROJECT_NAME}")
endif()
-add_compile_definitions("-DLIBDIR=\"${GAME_INSTALLDIR}\"")
if(MSVC)
add_compile_options(-W3)
else()
add_compile_options(-Wall)
add_compile_options(-Wextra)
+ add_compile_options(-Wno-cast-function-type)
+ add_compile_options(-Wno-sign-compare)
+ add_compile_options(-Wno-unused-function)
add_compile_options(-Wno-unused-parameter)
endif()
@@ -25,7 +27,6 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
add_subdirectory(external/SDL EXCLUDE_FROM_ALL)
add_subdirectory(external/SDL_net EXCLUDE_FROM_ALL)
-add_subdirectory(external/physfs EXCLUDE_FROM_ALL)
set(MAELSTROM_SOURCES
mainstub.cpp
@@ -146,20 +147,17 @@ set(MAELSTROM_SOURCES
utils/rapidxml.h
utils/rapidxml.hpp
- external/physfs/extras/physfssdl3.c
+ miniz/miniz.c
Maelstrom.rc
)
add_executable(Maelstrom WIN32 ${MAELSTROM_SOURCES})
-target_include_directories(Maelstrom PRIVATE external/physfs/src)
target_link_libraries(Maelstrom PRIVATE SDL3::SDL3)
target_link_libraries(Maelstrom PRIVATE SDL2_net::SDL2_net-static)
-target_link_libraries(Maelstrom PRIVATE physfs-static)
-target_link_libraries(Maelstrom PRIVATE -lz)
install(TARGETS Maelstrom DESTINATION "${GAME_INSTALLDIR}")
-install(FILES Maelstrom_Data.zip DESTINATION "${GAME_INSTALLDIR}")
+install(DIRECTORY Data DESTINATION "${GAME_INSTALLDIR}")
file(GLOB docs "Docs/*.txt" "README*")
install(FILES ${docs} "COPYING" "COPYING.GPL" DESTINATION "${GAME_INSTALLDIR}/Docs")
diff --git a/Maelstrom_Data.zip b/Maelstrom_Data.zip
deleted file mode 100644
index bd8b62e8b4f43039e29b5a868ef73c68a3eab977..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1246150
zcmaI-Q;=v))UJt^U8`2vwr$(CZQHhO+qP}nwr%y=eNJ@5zq|K0BQj&=#mLBunen{i
z9b?K#0)s#S{I4f8-%<1be)<1TU;tPEBDOY8j<m{3kO08g$vEakFZkxpZqNXLAZNe;
z0RQ(S_b(plUj)SeFFuUcB@Oc55)l9Z<Nt}5);G3tbaJq@)|C;FQ6i*gU}d2HfA++E
z`+x1(oa!BgIgH%5>s7_QLo>7H3PS39@75?T1v(}+S7Jxh8I!10Q05#ar-%fZs1Ts!
ze^a0cT`jZ{WA0^+M^Y|S>E{3mQNdT3*COyGzuzgjFHscHf}kKwOydu+z`OTW1~HcP
zY2r$YI|?5k(Ua_I>T)vubuzulI!n#>PFe)maeLt1<A!yM1+fM8i#ra)RYjv6{l-X)
z!b6s&buzpCN{K>XjaN=Dt5ZS1t$8pnM$~B%<8$E)(pk24D(wq7U<y@*j{L>`N&eML
z>;B|_g~~F#>2GT$4i5lbbUR997tF}a)`p7yOvQ+ddd@u0%hpZhUkEt<(zTtxolUue
zlM9jtj)xnDo3`rRo?I^_^TpjhkC?p`!H9B?e&30>Masq<Do(z6ZAXR7gCJQ<c>qp=
zihWpdLn{{euqD)QF#+Wslu@T6Ez>WpYA|~IO#SzE3%877%$c+Alf>R80y-)UvW)VO
z_CrmhX&3xPpsO++&eNDNI!E;CvN-G=os3N_kw;8ciKM8^sLCm-S(BPmSXn!0>L+MF
zAa+WKpwScGQGWrsK*0&?CS_8#xW74jLK3qWO~w|V{4>x?qOXI?1&Q|kZy<PcjMHI(
zDuC{KV)}Fzs<Jl4?aMQb-B$bIHt|^2z<F7#xY(kq+*DqG#(IiPrCMA=TD{evS*(%=
z;t;jDiN>oKdr6<L36ugat=<R<e&n!#ZQb%pRd%;A=5gKR_WTXvEI=BOo!5ThCIs23
z0QU40p-F48z)1-@{bwu{d2&0SqC7335=J^DI)0mmE>#<K_!NU-^4p!*m{hPhw~mMj
z_Yo>X?309gSeohN#~>1zw5zMV))goYUFXbnqTE5ajiG!IA=9Hx&;up>;|iq^)L1os
zqc+W*yQ!T=FR>QpYiF-rdXXGFsO)&uP_FVRrpU%{lzqy22{D%E&Ph*xt1Fl9_FDHY
zIvexPC-Cbi+ANY|DRW~&aKZ4d@8dDI>I-ZZ+OF?*{8fWLBI58xnQ7vNX$dLfTvec$
zB5=B-QW+O3cMpRg_$ZwCv{gdW!jzA)F}Ofx(}JAHNp^OiH2Ru4qik}CZD=-PD)l$W
zi*yohSQ>31*Dh3=@|ad#yGaVEBwX>kceP<)WymR~;Bp{fW0!=!m&yXUM##Em85R|6
zX?F7idnZ>G4an3}%<R-M_aHj%m{SJHO{Rn87}xq=9NonH&MX85T3jY`obL^5f<|l+
zp4Nom*0}bPiiSSK3E@-=ad}eZUiH5;OIW2*E;HTtLa$N@4ht}8j!Hyr+ezJ9f+oxw
zk?93$>18)z>gmSIUHz`?-xh&OQ|*Gn(7Oaiu(+z@@$=aF$yC+8-Ig9N7U0?vHE(#&
zd3Srmt|;XU47+cCXg=j^BqBl;$1oXaUx7l`Z&0z&pwc2Mrlu)5w2f52f?G&E=Yfbv
z%R31-W`wOxr?vW4Jcg*A=%@^QnDuBVrma|)>2APiRz-ICT+w#fGuKHtOI_PTRSL8D
z)|qs3Sz(FyL8kD`SRRX{Bmv3yQ~8hBH`XIvJJD`U(!9y4YB+&-NzYri)cUp_XEGR_
zr?p_y=X1piyA1};_SOo_4@Dqa{o(bSP=1lpNd-@|a#&g2wj_h5+>L%Fdx$T66)#;n
zOJ_|(suwS}aDRZ($DP7GHfEgV<u+Jbe1}?n6yj1P>C15X7nuxhf_mg>z<;g+8MP=y
zr+7rJT*M{vA)I}dqSG4DSjD=vks^irwlvA1%hQQB(sLRav4l<(3X|mSWn6_S3gdZK
z$xy?g(@>pkoLWJ8{B?DypH2mGEIA!_#E_1Gh;dY;n;dTj&8M+O5SGb6r}$7vzd}q@
zbRrxtEKS1g3r|50RGg{=O)%3%DZBtzr;w+swj9o8pQ?B*PbNYf%H!p*dQHoHHZk8H
zgQx7!qGHZ>8dwTjJ8_0MqA=gIElo1^OzO!*<I19bs1}h7wTH3_n9YQyn7`zh9Xa%9
z2pjhBAj4;ps*+ENLZ%=uLZ+VM*m2(<>m8@eB231#lw4m&oV+k|r@N>}z@=IfARcn#
z*7;3H4O&o8BJ<KE(O3yi=*%*kR$vbpv1F30!rv`6Z;Asv&QvTYb0ScJ=kKm`)*|0U
zs+S8=5tUCB!nxpUF7+NzhC2Kw)SN@<chTiST_~5QB7+cMJ}56_HoH6)9W{TjMmpjJ
z(Jr$(e_ue>AYpnwq~=iyoAT|;oK1c2^b?o7N_zvq$=}|Ya5ho;HIXja@GAvQtm}EW
zIv|@G+ht469<X9#4Wanf(WDGxn2>F$-6(hZvBVQt_W_I(0Uuvl5;JFhDs9h*I5p6#
zZ}v(@Vow?bGu(H~r@O!$i{@Wrc|ERAP@mEns6=rVS$sb_V+R+?$?0C}TyjlJ7GL#u
z7O_7!dVq1mIYQlDmhQ8ur?;}VuFXxR;&Cv;8sHivPQ@78$=HA0y7L%XvnGX=>qfm!
zj!O7xJbwP7N>Z9SA2ePx1_iJ(nyPi@T_YShPUXL$=K8dFiJ#Ppv_-P7yH7DLewccC
zmHVpclhRl6c-BY;e*)?Ic-7eV26;~74>uNHXie)PH=+Q6{nV$&mh@oM_+RdUwV|sB
z@+#>8TLp0L$+Us{1f<}Gbl2hL1nu_2vqAX=@%E#20oC?HzOi~iU=M_edx)iY1yYf$
zCSZn1t|UYoF|JF1jn9e&atZlJ=a7hwLmMSw5sr@Qj`NOT9ucuimyC@XWniFPdz=Ym
z6uWEW?H28pOrBG8<k%Fo&U2orc+h^6ThHk(=+1vX0bu9LE|}hX<iyM$KHWY!dqng|
z{t9wN(I*zGg&eOTxWIPiY!9U{##WnLu7S0LZ_nHqyw>5rII5TqRt>+@i>@DDk-G$O
z&u&~HzhH2V?-=6N#j2;0x`)u7tUg@6M|%<L&aysCf6??r@6NV9g6$6C9?IUCzBPWq
zc_qo-slH!+A^FDoPVh3r2x34-S4P>Qvtn9C-=eo-?6UgkDMjOA3W^M_RRS+Wy?6Sn
zsk~*C>uMR$hnP}I7YrvT6&xQj$s`UH&>Jv(!AEKutpsDxTNrePYa|dAzLwlnGxx(-
zjIVnTg_D}jB|<Hs2>A&c`0KcZ@8JM{N5Q-6NX~^EPU!tvD$Rn7@Ex~HF{0aK51G{+
zgQiEwt%MZ^sTnSSCroZDX!41yHunk~S}HPO;?M{ua>k||Ul7vdtL3xs)PvTM(ohjf
z{^OP?l0e)(XSq_y50&r>`aiWE5_+-;7&ric84Lgb`u|DmF)=YP{Fl_LPVux;T1M~d
zz0LY$d%dxCVXdl@v0o>G4uO~kHX2Lf$UGvkf=J<N!p1fc6O#KRVrHf%+ah8e&rk<7
zaH=b$7aG&c=7?bs{4P`yfT%7;_y}!TobZcQ+=oNVoC~7w;6A-M369T?bv(%#<=%b$
z?z!!{*^ULcL$w1Q8g)NUx#$Ccg4p%{<+&c<k|$@aoqzIr^WB>+nj%}@8mBgAtyOpn
zV=g5HJYqYBO|bBKM&?s8E4?p|0<%@lNhn*7(zPw{XlXyk0pRU>zr86ZhYet&b8wLT
z9s~1}Ut8ryv3)vyDmCJzx3{s)%s=wM7hEGy(l~PC6Uy)1E608}<6?Yn&n8oT`CeYM
zw{3chVT}U&z~S5et}Bi2MAkv<CG(w#4(UUZ*nhc^_nQI7=N8TW+Os(IALGocerXD-
z&hp{AHfSmtTs)bjhC0e(a3~0{YEtKq6hn|`JmQh<@a=@pLPbj{*>DiXt2-cgTGN_a
z@Y=815}-#yeuR%%xofy2^S20Rc6EMk`bB&i)@cWr_$02qiB@WL&-iu^?nN+KF+oy&
zvl2tU{COHbjQo9@J4AdYZvSCat(uZhG4{HgNBxce-6<5k*&C+(Sv3C4q){y@riK%g
zg;}uSrCrzDnYOOzrB1@bjaVw{blc9r;hlQP_GYts6|At0e>pl!DS&v?-dP|VvxL5N
z8LKWY&h#R2Gu-r^Rod=3+1va0BZD(05$9;Q`5o9^k6j5SeEF1p+*zw^!|lm-1?vJ^
z;@K@Z?a8vtBJ3&XrdfI%m%fI5mHb9$sm#S)y-r*D5dcoMx!Y^z=B{Gm{281|x{8Wn
z>$T4_Ixfm7K+<N2-lL{09^y+^+D>#CrjE|Sxn(T!as!R{ot1SS2Y&Q?y-Gn5O4Y^U
zY;>IT=|yIg(zCNP*Lt7u<M+)eHC^={lz4vj@&?d&w9J#q*Fmc_I8GW+l$N;p#!-8G
zl(_3xw*6UQ9^y8Iepp|@!vCXwU!v1E$iS(Vj`&#a_H}69Q2K50z8gX%2AA{lkS4tt
z#kb$1yWuWH0Sn0xISR-HM}>GqaS~VEO`TD?PMD6E7|_L3JGbV%P*?DRZ<|0xY`79R
zePFQt@4mBe9Qnj{dxdm)TAj(7Qj@{7)JRD_X0)iI&_<mMH#F5uC}HGQ=^qG*dOD7v
zZ#`7e0?E~7F(aGfY(7KAe;L@)P9q;FAIo>*F&lkmImakh|2>MCb}^D`)j;|kNq0s$
z3VoQJKz<<Z83ZU@xZ>xtEsq_=ig+0z`rc2*H+Vz5q$&+1HYpzBiQv1-W<+e;XLRj3
zCr49T;bz%*o6e_=zPfW`vD`Z%-`(*x+#ZxwqMlKEcr&}E=X}_tREgwT;B|?qecbf2
zHGMchy~Qmgweq6+3s84!;rG_ur+FApc2%{jK}!F6cdLpf*+DwALjovAis-sFRSz@U
z>#kOyfZ&RTNXmXSCUH?!XFB5_64HK=qmF2mqs_3G0jOaYh?Gstsj9HByEm{f9uGQx
z&N@I9=Q6FcdnpXxgHAl#MUkHJ6M9rDJ+?YE98K$Q%ryg}23U!Qx?=bHuusFoOI(Le
zvCp#x#<>?N2mS0NkD(9O#K*}6JKG;Q2Q9k)FFW>uCDj9v8N}V=>Vm@^*xhG{>QjEh
zf=4geqekn4nHpM7i?+1KJ~0GD(FeI5k@(`V8MfH+=k3GYm#zPUJJ@Y@sQ3oM6A6A#
z%oXJQhJiEKdJmE_z|R$Ud+>J_cMlY6WRfjF_1+Okh=ju)5w|@VL=0@4s8Sq9U2-Mf
ztHB>B4naX=V!Zpvry-h43<sYVzxn92C|<27dPt1a-5-mfHi31V-XZHNBn$s^EO$Kg
z2;n_V3qLpBH=bOgJhEg?cu6+UiFi8Sb;0>*vnecPZn`OAN3?Z5o9j1iWnRQ$vGg3!
zBd$lt^IU&JRJYJ};n0cC3v2i}Nz9&<KBcVmlU3$RQA}P0R(Xlfaf2aOADQ?^?uTyT
z?nCOmY+w{=XQkcdpqip69v)q(v~+qIP~PIqp$K7RSTv2j`n-y*_-g4Psw%@MeC3IA
z{XPj7&qmSFtdYly7!e)OJ%1j=dP6pPw9ql)Xeyxp+mYRBI9ya(V(cqb4&H%4fq-BR
z+nv;)fHCE1Vs9g&@Kh)>3z7BgH+E2jS)xoztLudN;DA~^MO#S<VLrQc)mT_Qt*RoS
zN<rEHT6}5}dTkFW+c6B99A3pFC#VWvLfyH6gtI!mhvKq<q6_K6Yg<cCF7UT7k{v<C
zd7p8<KdyOwXX~RQMT&U*UO@#!*?@~6d=`R2MmHW&X-4*AW)!w!p-A)~TB4m;FrJu1
zNc-S+;$BQFY?{xEV6tJ3cwpl72lju0wfE!~OyZx1lJjq%{C|K|L{>(K@IR?asi&uB
zpr`jn+jkf0PcKyz0ti@uRtId7_lE}z48<A@A1q`;0t^x?<cp{d1~crf`z$sf49piA
zm{JOuFx<~Sew((Li=mec6X1WI%yK{q&GVmIr1M|)4kH8of7?6VX}(sP!`OYjuCG?T
zZKj{Z)a#C!B(&s3*D3j@9Yv7Q2&Lr$lmlgdGa0G{XJIWWtNrBV=?_J75@+oDtYNd&
zDDsk`^Xace{~~}&XXso~K@Lz`eI*Ly)8sd8R4gkKiwSGodd|+o{s44XY-Zo=Y`@<0
zytdzVy1q6mf&j$yaru3rPubdK`zyrx4Z!XBVx&PLu-00Zox?=y;KKmMT`H7T>TXUo
z#Kj5V%@%K5T+ZQ8grBQI0h*b0yx{6tKCH4xl1t&snGlUAJ9#y~PzvYPpvST#H5-`U
z^p}t<Ak=bL8UuE<g>+r6x$*EiG}sn+n%49uW8>ylRdC!1|GXJZ?o=e2#%5FWO9yq~
zqmp?kb!ati<u0VXyYaB{<lOwbi3)jX7-%GNprP^+CL3VL$#dKRh%coY3#6h2@K>xP
zA)#baO3s;T9oE6sw7H*7*W2MS?vnP%$C#VFqM8ZHrxo|xAN7uG?Zk7IMgdZA5+N7S
zP2dOqMykgmmU=X)a2SE5TO@#2miCILhF?%Cq_EL_cmDk^d{PNmP0Yza)J-(cPui12
z?mFqZ1a-F03T4_tf1VFpegH67b`}!Fr|J@n_S*EkEr>ypGAF_#vCEITG6euwceXH7
znUu+C2j7tq8%ET!c}<*VgjLqd?nF4g#B^p^*Qx|ZBxxW2ror-2{ed?tYx_DLhYYJz
zi+wf;<t0&E|M#upQ}b_Wgi<Z@Rm0GOrc7WC7>P~*oxjehpWd#=XDK8))0f60SB0W*
z01&_{*5{~aOFZCBTwHi&H<Sptx6{Q>Pkfi;GZ-mHMLf&^QKG3daMWyJ;?YKaTWlgb
z$(3GPXbo6sz>a++cQ&Z7z?{HWL7p95%n9^kWauLo53){@NJ-&c-mqBrnOv8db~UMo
z4mTTYXbZ7AY#Cy7=q*P*Jj}?*);1dp$2&XvE#p}}2J~bTdZON>`nY*~--|hUAGT)n
zZn@L^9*Escm4m>Dnb%!#aMzzu=<0sB(PRw9sde`#1cAr$blC}6vJ}L6fKm4|<*mSO
zw;o3B%*#~$?IxO`DrBJ0NZS0M!L$63l#IO7R9UaOC`id`H(PU!OHh)6gL9aDshh@N
zn6TuuTB$biZ`SXb-cXKbPZ(cfA{k8}4Fpb~Wnqp9J>1t5kDYIC@AHtWa{&cozzn>|
z=SHhjl>^~MJTiYPpU-;jYN>=X2M4?1ax_yNwlk{Irfjf*FuAgB4m*i|=5uB-x*Ngp
zGwN<EkG^izkX3<&FR51ObiPTyT2a@5%NWt>$7sc2%VDl^JHwXFy{!^iVPVEV-&`p6
zbsA#q8dyw~5giCn##vBozYdzzwyQ@`->gt9e5HAOeW&Ysmgn%o8qAyicp1t@b?K_9
z;_s;NKRTI8yh!Qe>jhF$4oQC&VzcozE#9<Np+@D%gp}*2Xnsx5a#>zkBu>14!Du#H
z6`ik1p>OT(UUZ!An2kVEQ?_aBSSq7YW5m7N&m+x|xs12-O6P4>kBug=S_uqT9yU;6
zSy+oK%kiJGT9Gfj9LVoi4Isz6;8WN|F<)y~t|f}7!i1_a8GpIKx={@qsgqsq9Ch!W
zdN7$;+ewqpGqkoAw(pH#oTQTojenN5j9iw}v)<Dh3^W34z~PLp5-nBBv|0(vB}SMk
z2kX}es)DW~=W;7z&7IY4%X*F<9|f1C(gn9Nh^2+IyL!TWye~*>Yk_~YL=(-^PM!y{
zJaxpWQN-)g(T8ym5jb8>lw8>vGp)ZE+gLfLuclUCuJf1%ukHY{lv_()Jxh-*Rim_C
z0qd2Nkt<a&g8fJw)b{7@j-q#9w{%<ztU9QkJ>{SoZtNmZVw|?v_*BNU9*0_Kj?4~7
ze(;d43o%w!)|=iKPCS^3K(EkKj&{Cp`NP%EAQImkSh<1m)nc_m!u`09R7r_dduPJg
zt;60=qms>BeG%3BX8m3}aREHLXKJQe;h+p&;*kp7*+HT?azE8T3oIuPPcb=kT%~=L
zz+{wcp&9R7g{*E&w<($(+}USxJhqVmUj<h#B39SpxJ*_jGI9aK?MS3<WDWg_Z@HjZ
zPlQiDy=&N=BwwnoO_OSv@%$uVyWzDdMtBLiRhyt;+PFe(JM>M#DahZyVTikIGGtny
zJ+96AY`e-=YiBd{N{4n9|FrjaKjVsOtG)|bJ$uA+W@X<GU2Nr2B+bucq&-I)sLtHm
zWcEA;g_|)2{f`4z<5P_%+@wOKq5><lit}4vkN)>wNwqEZ_v&ElPctrX!-lEK;ePdO
zZcuK}X#b-I)GVO*b_t=S;%JDOuen1bBT^sd%QJre1;8|@0i0Js&L>e&)z$V_9OX#?
z)uwZtL-By=Ck^|m*zQn-_B*653%8B3a?R99Mm#f%!g_<P_@vR{4bSb^&fR+?>Vs*=
zt4M536bmaCk)(BJQN?`FYO<xkE^)SZ)&2WmW`HNd0S%igzOO^AH~Lez(}n3=k}cS*
z4{lEFPReVeJRV^uTvW3vDej|j;aTTZ^DPk6+krhClDEL7b7X*`7CK3USEKEKx#$AB
zCdVP-0jl0EmtH-2ywzvW3$_<BH{<^0_r&>M1fP|p+G=E@7lt|XHX^p>a)d>ba8s}A
z$~qPZ-A@M;&>D!<5s50xi;#Zwj}Ut5;p6zKNvenvDL2R*muf~GoSJV`fX|bhBM<VQ
zTmJ)*mjPHg$X$O9rgH~1$Vxrttv{}P+jThGL(^vmJV4xcNMArYeyV$|cbspCU4XtJ
zz;}N*R&)D!_Z@+Tq;2q)k4PT07x+}-osUF~2*cw<$7jd?JV-uJK7c=<GD!T$@ZgD#
zv$6C4@bi$Kk{3Igp=<M@&KEQBsV<;&MC{1i7V(y3o&hsS7&hgWoHaV(dMEerQ-A#N
z&W)KTd@}qXA8C9daI9Bo@mp>H=uB>||MTMQ0=GGIW4gJ9NHycqV7k_L#r{IzncO|H
zV*tLkd1ZSg=n{~vf4W`-l0cO#QK3Zct*Jp$oune^Dt1}aN$(>5Dm!{cT(22nxJBKK
z_pR|UUG*kv-kUV?mh%+vB*AfO$KLg4S^m6jUj9-o;2uSE%s%uG=ga4jk(MusJy-j;
zWY0-~)KPJUO*u>;8_CzePm0|cp*6d0sD1=;L?A{MOVG$Fu{?91taDh?j8G?n+C{ow
zi%ZyHQ<gSq-5V;yo@Q^zycIbCZQQ<VaVEJy>!=_)5K|5n$wMOTZV&I}Yi-wZ_M}Gx
z$&!HJUVWjwIWOzs;A+R5z2W$=D9Ww$O6bk15)w9z60eEVbUe5kX~vp@Ha*lGa$-xV
z3gvU2p-46FsrSB~p4Nk$fqalOC9XMYykU}b8lT5vQs_xvp{!OeMe>N<Av|-Oc<M5P
zaodz6MO%TgyCF0U7O}@^M9XH0A(@NuP}_#ngYIClKhhcB9$ErRcGxpeK_w!E47r8E
zER`!E^dq99j)kzhA*fTuVa+&I@u;l@fdsO5x+ThWL?U%<YI^G}u#Y;;v^8v==RP%9
znrMYCbPB(0HU@yL@nFxaAMqFLf0MJUk->fc9IQLo|8TGv>DlQ1)4@vhwL*OTSFC&u
zy}r#(Ji*$Ea|WD2O${=GZn|87F+Q^Tb7GQh$DwpTx@MK+;*==o$1gZJmYwZ~UEI%a
z07P9V-Vt7tQ2~1`I?tjnDnH(#Y$RauDp;v7;74yQ&DlXh7XEr;g$Gi$HuO31`u)7~
z>iyMo+vA!Fn8eGE&i4b{mC|_|`soMkZ_>tk0QhtFYhBgavO^g4et=lw#)a0Dx&FJY
z!R>IALhq8=LY0p1nubuK2#-hM2Q=_v^!s+bJRacT55xW8>5IE^>LOF!wYIbiFbCl^
zy>R|DEJc+<*gjIuoych_u@xsd(?6+~k=I5(Yl3|kAi2dBd#Y43uYeGmqfoAp$@5h%
zL%gv{s&Ub%?5S^oHCBu`=LFLa8QSngwC(=)n&8gQu(tAgHs;WPcc~wIE*_g3$9-TI
zcCSK=ToV)q9YBB2pAQvvUX3ehDwwlVXreA1!NwcJ$p`_-$r~qeYgb&D3bjQ^kT>CY
zAWstoGQL35ZKBv5vOxgQ4Ig^muR4o>&?ostD7()BO);~)5uDPzy|Jw3_vYd(UqaAt
zb8<Nq8BM}Y=Jnn$=O_YU6G4O3j5s|Kv*BnF2Hk(pMT*wGqAW1Q`I4s1Lg~>W+t#6C
zQ>j27@yVaeOe^_cO@dQKxCG!3l;no)yXBp}_e{*6>QV06pnw>pI7Q3I0=C*NEw4|h
zCZq1D`Pwx0`sehnMZ5GeHOtGkx^qL@Wj#sz&tgvG=!?{o3iH+1;ifXI^=-_^>*p?7
z*zB@7f^513$=BseoUO{6+cY?LeQmRLIA7Wd!7v~6p)o8Tv+G2KdikZw<Dh_ER^0j4
z1fh!Z1La~(#SJrPNj1JME`$AIoEML8^)wRNxet-U9B)H+>r3f!?dNJovyJ>I-Lv}2
zk3^B#e3X;XVq82;ZS<|`#AfWwGPkoncwBlE{T4b3;QWeu>GRNmxxbXBC2IMfL<WP<
z<<gAk4xc@s*T|EY5(o9SWivI&vbaAl`dK_5f<9f;LJKOWh}I!RT?7`)!$A#1wOacx
zu_KZy!w!%*GT@p?q)xeGRpOc|hrP2*GUe?>lnB$r+r-H%i5)gIH$PBQYR)rb?j~-0
zMljNzK6-(b4|{Kbix4JZ2_`x9AOy^?PyCrRqzMahMZ$dTRY}q{P@yZ7L#S7ZjcBFH
zXrx9NCW&Zc{;FRRXz5<!Jy*9jziER;*>I(-U`aNJ=}JZ#r?%><>q)b-Go~L?R@&yE
z9x!C^QHe~H<k=V}^1D}1^Kp41L<WrZ#JRacS{DA|MiN*NqE3JrRZz~!@EX_M7tlEv
zc4-?Lf<==JX#>_I(vXMbNPTSLHowH7<4>WQEERzb>rV%18_H{)63VS(UL_0ZmBpwX
z{!<k4Q>4UrpKT?_qhR8VZgDr#Mgd9=_=(=Q4$YZ(iQ=IK<e}oOX=JB8vK7K5)c6Ta
zRJB1;9r@(pm{NqRX$9qHaaI-SWf@)6iCki(bTXU(0uoC-w?Gc;4E{)X+XKSWLPP^4
zrjb&6iR)}T3lDaY{@-%$0_D+87BAao7xt%K8ysO$`i+sL0}(bsUP+m9)~9Z@zHB-H
z>^XP6H6;omRu}afY7AI6)@f(nL*w^liHC^Ym0bQHOUaULR%(y{le3^ldAlYRGLy+k
z2nbVltk+lMM{QHv93$h17qA4rE(R`LCjhk{U4JAxdu-32qDUWMnPsa)9^E%kFj~`3
z+#GBmb3n_tf3&)aN_@hZ>ouewX>~+OG89z|4{KUkZ#g1O`(MPGaAyM+GhL(Sy*=}J
zc-TStQo9X1VZGc=B<Nsr-+p3VY4H_(;$PY_TX;Wp0v&hmW4uIB${xEGYjYh~HCiDg
zGvv4^u0u4uG}3X>UZ=Vi5${XfHLm7@8x3?mYtl~CcZQr0C%O$8Y!^Eko7m;a8K!%8
zW~PDiaVLwmf?qrTI;fJdLhH)urg{#6u%tjs+;JZQmWALg@nLg;z}8_r;(=W5Pu2nE
z1WnID?FL}ifx8|66y;%h?9*Wdqwb5^0m&S6?wPwG&J5`8VM+BFyW#Q-w9@k<HKb7y
zG8g4|rFi*Qky0BWzH_)|a0#}=UmLNW<3T16fRF1h$m$S`j#nO;9-$r)jVI_okg!Ys
zNbL}(j`fZqGe|!yNl%)AY711JJ7@@Ao(Za{EH*c#i=2~S6l$Kcd{}>AF`xTv2*S-5
zI{D$0)-L4EAwH!(sWOR*o}+)Dd{c7E(k_aB;Bp8)M$w0pThVJy;27na<Qhs}(Z3M4
z_;ZgRT%osQdWRCP0j^B;On$7xt;Md-u3KKQTBUXO?-<<HJ^m9pxL1NK!w*__3_AU(
zdg?Q(52EiHJ^r>wy2tiEOuG}k<E@XUZNrRTo^Qi(y(m9jgb7Mzwa>gdcgm57tnp!?
zZuN8rB`&fAScWrpN(Kn(YG^YaWvHg0<ouNbWqkyQ;T?Qz+_W!sx?LO1sYxi#+Gdfw
zb()~oo=ewFT6+#m5|M=ohogs2UBa?7Mtsy#?6r&}ShNj;c7<ZA-RqVer_o}o&Neuy
z+0PPU_$0+^w2oh%S?vL+wSu?(E8a7_$1+G-t7m0Y;xiO%vBN8fN_i->W_z#Muf6|M
z68M^FIwb#-1Ze*y3FzrqSpQQJq<C9liT<ztrLFC)4};t4**z3ibz9aO^m)Cg%?;`L
z+ZjtonT-<+EV4N;R5BzYAs!G0gz#0%()wzq9Y@15KNcBsq_;vbv1A40B)0l6^0^`T
z$|eDeS+<#G1?3u8{CW(pu60gM8LW(ej~o-1=0}qgR@<E^O;kA@P-MJcnic)s+I%E5
zIkACIYWr8;`k3I4Cpc_<c^H$xN532RU>-TR?krrLm-*hemM-h`sLk8OF~eb0Os3iq
z?0bp)j*z2zDRu7H<pO&>yi`hGQaaXbz%jp$#w$6=9`{R6Q(7lxR^!sf^vCyx``3`z
z=_6~+8O6~)5>*&gsDRPgSyp4o<sCIM5FxIUSRGMeB$8(}rAl(O_*G05?AsA_yeQ$*
ztGjnCd+Kg(mMo7=?}`>gypQ2LIx<xz<S;0UW{&~xxr)+C<!%u{$kducmkiGPw=`&w
z)#>nWbqx^mn(hJ}y3>zXGmKTlkwSbq*v7)|)GW<FXZq~`+`g!71yDMSN~v~NR+Nvk
zEY;9D-g4=DUjvpbEa^;Va6`FQdm03+rZ4~syo%Ujh2?IK4Y^C4C^CHEeaLY`bf+s-
ztsCG{mV4cPN7JAe%AT-++78U-eKD(Se=e6MO9pG?uSA6)lIee*i8k#6OfM6HvTg)F
z#l&zJZ6H?#{1kp{#)37sHO(Dg!051_v7KuG3(gkD^T9Rv=EW^{0z0EO!{^o@V|zBL
zrw-UreuC-b)BJX^vKm~-YLW`G4f|s~G8}HT`NN=GL8m8D!SX9^YXc<|mql1(Hy<lb
z*#?2TOK?w3Ma>cX{sW`M^Eq-ZS3YE=uqtcD7@~5a?6qJ{-u1l@;Z}1vGrf|n2BI&s
zi7iyBWvg;YR+~OaVP@YRO7jc3mmFiFIq)T|uZQJY9auBoO;gW!tHapEE%;fPOwcBU
z=)f@tOi=u2hp2}cUn*CNuF!H%JG6~bwJPC2SXdgJtmawnwCfYL#Hu?NyzsSz-C(Lf
zBp~L?)4kY`{RRT0w7fuu9QGjHhhbqtsPvVh*D5O))AM5+uaY|E%IL`FSHzLODCwW-
zPD@YjKCnYd#p{dJ3hC8DNT~}qkv8N<H?QLrNKP;tCE9j0gcJqyN0!C;&N<%h1>VZ(
znS@2+bct9}3Z*0SvqRi((g!wB9Nq_|A@{AO!+|1|(t-Gr?|3(!Twh0W*^C#a)*4xW
zsr2xL!1r}G2JyC=5Vr<mU-%&PBl_4jm#DING}U<0w~>%>7DpU+1&`V&+#~rm13fNL
zFLKGUZx*#PTpQ|-&^DPO0-0>6GjdL8cT@Y`gQUnkW3D1m^X(WeU=tuXd+S`wgh=W!
zLZ>ZS{WVY=ORZ-&tMNtJpc;)@gl@{?do(vQ%sA0RE~VC>7_M)J-i~aR!aiVfQUa{f
zULY&fz;^z7@_4h0zJ_m!$gYKs9-Oc+5|!!7-3v()@@Qh_qxjF{HSQ=bIel*Suz4bm
zFD>OIpZp3AVj)*;S1SD5T+(TeXbWNj8jxjdcvm_fk`NnK>r!b+vwnwa9V;u;0$v&x
z{MZuVi$Q)`A0sZ;Abar@y*3Bg&*(bxCUtQ=F2r~TKbDxLbeadX<@_+z*>2;{VqXc(
z${&y=+_hiZd9)d}3k#`mM(_8Al$0%O&C`}sN6ta@1nu<6BamtymF2@H?KP6w<mX
z!S$4iUfEozD|O1Do%4p&@u%RDD=)Uh%<sq8)vZ@XuG`OC-&0|(+w|6+-WM>>Yjw?c
zNmtgo?_UT2_LuMy2SY(TM#s0W_3noq5@SlwqFke&2b&EnC%|+ZU5`-eqM)^6S?Kpk
zz}t;N=vMsTh)L?<WYhy@1+-^fiT+^B<n^64)%|kKoo#Zdwz0#}ui%1T*Br~R-wl#m
z)5k#|F@T8lvNR%^d#|{t9;KQb;~!dlHZ@2fEpV_c2xd8G%RQ7fSRUYitiRm1dE>GQ
zvF&r+^Q;4Q=_jm1)mj7R^(Wm!y@TNb7u^G83-^secSGC>cBB&}gG_*E_pc&hP1F=)
zG$(b9r;V#kxJ|HGkOUk1i%w$xK={ChPAHqWn_xPQI|h<YG&)XsWP8NSAi0BgI>z-p
zkK7cXA|JRTbZLgzeCDws-Yaxlnt2ZVlv%cU_NOEACcp5>{)5Rogh$d>Hg*B^42fG<
zx3KYv+9TyBa%SFLByC`zDxund`O3tF(o$dC1@6-5wPE^-|HZl`*trp>B@?!BbWL_0
zv8-3WS99r<cG3PtbSd#)rwhj<)jXAFX13ue+Z}>Vzw{5e52fu%HP`s+J*PbH=<Olg
zz4hCxeK1I1@aaQJCFJRnsMpyc06G8hknA@R0MIUozS7@d@*zbHuLI0fm$jQwAL6&r
zO1{6!c@%kjw^4Ap2KSzGo=|Zq#R~(N+<4F+VQ`uOXfq1~r_p`gq_0-O_D29Xkn4;`
z>Uy*Tbz_C70<a#sfoy?l1^&UTM^AxN6A3ECWezO>kOrMul4H;N7;~iWT;#+P0l9qY
z7tG^?o5r#ioln@`@I?^?Zc1;Y;uCh!3#|^#S}libZ8g9DTO}*31zdOo6aawWUp4Fh
z*u28X%E<CxoG(U(wo+7n%5vPb-1V%ix<rGC|JDH0e3Qnj`<u6v;yqxL6p;aOfk6S1
zO{U1_0}5tUm}vb#*%p-xL6{Z>I7FuYCY8<>4{`u9@YimUFX<d&EN|y^!x>nFz(Z!I
z`*iEE_jIcT1~3m0$*)hk2V;$>2Z0w8EEaky^Rd?1R2_HI8%=BFS%x<6H6E&{I^g5_
zb`Bw0P7(NyjIpXa*HmXj*|<Ek8EZ1jW!@kgfDn+D*`*AEF0+<#gOFl*<9t}q_45Uk
zjp_9*H}V2-H@3#Mqj5WK)!Jh5E3!w`VsxWxvd@EvgC(gTEphGCh5x1_T{1b__DXEq
zXmk4^iu=J@advry9u#2Vp}w_4ml6n`K^fRl8P;hxl*BBMQL$kpGb&A9iQ;SlWRXa5
zL!)!Ej(Y}M({kT_%A^u@1YY9WzJw^l^SvsY!bu0+wdBcY+a14k&D7CI#mmmQ%uh3K
zYyg(Z9e|!D(^Vh8iaooNss{$!L8>vKrF319d&rcPH@+!#6y9sLm@Of%^;c`TzyJLm
zI;DvEcG<$&Ci-5w+b+Mq_x*$xCw4dY5Mx<`LvEd!#5Hk|=S}FOqepNU1zZV7vW23i
zYsbPTF$H-b;z>|uaR5d1DaP&Hvrw-4bSWc%ueAuv_3_$}_%dpkWX`>WR5oYt)whjc
zxtWu=zx_FCws63yR5#du)}-m?SB5-cqhh*MYW>Aw(pmc@yi>wLCE&o}c8}1J(pnkc
zt<y8XAnHg=4NEf~?cVZ&TPL=YY1~eo!<d}>T-PR`txI@3(c9;D<h;CwDwNrdTqFAM
z&lc<m|7zK;B)Au_;lza-w{!Y23Yj_`xkwEqWu)!oC92ucGZpQTW5=R76V#th!WIH?
zx);pam(kW~JN5ELB+3^D&;;&Ui)X8-`lsFQfeS}VdoJ<tel|Pf;d_Kc_=2b|-WDrU
z_gzn!O`}AF<mA7{lZV<sn(Vi+tlg^iKo|?RNG!tHTLB|cA0>sG&?uNC7ucga3RlV#
zYi_=RTStIDU+%oR;^*rY&(huWr3tU4`3vnkhv}TCBpbuB?^=dmRxnLnj%@>fV5^IX
zhDl9}t7|&SdZNWVG5z54zyuo;0k%1GWbCxdxgmcLhzchjRte34$_)=hTrzkp?Wk@O
z1v@|I5LcQyg46`bV*WG@4O|N9S;x+)?^H`J{{oCf#<h3i%z+=^!BfQn1?oZkK4bkk
zrwb8v<ztZoLG6NA?3?zbG8v#63uV8f=>nJ3C$0)%Py_cV3$nhWzY6HCgZtB`Y6sF2
zl6VK473??%p}No72FSYq2js835I2RH5aLT8DgB>BI&?+*zdX@{b|5hW^Jb$`S$^$j
z1E_bzUg+Cwz`H|0S)tJOkRJBzDE3stP+NYP_Ru~-%Wsf3gTQZ~I3t8=k<MzdrT0`n
zVZ8gGRzs9)QLA@wU(mMtn1GN(@*u(rt{1}gMkPN?aUqLl4su||i$WebCG(a~9MdI0
z8M2Y)=+y-Z8j_f1jLP#e8<M&6{2y68MTJU|y9?wTlBeekqb40P)K9E}Bn=QK;|1z4
zm*Y7GCM&tH`h*<1zI?#hG;OVq+JQQ_Tj;J;J9xO*=tM?cfdLcw00gOLY{R{u@gPWY
zM+otgMAIt5@r4z$0$ERa*rR*tW7o?NK&9y>s6zaj=`D;klstIQn~pI|mV4c+mZaG1
zTv1Yw<WA&>11<bX$}q<yfjPgwp_Gd%+_h|G<oQ)Qe;A@wZUvLY@y?y{tBk6_WD;{!
zse&F<yTN{b4Gld+h!Uori0ma!lE}gs7W1RNgnsEF3d&H0;vor6JC@quI_LJ}iEu)V
zjE1n!2X*CWLJP|JW|yd^DoG16iY;b8NdgDnz@cPSpDD`O5qlNocl(`paPx!^0?^Hu
z%@9cF4A721<>$)B%I&bx`kkai6UZt~rD_eibb>0%OGpjrD05I}lUQNHLFFIGDp>&j
zcUaK2+KC8&0RT+=gT?>(uNEdY#{X=}s8;g+M++q0)2-K!ol1-i1;hFM4V%E$cfiat
zOpdj@Ol$s?74fj#Lq;<xG%_QEfM%F$kw$0jQa(P5^}jEn7|(FMbRhGv1)1^){k#w(
z=K=Km5cpzo?zfic!SD!SuSYwcJh%V)D3L`0*q~10<Kr9kLNwLkaKkTg{4=einXX5G
zbi}rqR?HYhi$Txn{LVjYlt;+If9888EiAx7vH7}n&T987nbQJ9>J^x;{LPfpt&+($
zq+kWspUi3u)!+?#0T>Q)ri$tf_L>P?0h$5>r%P#IfY~rEA3}Pupg_1^+@%MtPbCTK
zPZh{Z5$~OyPt87-&h246Lb`5hG?F@cZ=G9Q)W4juOU~LJPSi_N8g~@{RIGZ*tYbso
z)kTEEns06MS}U^bkJ-A`lF4dZ{H;4KSrV}K?Oc~KWje0><*o($F+AtAGs1)qc-6AR
zAZjMdw5M&n%eyZkVDo0qLTWOUHFMx>lPn~e9rH^+w`%y3$)hSVHLX3+%2+Y<1ZCW=
z>>MnfdG!{z;c(`#xEZ}_uVjd|74mvactl~_CNFa14)j%aUhjqqxh+*%q;a|68$)M?
zrtzK2y>ARgTZ`+5FTvmBl&*9yuz$Kw%3VE^0~h#njYZ`<#yTtWYlfqeKO?go!h7=l
zPge|DIq?xRRdLg~)XuQ)Wa|GQ26dRI>~>oSUo58VJiU|C%a-}fgTUsMuIU!t-oJZ0
zQc>qS3B+zBxOaODEnGc>CUo=g*ugm-WBdC2d{!}?*j||N-ee!qJV{FtU*NFWW*$Xb
zItGFt05BShDk29>8_$dVg$itwk?l0o_LwcV7^U)ly)m=rP!P!ZC~1-eE?#jdQQ^JL
z#Edd;5!OY;3ETA^X;9u}(W1XQ*-0esSu+^Tm)pX^<yqNK2Aha&CE=jbedpf!Qzx@?
zL0*p&F*;feZ9z&4&~$P9r6(aU4iP|V)O>EvN>EKvJ<o2@%C~*^;ugq~3X{RRbOjfJ
zFfOFfGQFclR19_HU(HcVo8(mf3@L9;R<kzJ+EO;nXT#hgr})idJ31v8+|nM*Vi~%K
z0sX)Y%*@oDyPAQjc?3AQY73|KskQ6gFU&{*R{6Q>n7i28z0+&$!emyNH2Pd^rOCj3
zChK(4t+2yF+2Kv5O!t$W(!-^5c`)t$4C&K@3>>XwPVf8XipbYLn-}#|yR+}uul@ci
zlSuXMqkCTRqJM9oE$I9im0A%<><Qa$$MxE5jB^TR*bw$Rea^IHhO4(Sn(i6x7%1$t
zGM-TB60=`Jr@M?HRamBo|9P>$aO+r&g5x|f4fCoEei(w`KlKX)&4!mti1aYs2{)mK
zkt7JJG+<Tc&;B>){SJmI$oLMSDkxPSwhOA3A7sam<t&K04!Gl8^p(d8D0eWmF89}T
zw_pD)*mf894mB&p@s5^3$sTJb#?^qQ!yW<Uuv;x;u@1;|&+6&m5N+uFjfp1`+8&)|
zR75M<l0FKv9(l7Kk@e8!YDDJ?fVW@vo^dPkll^)B^$iiH-;gcH_duL0@OMwxplHF`
zsF0H^R!fObxM-1^DH*5eoGFp(sL=fhggVc(+&^V5@?Sc#r~$Qzxg?WGE^L00uk(@C
zlV^MO7j`bzDJW*%)+s<{L7hVu6`h{3u^!TjVA2${DrkEaNAK7Q?6HnL3+PJxg-LTj
z#~|7YR&#QtkuI{1RUK2Z!P<&+z!-x*!(d`6^~jP{d3*{Xlr$ZQDL#aPK1q&&2-4Vw
zK0o~4Cw%NoiXhx*W_+sz$~MqQW?-fvA;OSAoS7|s6dEL4GY#G}t`DiKZ)ohW9fZ9_
zs;j;w2!sGbjQ;L83v1+WI7ac*g`pTm^mJSZhWYvylhT}5IRl*>TaHA!Sn_RJSvY!^
z{$XQ8g~5bLF*>td4mnuQ_!?r*#qa%E+CW%t*2t;~`)H#{1CgZ^fL%00ijlesk-AC3
zRI#Op7XRwq9$A;g2=r;H2nwZ%=SYpQywD*Bee{F?VI-9>*RK;39pg^F)m0mXm{LGS
zl~#(wX(gKvAp<)4G8zgA4Wo&Xc#2d28><HR&cK^BiE>JC4mrtB%RS0I`NASyBJymc
zX~kV3>kTZap|JFj-!bq1v??77Y}ji5r7&p_|3M`NMmCoJq*AsrtelcE63=PZw|gYS
zB|(QAFtinsN?Tna0YeLQtZ^&8pqg|d2?)OAFh=&AxIVZVh-S#~Xf8FioYR2a#Q4OQ
zxPso)oIIwq;{$lSh^fGcKooxKrwb|*h3Ums`{{P>ZPsnh<Bj_)q!dj6uiq!l;?LIQ
z9ykcZ;vTQ0lx0)%{`}vaLgFgLFZ<n$&CUYPAoNpS3md}dVG)w`QVMOca$#%>n`Zt2
zGQwjB!k#_H7`;Ho#>hh|urTl9+e>8KW&t3QXB6ByXR{4jRGZG#{_@++d=MDXz@?r*
ziA4*U?-b&2b+Z_;&E~Ck%XDpDei9Ipr|*rOzd2(7$ZU4ZX0@<QbwW{+?GC(siJ*U#
zoIrfeYMaxn|E?m>>s`+I*-=vn(Vfc-JrA)vOkvAkJUC>+=MWx+wlgF%AGcraoy3!6
zP{8(+LkR<xfwD-d+R~}XqV+}M6$ipn--kV7<QMhuczd%>(PLod3n~&QU+-;3bu=cT
ztG2YOcP`5MjcTRxd^t$)_j6JnNC<ww(w`r<BR)Jndwf64YSmD9f6W{+&ZK)hR56iX
zr!8=iq3KrLdX-2(CpTZ2C1Q=Q%f%U2c^1M~aHg6~Oz6eTdB15KEIIqM{&@r*_txHc
zw2z^3Y-AQD=5zAVaWcu6Y<4!(5_hCK?1;xaa42?mVOc&oHN808<xJZ6eIV)li^HjU
zNfpT?ta14=Y-+Y2n1u&>sBw&>n4rD{;j#`=`Mq3((b(anC4susa`a&RPoZQyHdaWY
zrOFov*JU}+r~gT{l-x0@Bo;ATSa&2vK_Nlz^wv_Me{3l)g(0dut@zFBKP3b$HJW%|
z+C|1}mg$+sZ`)?+Dh(B>6E~!oAd*YO@sT1Hs#1j2I^C3lG-WPzQZ{l?v5H+1aGD{Y
zRi!(WphtR5)<!)<0J)}1{R%N(G=N||4YxN&3!V-{&yOMfdYC%t!w=Pa973Lh_-j?p
zDrvVxaQr7(kBncOrV|sA6is!~rLj@L7>hSykQ%c&G2<FcF)P)QDD+9*(=#FfyhlLq
zmXg6RaIYu|MwDol)%^g$(X0yb5Q^?N4WB*l>|&(`{W;G{bF-7h-s58VWwEkBAvw9C
z;C^_&CQ?6Lwi8O_)M-@eiZ#u^ck-jX&aOnKwpx47;pycd8RR^;hsW>YTka}m!*R4A
ziP~0O*h??lMRIc@aNWQiv?KP-VjX}mnWy5dyO|1~1(g!17z`H*7tb0lQ~XC^60Qf3
zkPP$7`&D25^Rvw;YdW;RcaUM;t?6OExZY-y7vMJ(FVY0&u{y+V1QB%p4oOml>vKaU
zG@Z&^L@bzT%r6xW8ik*SD%e;Kz_x$04lJVY4`v?5ML+1~n&dVpt|0VPFzp_I7cll6
z_W!~Up_ac*8)P>ffM6JzAkH^Ez-T^(AUzBrJqD>E)yN@})DV#uN+LbzA{}-$8*U>V
zChDPO8`AEOfL0_6)!?(5|E&S6W#*l?RUgS#bnYI{R%~b;^5&f;SGegNmd;S_9fpe`
z+|GdR-JhLd{w`S|2Mj@fBq2odqye%B1G1E-B)-Nmp+<9@>C)h&e|9Elbv^+_F;qnX
z$A;9V8TfSxcT*})X`oY5%%V7l@a`gUht#%HqKzUi?EK%*tSrn)P{&wDcr6&z$@BK|
zEhn0A$rFWk_AQ{7Kzq2--D~*tsZXpNUJbSwA~IpniFr7;BQ+6YtEs{ub9)j}_81$i
z2o?ufRe-@T?WQL#;-2(@&YNqVYtooCH7ErWYEXD;V;2S4#~AO7^~o;J9PjY6>}}h0
zRO%dnql4<#w?zL`(F@Cl`1sM<v4Jlhwd8%f$AV)W-YYI2DmW+=A1a@hBmF76B|HyQ
z=G*%ChFuKWneo7<BY`bL^!Q0`obDF}Ik&5IbTt)qsWZ5*-2aJy8AW=fK{x;a0sQ}P
zvFPdkJ1?0|x3wZ1b?)1}qB12nZlXL#a)+GXu!MdR^vjc^Yb&&Ca0}TSf{;U^UZ54%
zteQ|s1rZpCyvP`V93?i((o*7X=bN8+UIvP4vGdDg<LvJz19CG1N{}y8nFkBj&~=z(
z;70b}(^Qs;SuJGuZj_Y&l`-wKpP$i7Wo%^ReDvge+{xU31OfN~9Vt%w1vQLg!K8zN
zfq1*~MK$Rg>U52#V!ZWjC559g`1(aEt9%=!BR=B!eH&d5Zq0S#H{c>)3-$4t&;w0@
zv-=3FKxcQx1;YDT{$BVBy)wEBdf3w&8NBq$YTBpJ;?`)#EW`Fk{53rERe}5h4sd4-
z{cG6W#Upl~Bi!_eC5F5hD@rTBPN-#fa5?@Q$PVZ66*@5Iuh7^cc|A#@?iUdDw$9c}
zfp26~OnzygfIN?~^W|V>-SnV<Ax##)hm}P-kkcSgxPlM6jt_`jI*MP^aGg*ou?OVG
z8<bl++bOQ~I}-s?d+cC?$@7Kz(7D4l$IN@W`h}2Is*GZhFNtZ5=O9it@#&=Ehi}R0
zLj^<3E;@lSXQe2#m{n0DTtnK%FE)TQHD1R5q7Cx!3f3^m;1JC5GiAFeK~>e2q-)tP
z++Ih?I&fwzvWXy+r1{Q?edKyW`NMu^rZ-vK(nyGUGyF9S{Ka*G3qDIT5B^vSYJNn!
zo8Xgw=#cs7Q4;vL>)7b!?9!@rKkTsrsid-Gy}FhV)`cMS1$_xb)xM%VAHj?Ii0PWC
z@bor_<NId;kCNdexBZdhZ~Q<Lv1`TH??9z0$<S1=tCI0fo3aNhEN4$TVPtxTg<i%x
z3cOASn{6A6r^1)?aBf9)rcK3zO9s6|cK87r1w&f%cqCi4;ZOPC7dTP>YNfzEIQ4}t
zoz_jm5n?)%kEQ-EjPC5TcTB*mm5W#z)kCYai1(#SP1@`K#n(FqSMrA4-mz_SV%zq_
znAo;$XOiq_VoZ!lCeFmRF|lo%JA1!#-t*zq^L+S!>aMP?uCA`S>#lY6TE9iAzS?Jo
z`dUsny<0r3=2qVSfDv$hwyjUubIO8nNZ0(Xk(b?GkFu!vW|xPP^xElXXH(l|&P%M2
z81EDAmwNeXm%CmWr~1ilQ>Jk4C!AHfLWsk1=(1R38)*UJeSiack=+FhD=lpw#ANLZ
z%h-w~7dS!Xg>g`Q)e1~7KB;KFh89CimR>3x7Syt0$v$^gN$x$JC?vsS-HVX>{8PkO
z>JhiYP91Dpa8?<laTfq=a*cjBkj?XZA1I$Rq`^5fiG9US+38kNt7hn>FqAcsaT>ei
zz<|rjgDv03Ct<kjqz-99qG2M5(2E1oe1GHP`Zi<sGgapkefDNUYwE`Zx+bn^cW(f7
z0#DwCu`Eu6p+seDnu|eIu3?VH%qf&FzGZ3)9rf0)W3fuDaJtK&;H)!m@Z(NQZ6X%y
zK<cjJ)&1Gg)O{rVTB=d7Yj(=r)_0SfP^@2doGZlQpk#@{*VbEWCq~diY*t8iK<+hT
z)42JR7#O;w!RTDr+oqknbuX`mNAaMOn0SNVZyql)!%zkUWmz?L!vOLd{T1cw08{2>
z!7=GVm`-n{j@eOswr)KncB1;-6H=lJaVN1Wrg+?OMt(^LICA*K(tBXEYE0FRr+ULu
zA=VVPewrCpF%~6X2z3*$*0vW`${}3UMX>f@!~5}*D{jY<P>hLxHe4w)7gR!QFjjCc
zK+&rPyxHFvaZVikf*UPH{Lq=ZUA=Gfr7vnFW!brNi(ztF<6)WDh1+N2t+Vyo5&bpS
z?ho4skY6N@1_561D7_}&=l#6%>WsmK9&6^gI^(eoYYzNmyU5m51s+}s4f#I)M3;0F
z0?IHt&z`bQ70KJ|woAH2@UfOtjy~Xx5Dl*;fqWJ+H{P-N0gu0P0MBWmxv!=5`8D1t
z->v{vAV)BpiEn7AS-?5d2ko{M7c6+sb-07z4_qu0-mgHOcCaB2+Hi`lu{jq?SY9}(
zHFi8X=C_actm<)G81~|J=+Ti2#(%4clD%kbnrrj(-oI*h*wEW<YsW3~2XarjY_e7#
zXI3wL2UFemHsCD6)O6S_U~qts{IcBV4eUW&Coy;jQ%0~ys*APspx6MaW1nokCdz_{
zew_Q0ekqVvP#Mke9}@}*p`R(K0?t=j(wI(T!$-{bJ5s@ZtwvH(Qu=K<jlaiSkV-UM
zD8W>Wm~3)TBb8XxWzAN+uERC3Wr|DUkv1a)`hHcfv#VYkyzUN0!6!X6ub3WKF1gHJ
zR{nl?PTR*yY3m1>j>dOQQyThrn!U_*s=fXX7xQ$@ea9*o^uhn)7m2ZTgc(YlbPyx$
zI;$s{&IEVFoQ2yfWl96P<;lNBqnd1!zBvyAwXy_Oe79N_u)Qz~^KF@JoUTRuLwjpp
zFAkDjkfq+wzKb=}Kfgi7Ota+l%NUL*5H&;zO!zt70YnCkQtOzYX^_TdQwlUOShuyP
zs}q23spDi~trG^V$gNF^U$;s$e%$-B*dFcRdzM)|XsBrcM_O0<k4EOdDX#PX+HGo^
z;SyE*1N%E}=b<YLEa<_916B(KR!%I%dI`bWvft+7ps>fWBDOniXy8mrsKvj+cRcLG
zt%MY*g&<Z?-b3#k6u@c`O<Y5y;r40)GXsDsq;GY3ZglOrvY+G+8;e>%D;uW@BX2b>
zQ(N*AxxKNGtFwZ`n(t!d%YlJ@e}|uLC_;9RaC#dB2pPbqL=~yFI0If<mMy1u5jq(S
z*p?4jA&b&)tIfEr37rsF4<%rR4gN11N2!uEA%{Ne`EH>higzo<;R@Wz-?TyihHe(Y
zLdSHCqrKqI8rl<B?~&&0OiiH180|e*8QAh|dF#dM%`!NC%yc9-=luRg8pwkG)Y}*~
z;PLW0`}J+$B5&qE#|=*plK&m{^n>*H<a9$mTl0ea?IODn=iy)%xjiUYoIK&Z*+KP0
zDF1JB2%e$#b4Um4wnV4DsQQyd@T52)wOAZRMTpT|#D1^V)<KNGu!$?(UmeL{V4*wy
z6}ilZjm&xvnK%A`dhmINtkhjnLG%3Y^N&68QQPD4n9Eg)qk!S8g8r2`hyw@b4W(9J
z;3uk{oI=Ux!*d>W5c|=j3UXd`PWbO^iqS0*5Y;;a>wRaO$r^ZF7XFFm;$19`{Ii#}
zmrw2N&H~K;oK^7rT2T4&+BBw$yp8ezHH^LxY@HO6^aKMUmT?zjOBRcNH#u|BzZ<m+
zX23YhTaXCGyu6!rZ;Yrtw@Duj6|L3>qnz71+C0Dg1uMRhp0G5huolKn!8~jxh;XZ;
zw?XPPI(ANgc@_z$*Ljl2ZbK#)H9@^?hb~MYWkb6(e~#YK6nj<h$5(J>4%ISvZ1$D#
zux=qo{BzW`GglIf-#mV=s|v>6Y4TGA&!TAkt-~rk=ug`h%k(od;~=7!0Q=-2J%WF#
zI1eOU6+nqMZ9dYv8O-8_l!67O#I@ggomY=W_kQ&Gu?or;vawnZ_#9AYdCdJn_8@6o
zauC3O0$-ehe;eW4-`s?-viRDA>1gdQLXCEmN<I`saG>n}hy+Wmfq7bEfgWQacvm4=
zxd!soV9##-mrfw>b%^Ptd_jD7@4B+1=iRaJ{pfRuqE$T9df5GzwK<qgW3RLmtS-8H
z*zI37smiGHaIEb{_KWyV?%CwdW)Wmlj60<Ky&lD^_)|*kr~Jlv9YZiQpW_iDk$_gQ
z_Njgm0L^la4^LY5V+U=W$+!IArxY@yyE|qcDOe>w1q~BW?2hwGfHT;*I9(cCcaV_+
zCb_ry3r7Aq;%sm=$k<$EXp+=2O7hY>cd096^x4|5aekON2gW3BkhPrz!Vz5oP%4vz
zTBGm5OIZXdt?Tv<U&=6!)HKA7ThD!bc5V(^Dc3a*t$3PkOCop>Th_s~)t;Z^w}fBO
z-@ru3$3_d4+A>pODo4%;&bdgLag!V&JyF0gLGWp)Aei1Salf^KpTL$KDw=kWy|=9n
z2=;s7IP^&tivWe##{P5~Mjrz|PiKjVf(!RSizBVAH>x!}i`?R1ooX3Sh}FmZE0Obl
zashpC(Q}Bs5^ajm9vL|5;-Rgj;<ICa$7%DUHey=_<4z~zlC@V5tlJ3eR>qCz%@6|#
zd!mD=>QED-+lCMlMOKlA#57FbGD1!pT3@LCG7YQR{n<ZEN!V#vd4kdb%13^HEoOzE
z&Wb;8!Z3t^!feLE(oZ|TeX+n&P<G@DuWG=%w>l)bH`qK3r7AQ4If-!81LoU7VzX5G
zYJ>i$Vq$a&FeY4Z?6G)}GWg&S4JHp`ZdN$Ogr4M(Tu9d!v<EzUt$FX~{M4;Epdn{S
zZtkXTlLEpQCfybYgO{WO5JKKd?tKcL#s18zlB$`+9h7N)j6d$tk+*HDAgRE=O{3SY
zAUA;C=vhE?W@IQ}-?PKf9rYowy5uFI9=YlbQO>;jtKL}O!7Yq1VlRqG_)ZktAm1(n
z{UG_kgDa|W81XG_7b+O3bx&+>bdD-AFdTpp({|`~&veK)rZcWNM5i+zf5<k*H;$@7
z4HoZFZBbC<`lFds5~QCym%kXS`B9}kpT7hW|G>V2y|TLExr(O!)4R}9@hSd+ewFBr
z{_`))Ck$yB?<dYD%Fkled6N>8(q1W>vzrCRPtAAEPvZAhtvS9kgU0{@@K2C*MMq`Q
zS;745>B-aVg~?oqBDfKR8f4sCELI0@2W7r9y|+HDJgz+PJ$Zc=Jc)x-K>6DWU$6&b
zJ@-$r3smxyf#&-<*d|{CY3{W4zwXas)qUwn_hq@;8WN)=ihaQ%&9EH2<o<y5P7F%?
z6lAK`dk%2SXKBQJR(>Y+jzD}?z5KY8yUgzgXpYR90ReZ4Blv(if=ocw-RMYTgL#)D
zF#WEI65w?ZGZFyN_>z<lfI{&O>3oZUm)DT}IIFj|A6$1$yIz5-R7hQ1Bmkk&!ZFCQ
zbc|w7rV@>wkStJJ>JkHrV=+UpKZgMBx+?X&XU(HO)XlNJu~o9l?{i&N;J0_sy)UtC
z%b}+qM6t+~7%P#K5ixXJS@NIn06qk7YoRfBa7W>VsnuQVH#<6_n=zeW0#xRMr#39r
zh`;3#(Z#`+NyI#*{6ejuJ|`qyOo2FI`>GuOMMBP0Edgm`{gpP6MagI!J3Bq^jGr`x
z4vhR!6d_v8m3BrCs#-)yw4qoN8));6leHQ(-x1$Q=9rrWKnC&O^%2GF(<NmV0dc){
zzL(Ry!z~gor4yVBr4tOie($hgV?=wBVc=bzMt}TyPE3(BhuM`TKpLg~iRq=2lCQzR
zQHq|b`iy#W^sGppOjIn(UH%soOls8^y_&pTLF37?RyXnS@q?Dw@>M2vP<Lbbs<g7~
zF&OX_4Y~@==1W-;?Z+R?Z=A)$B?E3|s65m3QtkUzuB2<LrsiYO|2x(~FDQ2i_0Pjf
z^j}~W4t7qS|MIrfWS}}~uHc5ww!ho~NyPRsTIdNQEh&|wrXn?)fT2=T9oD7Af6UdK
zs@L<%+|}^4)EJ4F09~d?iRZL?6{*S;MPFNy!n8U(4b*wet<ya92Bgj-O|5o^?1f{i
z8}4Kej!v$6PJlL!lYat$*I<E@fD@2#D}*AZJe(Q`j*1|&tT7Ktk`O3{h3?1OENy4!
z|K;H5%{s%`JZ0RS-eu|=Q%f0xdA?7Fy)``*6GLh37P>dYp4h2uI0ef!3skp$;LjN2
z-1={gb9p$Or`wDYE!TJD;mGUWullvgY>?whL03b&h!9d>`Q6(KYHbMW>ewXDpf$o%
zw}<Etng-T2MuYTRwuosoQ1RnLsCDSdy^$6x;nr?Fk7x>8*<qT?O($y}koET=>1!z^
z8PcY$BZn+_U_0vyl}6qnM{fybR7=??*W-uGgDHl7i;8txH>jG0?qT*RQ;_+@G1;3R
z+_rT?QtT<yDPv6fv<UMqGGb}d=F~ZX^?HaqX3hNUnKe2fB$dBkBvW_Y)s~;bdwdK+
z<TP|doQvPO__TBK`7#n-Ok~DE+XQ*d_l)BoMSx7~@ARz<yS=D6s>WIVcMAdI7aLy$
z;u)U_^F<59O}hzub7u4KBM1WYsGH%muX^qJ_`%%8G7c-KC*qoSYDz8ky&aM~b@m>{
zr@MT)ydNqiPz96odG7WD1`HEYG1M<oe2_9ldkhIOke~&hm1fms9DWVPaii_c-DSQR
zr--ie0Zp+4{=vb6Fj5}G3|o&gRGT&<i?bf*7~H)kju@^-J@N-)aJFn)XP>~FA&GHN
zp^cYQ+q8go-|Es1n;^<lxz6*YJMls7N{^4^zr?smE6EF0QTSJnnVi$siEkN!1w$d%
zA>|@phc@JX)EnKYT!(b5wjQY&H;a@$OeA``URIN1(}AjB;I@JL@$XexaxKp>B7k9n
z=U>bm=``y#nE8tg(CD=&2?>Uz#5FmC?x4?+Soqx8QV8oPQEt_9+Q7_@4#LUL@QL~U
zqjwkbbU>WpzNReY<gl)q-RU{IcY-sM{qzfxn)a1W;zyv)@ZI%KeM9pG+k=F`=5IZs
z$4fszLPD02B1jg9mCPxWvizH)&y(U7h7TqNb@W`!8VUT)>wivQP2JYoGKb4}b{4LF
zIh+M@TZ*!X8p=7^8?G;<zM&XUm&lxp{9;0NX7X3HSfhjW6y4z<D?1UyX7<@sHn9KQ
zMHDa4kCmOMcvwi3xxpA85LdRZ>%WCEsSl!FD8Ff~XPUM;Q?RSFZT`N6HfP|ubi6RB
zaILOjrS3wYvc<-vlP>mwHQs@WpFj0de6jjla#u)n$AEIe#^Hn>@4|<!uChjOgRTx7
zF&wCDB|!Xho9!>uvO~hJld+$-CdBrPISI%{h?gW*(3T`Nqp*zn56eD6X*&k<RWHa?
znflHRRm}E=+J8n6#U*-(GXnO+W$R&$Sl<*gdDaa{U_>Vet}_pQzWB?gqP8mPi+H(D
zY4}gq5{wSMFdk60vuWceMxGz(77geI3w88YU1wrGk>GYs+_P9v|8N#xS0lXT%J9WF
zA7uiuqMNWq0G{DRGGW#6gW?+a>2R-rqhb_XJ`yed4+<Xo4_IPBdMaBP-bm+8S1Uvy
zs?bMR?1~>0(@uMvg!{nkGk(PQWBYM9Ft6KldJ}Vaj%tYT7%=vs7t)ed>b;9HZ^uxw
z7<4EA`jSzmqzS5{r3N1fi<Ay9jzKP191&k~8Nkq7l8>SJl6em}uR@E3Bf0h&ufp@V
zVxaY7+D2OY66^1g`l7S;$+V&LMknnNJq{?h!TOkC46vi1o8f@MLIrU+P`TV#Y6nqY
zl{X{*jmxiIsd^&CM!H|IH<NgD<FPvGF>~*@^ZOrOJ-WV=o6-eG>ikXW_QiJDGa?yc
zN3(z--{aqlmDf-Z)RWOpWxj{O#vZ4O8v2?~dvxg6m<tTmN@i?KTEw
(Patch may be truncated, please check the link at the top of this post.)