From 2fbffcbd60cfd3bfc8b30c33996e16cccf786138 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 29 Nov 2023 13:19:51 -0800 Subject: [PATCH] major overhaul (#5) * Update sicgl * fix build * setuptools and wrapper for c extension * Update README.md * update sicgl sources list * add compositors module * format * add functional module and pixel get fns * add a lot of docs and stuff * upates fix Py_None ownership error switch to color submodule format * pass all tests * compositors -> compostition * drastic overhaul * Update sequence.c * simplify scalar field * refactor * sorted * format * move interpolation * move core tests * Update color_sequence.h * idk * increase strictness * fix errors with mp_length * add scale utility * format * remove inconsistent leading underscores * update color sequence interpolation architecture * add sic logo --- README.md | 53 +++ docs/assets/popsicgl.WEBP | Bin 0 -> 179870 bytes docs/assets/popsicle-bit-art.png | Bin 0 -> 248801 bytes examples/simple.py | 2 +- include/pysicgl.h | 13 - include/pysicgl/color.h | 14 - include/pysicgl/color_sequence.h | 24 -- include/pysicgl/drawing/blit.h | 7 - include/pysicgl/drawing/compose.h | 7 - include/pysicgl/drawing/field.h | 7 - include/pysicgl/submodules/color.h | 7 + include/pysicgl/submodules/composition.h | 7 + include/pysicgl/submodules/functional.h | 7 + include/pysicgl/submodules/functional/color.h | 8 + .../submodules/functional/color_correction.h | 5 + .../functional}/drawing/global.h | 2 +- .../functional}/drawing/interface.h | 5 +- .../functional}/drawing/screen.h | 2 +- .../submodules/functional/operations.h | 8 + include/pysicgl/submodules/interpolation.h | 7 + include/pysicgl/types/color_sequence.h | 20 ++ .../types/color_sequence_interpolator.h | 18 + include/pysicgl/types/compositor.h | 23 ++ include/pysicgl/{ => types}/interface.h | 8 +- .../pysicgl/{field.h => types/scalar_field.h} | 8 +- include/pysicgl/{ => types}/screen.h | 7 +- include/pysicgl/utilities.h | 9 - packages/pysicgl/__init__.py | 1 + requirements.dev.txt | 1 + setup.py | 60 ++-- src/color.c | 45 --- src/color_sequence.c | 321 ------------------ src/drawing/blit.c | 28 -- src/drawing/compose.c | 151 -------- src/drawing/field.c | 78 ----- src/drawing/global.c | 105 ------ src/drawing/interface.c | 118 ------- src/drawing/screen.c | 140 -------- src/field.c | 197 ----------- src/interface.c | 181 ---------- src/module.c | 118 ++++--- src/submodules/composition/module.c | 120 +++++++ src/submodules/functional/color.c | 128 +++++++ src/submodules/functional/color_correction.c | 32 ++ src/submodules/functional/drawing/global.c | 136 ++++++++ src/submodules/functional/drawing/interface.c | 155 +++++++++ src/submodules/functional/drawing/screen.c | 166 +++++++++ src/submodules/functional/module.c | 170 ++++++++++ src/submodules/functional/operations.c | 148 ++++++++ src/submodules/interpolation/module.c | 61 ++++ src/types/color_sequence/type.c | 194 +++++++++++ src/types/color_sequence_interpolator/type.c | 27 ++ src/types/compositor/type.c | 33 ++ src/types/interface/type.c | 279 +++++++++++++++ src/types/scalar_field/type.c | 159 +++++++++ src/{screen.c => types/screen/type.c} | 30 +- src/utilities.c | 39 --- tests/test_color_sequence.py | 61 ++++ tests/test_compositor.py | 50 +++ tests/test_functional.py | 18 + tests/test_interface.py | 12 + tests/test_module.py | 296 ++++++++++++++++ tests/test_screen.py | 4 +- third-party/sicgl | 2 +- 64 files changed, 2564 insertions(+), 1578 deletions(-) create mode 100644 docs/assets/popsicgl.WEBP create mode 100644 docs/assets/popsicle-bit-art.png delete mode 100644 include/pysicgl.h delete mode 100644 include/pysicgl/color.h delete mode 100644 include/pysicgl/color_sequence.h delete mode 100644 include/pysicgl/drawing/blit.h delete mode 100644 include/pysicgl/drawing/compose.h delete mode 100644 include/pysicgl/drawing/field.h create mode 100644 include/pysicgl/submodules/color.h create mode 100644 include/pysicgl/submodules/composition.h create mode 100644 include/pysicgl/submodules/functional.h create mode 100644 include/pysicgl/submodules/functional/color.h create mode 100644 include/pysicgl/submodules/functional/color_correction.h rename include/pysicgl/{ => submodules/functional}/drawing/global.h (91%) rename include/pysicgl/{ => submodules/functional}/drawing/interface.h (75%) rename include/pysicgl/{ => submodules/functional}/drawing/screen.h (92%) create mode 100644 include/pysicgl/submodules/functional/operations.h create mode 100644 include/pysicgl/submodules/interpolation.h create mode 100644 include/pysicgl/types/color_sequence.h create mode 100644 include/pysicgl/types/color_sequence_interpolator.h create mode 100644 include/pysicgl/types/compositor.h rename include/pysicgl/{ => types}/interface.h (76%) rename include/pysicgl/{field.h => types/scalar_field.h} (51%) rename include/pysicgl/{ => types}/screen.h (72%) delete mode 100644 include/pysicgl/utilities.h create mode 100644 packages/pysicgl/__init__.py delete mode 100644 src/color.c delete mode 100644 src/color_sequence.c delete mode 100644 src/drawing/blit.c delete mode 100644 src/drawing/compose.c delete mode 100644 src/drawing/field.c delete mode 100644 src/drawing/global.c delete mode 100644 src/drawing/interface.c delete mode 100644 src/drawing/screen.c delete mode 100644 src/field.c delete mode 100644 src/interface.c create mode 100644 src/submodules/composition/module.c create mode 100644 src/submodules/functional/color.c create mode 100644 src/submodules/functional/color_correction.c create mode 100644 src/submodules/functional/drawing/global.c create mode 100644 src/submodules/functional/drawing/interface.c create mode 100644 src/submodules/functional/drawing/screen.c create mode 100644 src/submodules/functional/module.c create mode 100644 src/submodules/functional/operations.c create mode 100644 src/submodules/interpolation/module.c create mode 100644 src/types/color_sequence/type.c create mode 100644 src/types/color_sequence_interpolator/type.c create mode 100644 src/types/compositor/type.c create mode 100644 src/types/interface/type.c create mode 100644 src/types/scalar_field/type.c rename src/{screen.c => types/screen/type.c} (92%) delete mode 100644 src/utilities.c create mode 100644 tests/test_color_sequence.py create mode 100644 tests/test_compositor.py create mode 100644 tests/test_functional.py create mode 100644 tests/test_interface.py create mode 100644 tests/test_module.py diff --git a/README.md b/README.md index 72e446d..194b744 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,58 @@ +![popsicgl](./docs/assets/popsicgl.WEBP) + # pysicgl pysicgl is a Python C extension interface for the [sicgl](https://github.com/oclyke/sicgl) graphics library. both projects are young and would benefit from community involvement. + +# getting started as a developer + +**get submodules** + +```bash +git submodule update --init --recursive +``` + +**set up the python environment** + +* remove any existing virtual environment +* create a new virtual environment +* activate the virtual environment +* install development dependencies + +```bash +rm -rf venv +python3 -m venv venv # use your Python 3 interpreter +source venv/bin/activate +pip install -r requirements.dev.txt +``` + +**build and develop pysicl** + +```bash +python setup.py build +python setup.py develop +``` + +**run tests and install** + +```bash +python -m pytest +python setup.py test +python setup.py install +``` + +# formatting + +``` +source venv/bin/activate +./scripts/third-party/run-clang-format/run-clang-format.py -r include src +black . +``` + +# design choices + +## color sequences + +color sequences are immutable. side effects are not allowed. diff --git a/docs/assets/popsicgl.WEBP b/docs/assets/popsicgl.WEBP new file mode 100644 index 0000000000000000000000000000000000000000..71b4146a2a19959764743feadf43a038af982e7b GIT binary patch literal 179870 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≈=Xd=u6{02 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¢} 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 K6))GhfB*n6J3eCo literal 0 HcmV?d00001 diff --git a/docs/assets/popsicle-bit-art.png b/docs/assets/popsicle-bit-art.png new file mode 100644 index 0000000000000000000000000000000000000000..0437b1237e48ab352c6e8390e970b52b1276edd2 GIT binary patch literal 248801 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%0D?l?v1&4|Mrn*Prze8bCTjK1$GgfM9q&V z%CwKePFa22hNII8(|4btHBDc7tb1RHd?%W%l%yoNu`B%Ts&>t2Xj_BgLOa8#lrZ*1 zZGSjg-DoM$5P+jfUhR|@F=1eshjb_n`Y?gj-;zvbBurO+BLrQolAg8x53FN=si5pw zz<2U>Km9MVRh+S}%hY-lC~};W01pGnlQN+Ua*aF!TOAe0$pQ50ZkJL0U$N96VAwZby*^g12qBcc3`Z@(KXjdtD|ZQ3vU(5)E0SQ6&_ zkTM$|uZ)@(Z^7b90WQ8wyg~biJ&Pe9-#~aP);75BN0`qzU(XrjxDoH%_nIHiNv~w~Rl=oBN|T zSqO-xTlK&;m+jUU5lmF3>L}#hf^a|zcvC}hq&EFkR`3x(xGOGt#7Y!_3<~;Vya>_~ z0!Tq+M5-SP)SCyM%fHVOTJq*Z{lA+RVHjVPHf?5t9G1mzaf7qMwYTotKXk-3Hx;6Z zaw1I^d!#aV%q#<&JEqY*j6{$}ApM9=ep~$X-e)f~Pde-c|Iq?4WGDX4*9_cn2ypqK zzYgtbs{dtGmnmxC6@RtZ>d zu|bs*f*$mTVWRM~O_VB3OJF$<_|N?&L@@T>JhwY82BjesR1ZZ&(MIv$v$=a0t-0? z#C#M9o=QWI=zhRjJl|*%nK&_QAlE#Cq+}F zEk`1}qDUu*XU`qB9<(+>J0mW?UQc9W-0F&#BB@N1(pvuN`&Y9noTW!cGd-P>#VI|lD&bQg|Fq#yWdkUF~kb|8fmJ`jtE zlz84tk?ZX1@d_qSg7Q!}IbV=|4)~Zcadp*VR=7I92N89P23y!T2)b^L3@%B`o)np2 zxIBBYXWtQx6udM-d*TvQ!ZO-CAK*H18B!vLl~{NOp3scZe=AG;4xJWOMGk7)`UUPr z9?5HMQ1IGf-_4JJ12vOJCEnnXbv`8>AipRdCNv-LV|lt_Pk?i!gWuvCE`({^RUrrH z==28IcznUzH;x~<)Y*NQ3Ru#rvTrxLuK8P8o=Py;) z#Fa67WG_Cys}os*+9M#>$7Q9;xSI+Uk@PkT=Gb5*IvRyGx1k6qvoeI^`b3((Rx^G+ zAXD$tcepEU^eUeSM4fR$?qf`b9GkP87@QWEqu^ky^RyB1er99h07Io1t4^ExuQZcA zs#Sjiu$}|&CEA6phfcSK>73EQG=$oSkP0MVLOYDy%ip`2=Q>QWb`Z4C7j|=(2jyfo zIxCONUwqJ@{boRh7r=rZh6DQR3ObCKQ&@y~u!a~b*23eSy#5?=d*lQ5Wl_bO7r+{dY3t@VQHQE=29nBTaYJs{P;`*a*^?LyM;HD(l_Yo^!svNo- zk>HdQ*Tx=`*gzp#`R7uY^2+TbofxPE&N^7OE%Dx+5JH3q9f z4KpUh?2&%_GEtyKz6f*KTusA!|wY=t5q2-MdHgu&HNv_ zxgw!WFLdJQa_rO@w%{_$INs}2i4ZNv%o+F(im@xYy`>>w#A*3v7-*VXJks+4Zo6SWgg5^lF~?2|6lv z8`#=jlJsKd{(8%1`X#P!e^#sC7N>fTRPca24Z^OP0v`ji4A&4yxD-g)M40!e7_w#4UBj zwP3)czA#*M+C3GIP96(fE(wWzdxE7*4#)*GCu@$#IT$G&K4)Oy+PO@q>gNJe_4OIS zH(%b6VW!WjfARZ<4(M#iK-r7z~bm0kRd?wgn{o`HjDmPV7B3; zSRfWrz{=V`(~YJ|*nbQzx_PrH#Jwe^ew)dBJz-Htf2%Y~!J zat_hK?6G?BXqFv75FV{%8}w>HIMj0Q%!GTLC#Y}-$b9kG;?L=N;Vbr~V}EFx1pI1Y zTZ5PFRHhr4>Xot>q{j4gFo8^TozeN<@QF) zMH%d}CAn=dK&`*?XJ>w4$5oNeui42vdGd(wNQv2cu07zFk>3InC~Wty@`{}no{0U_ zH89mOmc4V>0pjcy^o;#S z=7P$i9)#@WFxuSg9Bi9=0fwYp^I3+@x$HsV9nKYJDa{riTm(|fR^6Z0kLf4vphONu z91+&bXB^-Uas7qP-P<;Q25CW>OI?n=RmrXnry{`GRAK|(Y$(a0{^bT<@YT4ZPz!ih zLS%fPB0BO0U%je1EEXH$e0G$fB)TJ3^ydcleme37Xlc<5JPlUwc^}|$1D;D2xnX_7 zLO6p$Zz(J!!Y`npEN_(`9cfHxeU;S;S>nODP3PBpmNN|cDZgRyw}4@t|MT-7lQXO~ z1j3e3%sj50NaN;Og-P3`f=5b&U>e4WWfLn zQvEa99G@h}-ci5-)3l1&FA=8+kckG;lGVIGoMy=+0VLvr1FX6R`^;^`f?PrYYIrU^ zaNrGkfyHs-2U_kdTgR8lR95gR-s@M$UJ2k6Xfj+IcI}}BdT`XY9-ZzE9>0vtU|PVu z4I(Y;wfQ--wbU32vXosam;^;7qlu7Fq)ec0jiP1JDe+@!y#T}0XGsC0;V`PWq_|9e z>#;^%Gg0%JvgQ~|mv>)6e&F?yiY`2y&6pscizE1 zA0JQvQ7q_MZ9soC$dAt8`IqeGWWWc_!Ec0gQJTJ0r-i%9H5XY4pn9t2sg#n_@rW=f zAiu1s{L~LE&Tk&J9ZvWeE%&yAO*p@t7ATMb1)fUa_5=%(6r>zJFJcqUJwaY`G!92)ObAAC~4b$jai{&`?;Q>NJdQ z;*(`2zoT5wA2pz1aiGD?0%T63!f?aX7pY447bG^Dw-|^gdHJ-f@K-B#XhwM)eHv{k zGSI zw%2W#b0${+V*5mWUvs_F`%;rAGYRoLpJJjUAZGO#kqNe|l@>pA!Yb@cI?+%j2T}E{ z)ID!5BK#qj`docDpKLXLoUPM&>XipoPsndsVR|VBBW-3QJ1WhOLc7lz%Q_~=bidQ+ z=077uVvv{)uZs+N{7hM_D|=B9rBITU9NT&LBYC&0Cms#VPqYz%b24Mz1O{`sP}MDS z$Ku=7=xs#&3*wX!;w-a?ZCbAze}52gEnpFkIT|6e5K=fQ&R8_y6Wc>C;V`iHS%%?< zicX;N?D8nB<@Vg*!zi{W=$OlWFK>Jry_q#i!DQaWKh2(rTM-l}?Z{}GYKP2Le~#rv z?{>M!hwStVc^be+`rgpy@oLDP)?v%p%?D>&gfGzO1-CB(&RZq;73IsM?8Y9GM!p%}{%-g+K|S4U7* z8s2;+u(6wRoP^iekaG1iz{Nmb=V~~<_UJ`T|Nhsr>1k#DW4LR%SO~hFa>_}wB@-vr}ry^6KN4Oi0(8U$)52E-#X{mD9 z3J6nP-v9YZ$b&h@l|k&D!t?w1urYkt+?o`j6%L41ax?iuW`w0kX2sJlwIy^i@z5ki z*kPyL<~~?HAzGk+=G#IK#7j=IrE5sws3q4C4P(U>YZsn4v}l>2 zTVsN0!@9+0W+n>3viXb$zr}sd`!L^%2y;FUF^Ut_#W$Q?)1;3vy`Dbb?DdI@hYoxOn#&lk|JI$!^#AeBm8;!7tzo@bDCG%=6B zxJu9VdM@}jsq#`({Jinog+|VoDpWGMM|-*8o8B#M$uM_E2vkb7YI}A5#tCd1dhPX0 zO1t<@-MY}gitjzCdqo05{M=tG%zxdEl-6Kz0A%$ zu?&XGw8jul%E2E*LlNYbh^ZqF_C9*B0x?)q1Y^R+&%w6q`2J-1TQE@dStm&|CZX~@S9~`Auehc`R>MKUXLtJg+Fh`toc18RvppK7%YoF6B z1A<6_*p%aYBNx@@Dz?OxUIUwThtg9&M7(lC)}6Hyz+hS3;@ z7W(2@k9Wr6KB1<4S&W^>7Nj`$_*U>YidRHe@E)Q`J24KG9pCpJ+0xq+b}H!*Jhq}^ z2%3(>V#jb(eL<}S@tJXT|Lm4l@X%Bs@zQ_tNn6SHU z%+T!`VFAo$@f-MAF4>fx8czm3&Q3Fme^kDTI+9jBb|ZqjOg}UU0etsixq~Mzk{b*+ zfc8U~$gs|#+n+<Zn>&aTf4XhqE*;nkA5RSc5RPc;u!h|?tHQ!kWsOft5@l*Qw5>}(W zCojKBaP6;%s1G$6B;HH0ep|oJij8aEn<`(E<^NHYF61LY?b*%C`h(qqBwv4gqo7)o z)AGoC&Vu2<-{X@@xTEJ0op)GL3(QYOkCeBmZKEZGONM0*quqrolgzs>vKz%|*TT$- zASQbLw8|leO!PasO(JWV81pzb&_i43bJ!(W_4xAE{EOUq`aCT{Z}i9L0{?MfPLo4> ze@>N*yjr3jBqEAkX4_JI%_2bGIeV+2c1QOt#W}M3c*aZqa;YlFS=&x0@4Nn8X-ip>6+u(f5iv~IDC9IXAjh*`&ywTqM(u1R zYOP^c;yooV*o&K-xo%mo@cMG0L$STPYQmqw-((S69=P3QY2S;OGRRYN(9}E+QU%*P z-fnCyD27EHfw|{8DuDz#XRXC$ zeAt-r9VshI?=Kn`)x@KM+Fbrbe%OdR93=dbDxKE%h9=WtKL5w=DZ+<24h6UuPf5~wNmQ=&J=nv@4hd| z72L^7Enl~&ewsufxS6;jzQ7((E!b4)-1sYce@^eN?aQamrk~!w;IxyA6K?5zU=~`( zKA&B?JL~A)5womuc24PWR?GF7>HD|+Z?|r!?i}0Rw;r3PJu0Sm_s*QA3lGGfXB1X_ z(@5A8<9tGdKvL=95`tc`T!Ur9qvKV>EQQ;j_fL~uJHFoaA|H*(U~*(EcV71<-i9 zawzJr+c$v*+mAez@h|~tbuP_@yU(wB1(2DsEH0VX=a@;z*Qf-SV!A#@->VNxi)i9{ zn(b|6J!!G>);kDYTw*ZNyl~5P_spb+2+2eEzRcD^(YqR-jm^etX_x<`{%Zem{Yn|; zM_+OKCQzb~yZJUQLceYuATa;@lYs5cpN)Gd9$3J($9FNzyXSd-s!8)4Rhlyg zKt=vI-N@^ue){_z%q@MIfgYT>Ol=DL_?(h$5sBN8nIAtRb-X9lMERhF;%?Am^3%D4 z0x*|&X7@{`*=c}_@a+jXF4^ib<@(755!m|5-Og9{sWwRvA($w9+97DTf zMDpE%D5b|gQJ($z$+z4C9h5uN3A(&^&!qH@jz19t)nRPM!lkRGKzjl(?e4!)aVL;S z@k(y+MkNELcDRzN)^qKQ8{k|Zwk(smrMOnvLx}fCRg$$f*|R$@uM&fHObEkR0Y?~2 zFNb9_oL0vNP~wy?DK@54)+q+_>4Wto{(U^5V@# zLg7@eon*zzeIn3u#o5Yfv)R?vpz?}&BN=S_V1W#GbEVmA3{TpzXCz_-*RmG^%w(gR z!Pz$;WT)fRJxv5eiZKBK%vKLk;wh^xHhw5du*FTeWefGyBMIy+xm2|h$d{g>j^4a6i zg5jcq97hhv!5WA7Tl?*nr8=Q#COz}MO~%WM+>_ay&P{XXdilj!a-P}GYrppRgum%i zuWj(NWZ`XWw|CvaRi27JoIY+A3=bL&Fp@TumovoME@xQRI^X*I#BTaxf3p6DgbzELx2{YCcE`+a7@PkTPFpaDARW6;eE3xjjPVOIVLo&5 zz+&Raj*lP7t4kv__9>T{;$V6^*Vh);8Rrn!me0thMLDCN2Py1M4a5+P4_uTTmD1}% z{S?uIk6-Q0lJI@(NoF5+op|Be>tXV0uz!XmCjEC`B;ldnV+67)=XQ5GJNKg~UhcRT z@&!Ikxb&;(d5v9z*mn?t% zZ#IV#W@==0n-vst^@VE%rN1srA$O_mlpO&}t%l}ru$=8Cd8Y= zi);f5EEX(K+k7eKdU)fwDXX0ptYu??tJBu)?1C<}1GgI7i#c`(F`mXkFusL`L?jZC z0$@-9Q2Su>G^==VQO-xN7>-OC{@L4uR-pmQ4bys`wIHl_VZaL^mIXV0k560+J>g3$ z*?X=hU35oZO2t`#_o&nT(-eD`Nwhn{$LS5Wkh~7Pe!}uoxNCfj-AT;LZ01(qOHc32 zR~m2BbJPsH6OK85jW8DG-%|r=w0%8&R>D3FHvl8+F&yc)W|T{ppG_u?UpynhHru+J zl-L-M>X@eZhbLP7X~eLOCz1eAkP$>{EVE@k%b?gCceB{3VIC0oY=@D6yXp} z4f>#Wp@aLd!w^V`*)x@KS6gN6Mk1sJiOiYUoghMFByfRLB|<-hAl)BBxkzkUdU_}( z>NWzI+D#{Y$u6+OEZCwy)BY7(7JT{8Eg&keADmJu@KU|5g_?nk(q0XCLjQH9pX zO|#cz;HT)U%mJPV8TcMP%a-RXDNqCl*WEgZ`xqPD2&7Wk7A(}BOObf1x6F`{gjwEn zzrCgQfe2l1PrNnFkjOV)A`EiD)u&aGFw~^_1L`#&SL%*3t5%^=WcZD=-GG`mvSXcJ zvuC^~-bXxWKgs&BSFh_%F~|_RG3ptCpTzgP4pZhA!qyDY9#OS~*d-BuA1#{#a`Tke z)N(qC0_wFB5(DqK;L$YBlex4>ceUMn5u$=E4hZ7(2|+3v;{)Jg9=9%g_m%sjp2~-D zD~o+-jf*pD^sf~<@2hYM&FOP6(mjBozSDmHrf;EElj)P_f7UoF0};L^mh2+?c%A!h_?kJQAeug*!9UcagD?``WBxT1b)$DxN6CZm9mtl^tDMjE&K~8rqH3z(o>GXw%if|`N5GBJw0uw564Ez&TCeJ|A`&gYf3yI^0O#N){RmpkP7(aaY$%!5sDD)hgMhLT_bFEk z{s9#MmD&8A{m&oomA8@M?c1zK5qtI?HP2N)WG~+M;fcONs1wj>@3*&(`#>!B^Q~|U z4%t`n)j>5PY*r7)Ouv#opS)Zx1`wAUAqks9LI<>cdq?dxztIK#{DmfD?^fwKE~%2b zJ~(h>3xhsPrkG(>cZmFt`JlLm)R&Z(VVE)j+I?bYr1ig3%DdM*dM=X2Y0*^#?E^_nOh^3|_Xha#UhTsXVmX8tEZ&48 ze}{0QQSJ?FyYY&t2r;-PV|9y9G5N zzR3QeWJEBohh>@Dxm{HNmyz)g-7%1GvSb2D1f2810Bh&a^sis!%LzEZPod>%f^eJz z5CK>H z63~5;-UTz2g!bOu`JAM05rJHh-dfrX-MV_~i~y;20jlWW?T?_nZ~Y0QIbOkRV71ci zo4N0u}kJc7gp$4A|D<5l)UKB@p~*etGNe4RLuMQ$+4 zZ(ZxzEb^eel@2O|2~FCi;bkke|r7Z=c&rx zby$=j1k8Zc{xNr~Hyl|ri^HjR=$i;!I$E-JT^8bX&~wfE%%u3fglO|pzRM9L0{2}< z#@Qg(Y`0+_&28Pp+c39IDrJ{pZLt~6WA51v<3P4WgyUzOt2grga*ZnnXmCA43&R2}< zdnt9*Mo)_NT(8xYjU|{6qc&i-^2=&kzcliWs12Rfw7L`!d4q#;Hr|!=IT&B5VFR{k z7RF%nNTu$Hw2*$ngR(GCq1OZK;ZhD2!Wm~-xWHGQ%sawnd(hE%^EkgX@xr9pXrylq zr_4y0M<_FWi7Ij?s>Q9U7W?8)^}!71FASP4!Uru+lC9o_mt>Y@RC;V4?C-3);E(X* z-lF@o+(Pkd!KAb7IGqo+H+?5aqG~h>^j0rQWQk7C&MuU0@Gx3PBarp_D)H#3J+q4P z4mZK$4VOH!%c&?_(CH)~L|TNJ+d0BJ_uiHEGQJAjMj)9j@K1IwBP>%@JAb^fK0g{6 zh2F@kD-Jjkzm@aD2O!|6;Y#ZZoY}T}oL*z&<~9!_s+>PI{OB09;|7`4A8eu3V#QNj zF)U975+E6sklI<^0@9p-+&?kQ= zk9{-7cPstdY*3w7*(HZYv`pH)F2$2yqgKD#B`n{iQ0;Sf3TYP0-QZ#YX_nF1;vYDh z))Y+F`q%p>96fCLB1`Mbv#}L!Gf-P?6$U@dgEgo3Zsd&C^!cVTzNSlD?^Oa=E3cq# zUOK|%G?EtaX-$JzHu6FAgg)4o5;TN=iN{365lXVebrOrGk0PGylM5=hdzYXiA6qH* z-BFSPWeL^mb1^r=JvNDhhe?GR`8XfFrwLa2N`^_}ObI32akF@SR}P ziWhgxZO4HVr2&sdo*9yT%%z=fh4+kaC>>v>Vdjy`wi!- z^l_)prRg7Tg?}-qxQS7_#O(bOY6V;+2XU}5d^do}Oy%+amqPs6J0V6a_g*xV zSzB|iNOQyQjA4!Dtf|EMpIr@7Z7NOE_h}u2UWd$|j`McSw6++FFcq3gS_BBL5GeKC z`n;z&5VpJ8Z;vD=5{wH^UDMLcCO)_sgOzJQY)suI=7~4V9InOUPP;9-uJ0^C`Xx!s zD!;01PcJJV?CG{SF0gCcKp-J)LjnVxw+6jJla@3NSh637)FQ_tskecpdIQ0s@)4-p z7}f^567S3nhgsl;5E$4~lY&CQ?W^xyl^Z6P5uMn!Wjo6coIUBbV5POIXKFLphMT!1 zq9Fv4&vdQ`9(Rg#|==kPr%P@@NWV@A9V?LY2T37*%$O zt!JpMo%cf5+;bsap%;^oMl3~dI*b|$v$+B#{1f^c_sV}^6WCoGbPKXz18F4KrbHkM z5rkmy(qhhZOBNI*S7turK}T-3PS&yk<%jFhb#LQ)1^g-@bzQCY+DEVS8{m+F2qTmT ziF*kt9@+=+(>?QxMjtPe`_6KOtC5mZ2!w@yf8c@%ZEWmyqm+`0kTKXo9hH0)CAqp# zSQ0!eejy~vl;%|ZLs*AFpck{ns8H185+|!x^E|X=IO+Hit=k1p{fgIJCWH8Ke}Bas zx2&p)hw!xIgNb%oOd4973lpJiF$qkhAln_mzA1%euc40&SI=u0y_<#%ac?s`52_L* zqr8yY{X)@n-|1{K&eD-on8E@sGvcujZZmS31tGK=OjIbdl~4Ot3r(@ng0etv6_b5| zhg)D6!|!PyO*zN?Lt)P48GP)DvQ587IVX<@&*vDfGE^^uv>^(4IBR-I4J+<>SHLR$ zp4r2SB-kuB+k%*5 z{0?v01lxdoqlwGRcFqieyu-}TBkAsIlFy>z`03 z6I4|^t8+;g$@|!<4e<&eAx-Q6q&d}qF>Yp=b=;gjXk+#Nqypl&pn~wS0sy<=PyN&Z zy@qdSt7ug#H~Uk{9aiO=Z+^&W)+@U>ZS8vByN+L_JRGGV{1V;BVU9qJ7<|H;D=vRE z$k5+|5e97Q;%7$HfO|hWkF)Z0>!{QZZWh$H1SkXK%}2ee$+~TGHF(8b**DoHbt5bX zzml}!t;H02*2i*9t)P*k_zFNI_6~olpsJ0fBJKKJ71pQ5FA)v$jE}%Tg;~i!hRulF z_KmwyA9fn7aia;{V%CNLP3N>+x?dVWD!BuP;PM@$Ti@LJ2wmm6 za|TK8S-700@x^L?AJ|F&UVy)C44sM0yAxuT_*)=*ASmZ$?O;_`E*v za2ACGg{?RaeYagkv&w;KT!dNl+0zD%gxz-^y4qX4%R9-ZA}zdCLNB$R4XM04!3uPj zCurSrwmOcL5(xW$h&s!tD8KjXpBcJS>F(~5ltz$FX#o|G?jArwq#IE}BqXGzVG!w- zP^3GhrQ^B3zx7}1c{eX-=G^zWuCuSbKZo@Cs-_5AIP8tTRHj%7DoSzp?U*Di4;0Wn z08+5L7;pQV<_DnMN6s`GYC7-{QN@Y>`BYS=f4fS6J(IBGxc*JADcWaPz&o&D6X#Fk z1ss|65{i|q_CqF^_gqeYC)+_D1L&0AujmUn`DOy5+i4#bbGq(l4`md(Z#`(@K1-N81rZua#3uDWvR4TgJBbyZh0l)Ysn*)^Wrjp zEKKoz?_<-wMiQ(ojNhtcu^)8W1tQNedtVCym)LEJHL_Bf(+Rcvb78?S&usjumVR$Eu#4tF;DMS zW5^Nrc%y=rKaO;zWsO=%xC_wORrY}|_%T{>UYRqSfHyt0;^z;xn&Pqpt9gYWr%KZn zv&26aS$6kF+~|-oPU4fY>O2m?)sgkgeS1g7INd?gxb8?Qr|?-jC5rZ>!2Ml7`X$2RZ5T+OfmxjPe} zhm;y*;6j8cO>H9_@mBO$rh&@$poAf{Ds0sIx|+7Gn=D6H8pSF1L+62FX!NfHAFaQ} zMj1FV=N1%q5l-x#4&CUoD)eXwXD#-e1l0FXL$LH2N^GeigV}dulFS+E2<{);NC~H< z>=;<4W87Umld$ua*oo*O=b!2}3v{ib+%nS)Pb>DeLd`+J6z4~eu@9HIY5Dx(3*C|q z+0^L+8p$zCT+B!^M^V^q;78SdW$D?6rpKk-IJvqFMZ>bpuh&h4SU`)7z> zc;LYXUH{>jpf9ks^NT;L)gwTN7pmUyM;e<~*H>Jf3)I;;twy(Azq~JN-J6_<1&MUy zQIm2YI+yPy2v?mm=>rn-&bnS6Q%mBwM#_-DT{;7o?ig zvzS{tcqeEBV7UIn3V<2-@RxW7^4&_>ct*F_kO+002(1WF3m567%rt?#PfeOG6iyXPoY=VlP$C*lJ`cR@MJ zrPJAPZ(mti09#rqljU_^Mn92xUW!paK*O(ejVX9z(#7{_0f( z=L=V1st!>NF3vc&53>i zSJ7A>OQ&Y~FaA7<=^o|)HR=1(W&#p!+~lps_=s*&p!p9KOnJBN7WuE)b||?Ku%UnH z`z&Q}vHJ-uISWBb#yLjH#m`SZqiBXG9tYLV!QC>O(tLTos!tNbksrGx@y}<%cX!>F zjp!le0u9k84aE>gLWs8{Ac;jc^y_ot;Y2W8xpWu6)hmILQV4?7RaCa+Ss|=o8v&^&!@qv1AezYaftR4;o8JX zXz8_$d?O9M!x4rsguvlNeM8?k-QUFZzVk0(Jv%e4)NPl=g3T|Lr}d+l6RynQCj}^v*|%w{ zXu(S)$`YNe5E`J9Y0|aBHv|JpcV~cB^0M2N7K6z6N8cWG~VqkIeNvzMu`7S>e zmr2qCg8`_0)5X_Hc6ei|5=_&8@J@FsY-xGDcZGa}em*Ti2p0bBW%R$(lz3{GKG=go zPh3EmO%N)#js+MPmN2D&H?Lz~p^=5N6ev}|v&oDc_0`x^eh>1*nu5O&=AnPPE61Cv z`Ct@ePJ2IFX2+Di7d42rAPxn;+Kf2!UWq3L%YyLxH)5@FYZZJLbkykKi_|ecJ^ej? z9VX^deG7X_V|fs7wEI{+tW>P#&LrV-`*BjsS>K*zpb6#qfx<{)*b(-t)Upls#St|( zii0?Sct`~UO?ZJ&n3{zUtn}zye3U~|6skB9iTb^b<*V_E0(qM`_Y9qIM(4e6lnP6Z zP4^qmEaD1IkY_&Ve%y5{2`v}tI^9ZG*yLDt;Z@k&TvNIk+X412F5n zeSs7ZV(#oO-0u7Qiez1>;-niIK%7^HS3vF`9;ralUSnhEm;8K_^xp2ATn`KKiD*>qN8siSMqGNex zA%uQ^B(ftuSYFnWb&i@OycqhmmOmP#CaM68BQ@rpy-+a^dy2kj{C7|D$Js{Ia!Hc4 z`YSY(Qu78qx+T4)-x!e&UpWZ~M*E5y+Ki{$?!6e}9ZUGjz{AI_utC zF36bJQ~x;%{J^8$M9cf24}70L)yeTdlLy*pd65$1Mzp}Xiy<(j**)h^(8u!;Iql^G zJ+VF}{u(hu1~4=o__(WsK$NziCqnX0`ZMN#at^<)L4v1pFd2`zw`r@i9fg ze8v8Dg0gk3<+EV@+W;?0X>k^e#aom9+Y2lTUJ={YX#Lfl!lj=H%fimx(!BWpo`9;X z(Wwc{COik0EskfH+G783OIPPRMApo(sOw2mac)bk9UX7JpWv76MAdX%0b$wrq!L)iYL(P!uG_T>cD^i8?_ z(L;Z?S&M$96iIn$jKlElTvqe028W*84?n%`M@d04mc;yERnJ=A>dCJ)71tDwGwsdyP<%hsQB1N1eoUOa*Z8358d zs@Jkqt;R8Ju|e)_v()JfG`aJz5sVQ;IAGcnBbj0Jb6ea3dFC*r)Ldi^J+%8sN$953 z^M$0B-_&QkE$>lCn0_E6iou)5MeB;!z>9x%xGJ5#J1QDIzHcNJ{F6|AAbFObw+Tm6 zKCsrb!?ezNw+jaiE{C;F4Ml1$)fbo-n~w}BsLZSBVR;C)<_G+DnzN0xUFjJ+lfsd` zGIj6QlCCuNq}fX!lLmpFgGcGChSX(hQ`ofZ>Oa|^_B&c05ld{Q4*QmTWteR<4f^(~ zfB{e*xUl65)!hhY_^x~i(+Th$jyAj6B}_M5&R`Ik-lJKPD!4YHe&Q-96B`+_g6?-Q z+7UaJ%aD5iX0Y8W=}=4$#!%ONpkscC;v`kFX?xz!`0{qU@@?y()b1x!&(iE1WJ}X9 zImc2a!;;~rHnG?%(w>9P@M9$1O>OL4o28-EKX=?DSi~0-j#u`&E)z#b>M4;Uvk<;+ z)Z8%Rnv$E_Y>_U&%o6Rbu+{@HAFq4L4Hqn0Aaoe*YkQSP{eyxFEiI)SERAH5k{n!Z z{4z93dMNe8N(M%LKC++o(e+E_R6wu#X$gAjZ~=Kve&;~B*gGEeT9>6zy@<^o#lO+1 zI*$up5G##@6oAB`5lo<&$F)p$d%>~2`LL&N+fK95BUk6jq{#4)u*W2#Rzdr;$Svi! zA{%5_61O^Cyv(Lc6@sQUV?RFNl1=fbY(Ad5I9IOc_`zfj_zzODY8m_k--D%nYsnO^ z+L*i%h28oUEbuEB3Q{}9^(}`4&PKXI=&&t;|GE_Pp@|fzOM&v#R}9az2@oBvkG%so zaBBSg6_sDsJ6BfVEI7jQ(gNIwqv{CtgAn{>R$k=;ad`dXQ%r(2_Gzg{hYrap_T{`+ z1vA}_{Pg;BuJEX~c(2Q^_7oyKM$s5t(l5}R>$q}*+F##J&KA~{GcqyhpnM^-nOfY8 z#R9IT!4gvc$t9C^6ox*dZ^%07%)FakgX`yCn3?#W$1W3~O#Cno7)@!Grz8U(to8Ml zv2!pV#NO)tQ}g>{YQg8uN*vFiJRfj{M;Ksob1VCXM}-L;`P;MXd2>zCs%)tTzzcHjl)o=^V{30)at5@NV^tzQY-|PcFl&-V(r8lA{7*FG2Q4r6vag3g z)!u6kl_V7YyMvrS)fd<-!a>7s_u|V3t-t)O!h@v6a0!O~pQ&5GM^xXd> z0kN=z-icBf%r4#Xd1HEW>&iw-BME94(Udb+H|eE{OD6}&BTOAPd|hI z^8$$HWJfKk{qU>2<0Bi~7&T|b`#~R>vv_T#pP)qI4^7k%z*Pp`E9-aJVyj@Mi9In< z)eu$TSR#WNg$l0eXQ)k|buSK^^)?k@i_A#sCgChz8z$js{>W=CtmALUT&HaS{|L{; zf?UrG-@nEh94qx+td#2>7CkkE5?Mj!-gi?*lEff2G{&L%s`6YPOIhwg&u$KhN6jrK zCK#3cmA)MYtlUu*J(E58C`In-1>Zg`iu$(wWQ(@^^}@SAAgMjDbjM~lDjTdeohK+q zv|65~A$+KiQ2nmJL1#9tYpwA`(3kqRi}7HoRpC@xv9i*X|K{wL$zI6MsFmg5c;*a+9y{>C5)kMLQ-=mL-qzfKk&&}0;e~d?qN;!2zZWvC70y##Gn{--5_tM(y zrYyhvi7@(v5gC{z%G1zd5rV_JhDvdc2F)8qe0uvghHi&#C>uv-3IvF{{?HD``gj@- z_rI0xrVuidnd_x%C2|n+3r#E_#BafJKYX+A$Y&Ylf26Nok`qehMUEnx9z`DCu}-DX z0~?{GA{)5U0sJz66<2Q2gI1mbiNgVgR==(?FpvG0glq0fddU!KqkzlZ)&zLa{drtFh9ujO`Yl{UBzvD|Hxm$Z0hH!7Dj7&b6;xw-4zUWvf>|hlOx|L+b zvI=w*xqEiZp~`NOk!D=K$ZB(Zv>4d(Av&#`$oB8(HfKxxXVXx_+TOT&v1ra~MNxB( z6Ug+os^Gp65Ny6?mKrZV(_S>S*|?m;41PSa^PvBYl1;rke-y-q`56<0T!_qE{`$r6 zm>d_a{_)46W%7XAL-U_WsFmoe$8vT(<;G=wqOH%HG#G3*`qBkv?#6%h_nnM3aC!b7 zO(UIjFKD*Lt66tC7!>diinEp(OT4wb`l=sNXM}zJH|0u;F74<`a;(EXp-9YW?1c%M z`h@c8b^$H?TgP$?x;OG6D@2ZzA@^S0IyfJXCSG`9=yJ;qICb^&-Sq7~$)HU%zd4(& zN%oGA;niSi%6ub@PAG^1v!aA=(z?#PeJg|2C2JWqDE0=;v99H6Z+oB9Z`f@G%c)-8 z;02*feS@pE^T%dA{Ec||Nwt83x{pJpl;a*S`t>`dbzUg<0H0gR^mxUEGPs=xA* zI7C(Xjx#ORDj3OtGA^T8C=D<|ei_f$Gq?LY)G=^bTnS4oPq-w%kEF%F36E^}9#dTN z>;XZ#`9r`fKX8%I@lQ|!)^pEZb5@oe^xJkq&~-n5d@44+GV;q{xqqW3L*VLI41LPx)!j6Rdgj6GAXIZk_UH=!4v7hYN{wX<$_9h3S&@%F ziYa?S78M)R?!@eKst`NNAox!-&~Wv&dLpj%0ll=Y&50zZ4Rj<0`B@+pA`b5-)33=|daw!zTyUr3*58^?MnB@L*E700s5iNzy zTa^zfPh4M(^QXwSj9Qu3V1)0u_9s!SB+E~=ZX&V4A>?G8qIAdIDpGzcgPP4Be2(0U ztM{K$RpEjbhGKXlpD$Dw{Zg0Dpc zWUdTmE*mT}@Fx5y#QFtazf49&pbYN1Z{3Kv-(4><);QG;pB`wI$?k?<`F~JYz5j?u z<=-)WBye>5*BSqqh&pc>OqA}>hi)>E4~Z@EuBwbrqmZxex}=SV_mRPf=rdi~NC0lG zHr)zbt})<AY;)j5|_-H>fYyW<8=%(T(NWJ2ApTM8y~bxV-$x zuc^C7FPr^Uk%>c03`H5*Ji++CEbLwml-X#KRXddXk8u;<|LvzsJs6&2h)Uw_+0av? zLn@JhpVW_TM4PXt1l7-jUis*rS#@Lr*Ujv&iE&VNksWU}9os6Kk&^fA3tb_pF3ZK` zatyOR4`e_uw!;@_V%n*CoXYHKMgqkg%n0}-edb8EJ^?FQRY5~$e_Hqwo^c8QtCnI7 zI}ez*V`Smz9T@AFe>p9%%5bl%;i7jn#r->@r2sLd#H>TPH!LF#eQwq3qf8(~klnwZ zLl7ba@L;dhLDf*bV%FW-oQBb-mG9n=%L`Ps3v&&MSTlKRhbtO+8lXm(*ImQq2;o+O z$^mdBvpb-+z=AE!cc2phX4sn~hXKn-QL?VTcW?gf{oXwqkH-R(dNd1H-bxO%a74rN z*XF;Ja*WN>QWh?WDg1Zep>{EUBBFy*dv0HiKSn8KMpeiEi~HV8%Vt+kaIpVu#mU9q0mc%8`=-UrHQPOVfh7K*_)ZQ6Tme!RAIG-+72?EFLWnKmrLeOeCTv%d}&hzUU*-5=*sNUuix zOL#g6ReeGilIUkvE(?{6Qu3=?eqoK&H2#0+?TZa27>{4t%J}*~Tos9Q2H?D=ae*xj zboa&YvQQuXch2m#8RkloBg0}Q2jVU1P6VYO(Bd_*oK&R08dw#m4Q;7+`V)qCli5k` zDc()0YTBmtRtYy_%K@V($m(ZQX{(!`Of;^>4yMhHAYc+yBBBuBZ3Znz=0i`Y}2q$W%0() z#PVax0|zlfr||lo=Ab+;w;|^brva~>v)AH9QJ0VonBc&--~mt$sJbH)(|lySfKPtbkVz zCL2-g$S>8ikOSJEA7H$da(G;~g)5m-I*|SKg9e#!Xb~H}F9YE1xBU66aiP{P}23HxZ1)2;-Rgt+J4)gmVgjmvI|D0Zf9 zC(7K*Ai5JCFFtVObQD2!;uBGhhe$|pwdC%l?+>Y7H$x4 zWSR5DvaaUPJB?2l0rDQ|tGVY*Lj*Tl64}phR&&wrSPJ@uc5@I1#Qr;N$B?u7bqBs3 z;Cn`*u~=u6hRr=Zl`< zs*-{MLJB!*g?~ZoB0%{L{Q>s(?A+7o7FjBC z^>sqAt=fgxJqt9ZR>rSOX|PA-??Sq zi)RT0+y>i+ZyhNU5`n8L9)$D0V;zOi&?;XWD%7FE>RutWw+@Wsec#dJvT{Nu-iyBX z%^!Rtuz{>g7suiH;#2!{w@NAI=WyhEN&HMH^l)CFAK9~3tt&E)f^5Am+>ouV<>Lk= zyIwRVV&|y@eF?kgSyE_4tqSkX$9$uoo_v@-$9&@)%LH2?bPx13F%a=oF!GB-F1?NN z3gT1#0;cFxO#nM;E=lc-`PQ5_h{o7cBrqLJvLw=fsZ|f$sO5G z#cPWG-+d3Rf&Uf1zy!VkpE=@aS-BZD@87PNFyv^+rPs_+79X__q~8iCn4) zaSv{iI(aj(#?6gUiS!5((C;;)Tk>MzJSLJRAg} z8I;Pt(NT)(dt!{kz@`Soskp*yOm-W3{|>uQD2pB{JiqOsGjl>k#MLUTnHeKM-lp?9 z)xp>K3I-_lhQi_pAdJht_$yR|_F3ne!NlquM81Y27IMCMmbUqn#bFO%jr7^n&+AgD zP)PWaKvRnv!_29umz=U}1S3-HwU;qPGQv5q_lpV*obsV_8zbvx3;(41G-{1ABl^t| zV{gzYEzG7959ZEzBzET}jx3_w6P5m|9a@aX-%khxkVXGj%ltat0^OSS*ejyuYh zU*p~0YH9Xu7hBLPG`Yo!C5JHx82g^g@7&7v#3=n)>#OTPEBekQ>Xf#* zVc5@_YD0CL!o1_~`Zv;tjo|r3LG=$&*M>LD)|-|wQ!QzDjl#bQqf2pKXqfH2qC)?S zWrA##fu_U1;`;1eRPdqZ5=vzTIf2vDI1Up~a(`!J+q($yq$rREuCnK=@6sCN^?zBL zhvNBx*p7b@tf=6@#wR<0S@P_!Uez=(`t9dmxbj9!3%zh^n}6G5$^|uYUaOPz6&O#z zBa^PVt1rL8I2gb@3D}$RGPuKZC)Ie!`uSP8^>2|%xiP_v-mcriGyp*#bRI-r<=>>< z*lxhGct_N_TPi<-yh7ZRpsBqFD}hhvIy^k0eEEefGG>E)-+gdLFV)XP`SjChapC?? zlq)e(1w#QG7JD$CM~J;(B|xyqwyE~}{T#Gk+O`C<#pJCkjHjfx=IIIbxbASMQ+ z%(TcUJTs=+RXCWtcf2^3YD_V@515f)19P%$=TTDNCi9}`a*x&SJ&rIM@EG+Md-c07 z_p5z;7*?Q}zIJ4-7p9ye44nH^(_R^4s#_eLliA>XDA-DLbnFm{?KW=VjUOmbo}l)Cw`yYgq=A^8BNT`d7* zt_@RR++BrrxgNmRZT3E+?Euu3myTF8v_Eq3&kf}e=HQH`yo`Gur>OAhGKE|ZHNa(D zHCC~}6HSC17n3tx)|=TuF}5cj;rWI_?hioGvury!yAFZaFM9#|P3!;8Uz~MrX8RmS zZ|>E4Hw6Uknl9>!Vimk?p<86b2C9?*QP{b1lZSteD6WyRlzpO#Frp7>zj5_*u2z}O zQw|u&-*k_yR(cxIId`q|12?-_-slNF1E`V;f5kwL`-qw*+N!Awi2~eG7|{Vj%jj~< zz@1JP7%Cjf3xM*>%;)ChfK5jb03~p5c4c|aSP1#lK)qUS=z9HBk3~J6Y+^Ja92_)j zr!Ur+8m^V-SWAbCKUBZa7-x<0e~|Q2z$SG!ZCVAII0$xff|DeOhfZKB4KPQI-N;R@ z!}%q8Lbvx`U25!RHo(CE|3^5`EpQ*a@TP#F;(G{GlC`BaWBs8&*Wc5C4iiW zN$TmRQnUM6%l^n=!dqK5Ds<#`6lhjv#mR^Ody|vGCo?hdXGz_fFJBAc0mIm_s0WcE zCyd4u^TBur4{v!h`GJ)Z*o{&vPFR)QE<&ej+?E76tq%(P$a9gCSsRd$JTiuR^{B)=Ej{ zrcK$PF+D7ieToibXP=M{J+jy+b@&6X-$L&fa(2N0IB~F9P z_cUXmB=CZ>>D)s$(JO-Y75JQn-zF-)5swD8F7nOh!%MLNK!^e8$AMrtI#L+#rrFT6 zlE>c(2cHl$ma+S^?ZQp`xFD{BC)-cX)6*S7!=2|mnX}ob{hkL! z+#JZYrG0NVI*(O{(F0d0av%hIq**n1)7yrIFAA;ilGU!;eJe&P8oYOQ-?zF&qw4Ok zIE3Ek{#wj#-q`T!gixOmAn3SSCxk5*Q@;+I&yEh#~t$`?-1l~sD0du(eG*uSfTW_1S#`Rf{M z-7wj+eQJCWFt+ISWT~^LGCURU5&DfuIY4j&1kdrF{4>K?Vt{G>MI6w_`&yZ57(V97 zPRBzBa^K{a5;*~o4ZXJevklkv8X?Op5Jj^}QG*#{QUaP|!)HU70cht>__+~MJ3(^K zh=LyyGxU80C~_lLUtf3Z1=M`SglfX>d(5(UPe*g~KRM%580l$tQxuhnp<*xq@C_C3 zp;{zN*S|(lM8h-~Gf4Sn>VVP;601*nFxB+7)RfFBCGAE(DF6HCZ zA-$e|oaFog2yy5ItGPVJtY^D8<%wrUL0-OkzyYM+5g(UP1#|C;RZbQ3^J5puR6Y}N zpj@a0$a%Xa8i34~9Q-M(AAaBrUKXv2tB^($Uf~%0Cl#pcr4t`Ga_O zcBe>tEA+d^4ndI9JePArjFB>AL#9uR8uS)C_!$A8mhr>qwLJ9$KFt!Vv;fD8`& z6=HX76y$X(u+Q1P)Wy$b(dbqY#j`(|#jDWm*g&Vwegy~D#C{YP1*^7Q-7bn2kN${i zF%eV)gx^M60>NN{gf?-lH$muCCQ>6XU>Lulz#3IZr~=acmpjG; z@=+9C7ALFq`=`Oj(8dJ_fQF~&n^|i~MynshtTn{Oa+L{X=B*2ILSe!C2FHCyA>1f7 zSQM(BOn)tfUe+n}$c$T2!VpnNV0^ZqXV*Wgslx%V0j62_+Xi9(NHicWnwCqf^iEu6 zNNqrj1-PnMI0sLt*miv*GC?B@ADzYp+L~B*?{dHYxon713&zA88Ne1c<%;QePwqyT z(dHlxw3Sx^(C+4G`9UIHL=U;2gZ0| zj`W?3I3U)Fl>R%dfW>5!BU<92#6Tm``7;z|B-bRHdRC!AJ;C*TGQ6n3{uA`V9U$0G zem<@X`hFB>sTAz-hoWYsQ^&+23?2Nbyh_}nx$gZfJM!gQSgeTn$_;f#wh*~Kwa&cN zSC&rHk_Xkwl2JHdOjM+N+YO_G#4oX;*ZrOMN3|sjv{U*Hu6N{Ir2`-|vX9%bKi0m{ z+V)4b$kv^mf#0+b9~>a~p1+7BdPCpRDG_3E<}%T_w|Mx_*!bZgKz`rhTYTmc`UvNT zAi%yjzT07v^*jNgn{e_Sd0 z1$S55!&+RL55%UPOoMj`?&464Rb=$*wL; z=Il?5C3E%H0K`3-4w(L~MWt1sIEkL8}--%Mp)& z@e2XDek3mgAT+mT;{8anY?$jwuAUBaosW}Es?VNYdWzl0Lk|$`mt6*zowG8`@93y9 za;zsKK+Lef>&L#=($k6AE?JT<0u2T5w{8fQiaU~%Y4u-k_tbMn1k!YU(gVmdY$Hs# zfoW8Hy+q+y-U5rKfg~$8Fj3j;-Oqj zJoSA;1EK+W`V4C3CLFawL|j5m>g5#H5FFrjr*mMOMF<%++MCbVzTK>C%3`h6M9hyy zlX|sVJZt^9KFI}QOU@55CLP@AqIaC@ZFA=BOHSZwXt+EA;2VM}E@-=k+izMR`D#^` z)a1`Q{z7ls)5virwpkkc#^HMXrj(1c=k@)teeMK0eZLp>p8!95aia^e# z=41ZY_sR`&%%B%I02v&6cR<{96pO>+HTY?cJwz6b2T)m)24OxGl51ZooaqdA6C8m4^KX@y{Rb_pa;R^ zzX#!^dI*b4=u9nQo=@=uR`4(<1D~@@J`R)hr7)IQkUVqZs_bQz)mT`QGYSc0SIAc z)mXR)a)18I9!jZhHs-H6>Y&w(@jr5UokcN_O|dP?f5t+ z4>y&cvaqjKl2~w7$l>qz@=r02Y@G~gu-RoJ-QRYgE_ga`YKyfsF%!7;WA-5-VL1j&802N5Mza4RAj2{~{$$d9}_}K{tCbW9qGU8aty69k?0n9L{e<}qV21HaR~Rb^-qT50WErq-UOp|&7%h~HGicy`~C!p ze7*!5j40sU6SUoeCkGzD^;xqCHiFXK;kSJn84f(QKzJ<&ug!f;Y=ms)HRoF6-z<9k z-;?F798`U#hmtdJ@I!fzecP5!kmPowa+}9B(HMHbFw|78d!+!6l^D@T0mnVI>`mdf zXBB5YiZ=yGQL34o?^i3F?Y?G(?KB2%JZieX;j%MmQumL^pGzAMv!i;CCdznTzy8Jy zAkJCAp_SI-hq-rf6Sp3&<-(P-LoZ7CP@eCOQ+Y(qPn*?--bHrtn^V2Fr?ohN19GM) zkyw;oykc)4M@02g0SlDx=;1;wz{-VH!z*;e3$m>dH*^hLP~~H~VHRJCotZ#!txAAlNSn%+4So=j7}G;YM`9|pQd zs%Ofcr0g`ti7MCXy1qx_?mv1L3pUb-!P4Aw8Q$PJy^79gj!-c2Na?7C`AP2=>uzd$ zU3|<}hm8SdXC3Dg$&ITz{4rzHz9~8wbq_$^%ldDRv9?*qWYcsM$p(W6iPvg7)#Tqd zdnOp#qWxqQWJ%$jj6oa22YFqES0vu+{F-bmMx3fdRtm(cA1P+-eoJDwRv_rYLqz_Z z02H8a=^8AiN~?(r`tq=m!wu%pjJ1SM9Is-?5g>6Lch60Gzda@>=oWmTccZIl*vHz) z#MaP$YbN1ICoH3Ucysv$1`OEH3Q$RTF~CxOoW0*4pU1;2Fn-E;G485DnYzsTj0WUQJpu!4xGY|z`{8)Lfcbb-P79aLBWal;R6zaqgVm!loTZZVxCyE_)Mlpy6kvuJZPz;Klu)MdnQ_}#Prk0C zT8A3OnVN@P1-W@2Y)9}$bT)`F9zb^vJpjnQ^M(CSYdNikqHQO_ByUm7U*YUE6A4qH znsK=%l4R0L1s$LK7?RZMFnekMCy##Nd_N>+H?vS$uHmj*YQVTB zi{AZ>0p1=J0}7(@b3n6oPR-tM>gQ{FQ`?y`OU4>|iJw78G1|_jQ835A>*AVC(~i_a z8}jgPd*(ufc|5>sTB{{i{&T7oD+Q)m3o$@F&NM1W`xI-S<2{Oa7DIU;GYf-5RP2T> zcqTqrN}sLFNOP1>#)UdC0Fo-FkgN~!st^`by@mpjuAifOh(M!Q7LF z4<_NR9}L(^1=D%^6sT~4EBTlZHtbL6A6u6(+%*?WT5;9TXW7rc(Za$zzXnaq&;nzy z=-K`jXBZBBd?mdxyUUaJ?dS^g(+%sBK0b3Q{@8c*iszG1la*PE1LZiNV@`|^3UF1B z19|7d0MJ3QgsL4{=-ZeX=|c*yFCACK_0T!k=B3hR`4lEqN!*mwym8%guosDroK}cW z(|}97|As9mRHX8b6d@Nf3Ip*9s%N7aE@>&+==`XlJZRU6x~)(XR#i^CX1%&d3B(@@ z08UabF@X4+P&ZZn>N}`P`B+Gw1+RK(qKy9%8<{i)w%+TS`JYV_IWH^+#Lu5poigrx zWEX(rXO~L(cHtRb)=y^%cWeuj#l|#Lpp7^RkTuTnNZzfMB{%v-m6J#Dihs>8O!bj= z->WhtI%Ne&)go@Ds?C^!hJn@Vv;O#_AYJG}U(LWN^}+)dtrV&6hyD9?pO+^&S>+@< zTaDknPuh!D(9Np$zPTEHslHS6v4(Y##oYHRE+WptijV?9G5jGWGP<%liv|)Vm65nJ zwb-j`Lt@dbp6^CPHnj6O)EqANwARN%TAocOcK(>8thegP!wYP|1IUyqDQwnod8<^P zu6sm&pZGxWdLnV63d)lYbfO5F@9r$9T8L#JOB{t-eYa-ar7a4=*b2y3L*^-5*778sQ?7d zpPH&7K=o1pOP&8XB#y4>q73odElI&xYsBAD?H_`e65r#3<__rVoo7UPgurtnz57oM zNYDSZx%N*(cw9o8Y7qafW?!=xO-h}sXWg@+EXe{8ID`h7WsF=Lx{||>s9vkzy1dSK zc=&|j+5O?CWLvF(Z{?RuWvS?ZMlHa#qe^ZLiIvsP0YD4E0bgH_hzfKDi(&9KR--bH zYf+%Wh@|pNySE7E$sD&MEw7Q`vu4v`VvG>~{S&s}#3#JEdz8m42&as?Vgi$uJ^F ze)?k^fg~Y~m-t!wddEUQeC++}Z0@M$wu;Qqm2|JT>iB1epF~paCYStbOWMbAij-v$ zZw$J*>%=^>I{Y!_1zqJgb%%SA(ghA}hBvI&OlV6O;$eF`T>W|rM@EdrADIhgh}2%z zCiAV?T3G>!lgtz+Hq$w&hGk7Wd=~c$s^(X-3r8H=SLCJQL zmV;(N7@p3cDrd?p#?CWW| zJz&kwnJsZWxAm0V~pD9#lCG2ZSaDOB@gD>R!$G(UOt@Sog@OH zP8hZ+n^^@J^9N&Z!$whoGgXG^g8#SIlzX~B?s+-zMwlp+cv%BON4hZh{<>Qwe)j7YK^~d36{!c|__?PZd)_^oKq2IZwr9lV3 zgFDlp5;amXbLgg!e{TQyHSf3e6f_Wq`5o5Gm*oTy?k=~{`m}h^olyzmk8_0064N4* zQ=L9;_bGqO_7%Ib8RR?mGL5Xp4RIr4(XY`vl*z7QJTuH@qX62mUl>kQ$$m|dw|GjFecL-BA+eS= zN+f|Hy06ejjf>#?pf$buP%$99=I_&w8U6r)uLj32Z{|_FMMZ=U+%9st-&4u3-2RgO z1Q1)Wr|xaRzXe}CWjsaIIK2?iz@Bp;_|(&qTdkRMniWF&SXm)0)I)JmZ%q&-kfQnY zncvMPx;};gZ6lh#jSgz;zMtU(iRnSI%j<#(Fg4{~v=_l8We~d$k9{Qf? z^Y8cJ(YKF2_Bp7lJ;M+jbEx{|AvGvx6?eW#AlB5_lfTNCS%2hN^vb{V}V4XVJq{I6YJl>tMEj|pWL z%e~ZY>!W^NMbW%#oHTwYuyJ3j^w9kHVN(4CYA23EXudt~wNxLvHd$;(M!Sq=-IS_o zM?-HHV?x`>^X=v%>+a}i+J799`9;y!5`S+n5;0`b>S89J^b!Qg>YWSMmdE z)JMm5LlN?C(Y*=CuEG^^(NR!XjB@2tedZMJ`&U$1iEa(b2|lhQ*{(@dp-B!(VR&Ko z0idm@{q6m}Jhq&U@-n%hpuK)!6$fKcgZ`Dg2SCOxWN=VM&BZPL^6pQFbV=^j>0!v4 z#*I46d<0x~KmHo5nR{fioX*fT`fUJheNfJds^PNy5zHQZjgAELDy1UXn?Al<}HJ0SVq z(ngcR>_sv`HKzj4eKqDUdiIDUNjyBiynC{4Ej%Uv zx&=JsxnFte8MLspBadMFSVuUz;guOJBm2?_1!3j18-^y-CC2S9i;+Q2JU^a0c(G$JL=;kCZh4F#p|c7IUp4$?ys^kd z`6BMA)K#my`I4fFc8+NeySh8m)_bKRn#@NsbNUEA#HE^>smc z2$nVaU0~FxNVHiglclJ{QbD;#WMuvg%NqzyE2fOh`TqdD32*|l|jfEwr? zAGBeT3ivIhZL08gpoi$^H6F@3 z)ZWJJ2g!-asNPup`1eCE6Xy!c*U(_>fs=RtJ*#9gyPiqzG`&zk7$qCOY25ss-GT6X zVoW(gKj%wn^vuFW5|hgGqcVie+}y2%{08R-eY2j1x$LCEZ9*^MQf*$|#jl%dE4dxcL$S z3{trVJZfs8qo>JvjELYfBtv!O&;6zm<=HgDJmf;K!9n3ZejJavWmHB1J(_XtZ_}1I zIJ{hy{)%N%Pw4NwnX*qB13bbP5(t6xwlGf4GyH`ki~{i0u^encbK*!y{)2&1VvOKQ zfRoj&Y}c!ioJhNe2!KI6UmiJ_TJ6aS!%j!u1VYIZBA4E9kOudzF&c3{D6xPblg=JE z_|8B9Ly6iW=GF)hXh+H2B z`l|t40#lP@Q9&9tjSkNWT)J^8|L2$0#o=o}h;-hcZWNms!f{B9-R*sJvxmInn-9`l zcNRHbg+fHG-S<0KSmG{u@dR<$wXQkrX}g=+ey@!M|8y^0tX6N7Y7b2g9|Wv8SZTX`VANYNU)CQR%X=3=Xp)A1R^2 zes*p0$;_z(5Hn;)FQ4|}R*Uhs&naFdonkTcXb$DepASv0#l^}8;KN_s|J@$jp2p?K z1kmB{o_Zr!iy>mxgC#Ay1N@RFz*wt|;1dZ(Fkcr@fqL~#soNYnxT*ss@&kaJE%=Sw zrIo_)K|~{>T;XatkmP$bz8L`azzq(GMeo|(ER{U`*#$5UkHhC84%@cB)SM&2ZonZ| z{}#KksBNriqcb1E8p7t$=AYhfE8JdJlWE<5D=Hg(=xJ!loeUf5(n^#r8JI5=NP$)V zIpcc$&MWGVnE_?x7*#hU7PA2;)3pemId&GXcGU}A%R}Xg>A}moinTxg{KCczF8ecU z_JfkL-q~6FNkS;5WS%>F#PPmn_Md+iqd4Iwb|Cb!DIO10{=gagQvnQ<33ySVDMChyn%-&COXu6tE8<2F zBtfaZp5(d~-P)O7&_ND)2;t*;miXyO>~5Z2vYaSwhXz>RI;u!shXd@Y2m(V8Wm z9YeB|7x+^EyfW4z#*hMVazazM^BDl_HGr{AfqPX$WENfeqG$;<_$}IeINxY990Nn% zFjGm8UZMq!hgJ`{%k%^^Vc`3u$*bk1vG^C!h*hZ#Hg0YLjF|{X-~y;|=)bxN-wIuZ z2fsyq>g8YK=mfv8>9O|1I^w{3Yg+^q-1$>C&#=QL8CC#M#(rcUMhg;B?hdL?zAf-G z{l1#B{`AXgQtE?~`#1qO4`C6$wHMP?#5b?gbuiMPBoulnTbbO--P+(HY25*INB&+t zklg4#Xz>t$A{@3`UM7RE7HAW{ zl!0owpU|zIspWbR97Mt=MDm|UaJD#P zCv5CNik^v&u{J^gI`Py9wD32!0UMG_CPKh%TieDevJd_8NVN42y)BdHH;z2b*=V;P zy~ABGrUxrLabF?w3_jqpUs$E+|C{`$B0%FV?|~xEpDk(Mh@DrX!6~ATy92n~AKtnM z*895^t>pcm$-qdmzfk15*H76$DMEvf;;#)nm2L`&M8xvQpS<6`beK;|F00H~QQ(s% ze3hyYV@*ELJEWG_A;o9_7+E*N9USg$E;YookS<)0!m2wH8Xf!bKa)wS?hr;Niza?A ziZBTbTXX5Li?+R#wWU=7sa&>8$Il%4`S$inn=+I zEEuGj7aNel#r$Juzc&0k(V?v8T)WT+R}x=h;08_CnhROehB$N~2qmq6dFdj+%%IJ@ z3b6LAF5$@H7XzFkLPUT`8!T`*^)V`PHK!7xXVn>z#TLk^*N+Se-DTNxi9sNv;)>zn zb>78us=AxQ5J}DaiUc~*+H|!nq=8 zO2ZZVfZ+~(;v}2*DR1iU|C;%rhY5A z{zd{&9^DEwqh(pLhm;=a=??u|^W5Hlhlv4q(kE0;ySFW~@I4tqd8groJFy>xH7wV~ zF57O~v0g?{hk9p_VluQkQ^@w{>=KC(Ma+P*JkpVUWVR~8Ll>4GcLsh}2 zKz$T~18b(dV$ng@kzVqCHZy=JB+cC5f!-qE+)MxfDvTn5>Agy{Lh#G@ix!#(DhvQ) z;ouBG)ELD}{t{t`Nu)l(7S4RSa>NHiy;{kWR7`|iz-#&Dz?;r40{eA(-hkg-Q9S(R zqWK0voaE57GAW)Q^iw|wZg>w9!qH8?4*795_>3fwgdRe8FckQnFwgK}+BK+Wg20`c z{9hF?upBoPKYu6$mH?RkJ>H!1qCMa>#7z)^I(1kzZQa8_Nv1a(7r`qBPR~`1sa2>! z5^$K0U;7-Z`^tzlX_d4o09xWAJp2zNV6FUQ)!X*f@4&(_UMeIVAo@nPF->3eQ!*9i zcA^3N|vg=+!BZS%}Jok9#SZmB@|%#qvH^u&xB-3WfLbC<(m$+M$Z`$kpvRP8<%NXyL&r(adc_XIx1`J-|9El7JM_tnwJch@f5bn{WvH z%34~b2o`;ojvO!qL+aC1?c#5#a7tZ2WkJY`cT8#Z4KdU&D5#qfoqOtfmykP|D;(9>qB(!q2zNG|~>5NM4dNi-Tk1m>Odvn3P!> z%zpNa4If4I-8ufVHdU-?HY}wz`9{v|))0zcyPmmHfU-4s6dO-{cufSDjWw1ve|i0~ zlXY&=AT8MV&dTo{i>Oj?N*S^JR|F3%MAEgL`vh%@%BHT|j~y}ZQ*F}Zm0_|-1-FSX zk(y7h_&(j$oXs@Ii(#M(`pvh~M{WO8O(*%k;xXOER~X9xvtuWXH`3m%d|~&xa<23J z7au5C7a4>5V&#!CdfZ)92F#1XuanX_>_StWSN#I|ruI?~Y5ZVqW}lg&3Cs*M>4DHk znskODCECUPNa2pu7wlLciU#$_&!jy!hDf;Yl7WZvkBL#*;?)i`e*7?*hGuGW6mFdK zpE@*Z95OYas_}1pghT9E)Tio-CIkSAKy*30#HPfR5+?Tjna#vi7CtE-_wPav-BUeR z02L)ugFm#D7|-ruM_ozl+Og%K?8G3>MkHamAB{(UZJp`?XD;0OEf2k&DhxV1<;NxM zZyPZ0{vlF6E}>yQp5bTi;jdw!oTnm>>wi8%egD@XioeXEAk%#Op((-1%AJ(kIO)0d zpC2dpsEnseph7No^|>K|^0BJti+(xKCvSUse53B z_nZOR?CnFS_R)M@w8tiJ5AIYq()sx8-Ge!!)I;1o&D`L1Lf;r@R0w#eX%*bwbHw^Z zv8%GxNCMe#yMrjK@^G9j0*Aq;5X z9|q)Q@#iLl0R_{p(F5*7b#I0xE>ZqzjCsudBj{=)t@s zDTGTuSi6wB5X9xR3j?HOQ~q&=yjP9#YCEwL-2m5>)O}8dPjUC9)nE&2S~ddIdLtCN zG$Tgnz(i-9_Rz>lUZZmE-Xuj#Ii|JwsZIoCG2h~Gq9x}_nP)ngT{O1yOGQK)6iGi` zWO&p&|Z-w%dXh=UaKY9mxDD@oC~$T3K*Wex{ZuYDN6Eui~iM0RQI@AG~@ zFG7kcwFRRFcmFb5*CcFy_7j9I5{GZVng-QsaSK>~qbN%zEZ2en73Q8E{(xCD0L3_S zzOVARTZ;74&kf8zgjwFl9^WDYm;UX#c)MPOfbSMaA}kfhCqOac9El!*g=B@={c_Jd zk};hWZBb!;z56K_C$0D`_2=^jFDFbL)p@Y@xxG{t>qQ0J?}FO~tk=Imjfd zdySeR`!L07aIJNcv;Um^Pr$XCZJIj9+K`57e>!^yNsK`W;Q!imPJv^7Qd6SxEFroR zEJW1WQ_+J_z=pv18FHq>+4k}F-$_2)nS>!wgBElaMG7nD=7f)kq2^_1FG>jOUL|Xl zZgmofK%gr(vQqo&^4>lrK>36v{D?{JXdu6DAa&f4A8M_npZioCpv0XSs87e_Xhm{T zJ!jYw!?smwPKV$5!l+fR*A+08`4p#tR@%MLfcg2^49h7SNKst8gG zq!FCPnsTA;zEJr-!;>M-aVt|+7?AJ0g$IgNt>Z$VHv%yL2(%r*#H~wnNQE`t;g$hI z-_@~xp5cgp{g{-{#h7eb1LnIK>Y_>R^0Hgd{^HC^o(4cWvti7y#Z;vQTb-Q0FjhP) zk@GDJGgqHRfSPL?#M<}>9ObO5u5pp&nn171A>;PrfOlZa*Qyl3t6?m)n{^{bWVzv3)29m>4GjSmqY zN=UCS8$PLjnZDT%yD^1WY}fkG{@7jy4>awPwov^v)cvdD5vKbx%%{QLe+4QOApgdd zNxbC8zH_-Xw=z1jX*TS~qs&BQj~m?LXU_hQUqY$hxrb*bG3bzdv~#$Nlz}kIi1Cwl_ImJ!12iWN`El+f`$~22b;^u{af(sexMCCZG96n8pP+^Mko#Vx~Cp-*aqwMu3(cUCG%IV61qbj(H z_|1!NzNX%j1)HinDXy?3`QiM>IGrYSO5o1fB$Xri3>oiD!Pg2Hd_+aHZk z$H}w9?GhZ4GncNWbtM{oK-=6ez}UC ztKrWleg=6Q%<&H09~-zA#-});z#oB~kE!`ENTNzE0U3{nsP*l7K;w}gT~EyX1HEqG zym~pn3XmE2g(-1TRjKDS`V2klZS5~-Z2oR6K9>que-OQLmUWna+nH_@S9|BX;rDB? zQ7_2Z1SR|c+EL$`NJ=D!?S((7zlr^3)KLv~dFO^{{6$hehBN8))A`H?{sSxe&D#%6 zB@!fTLpD~Igzp2eQ>cn1WX*xHjj0|7t7@Bw_g@dvq-P_I(t!ADESWaw?CsRsLfrKPoEG z_+jTO2?IdWY^v7GrlM37b$KXuO2-i~0R-gq1>5$=w-@Y-7k0Tc#Mi$j6=ddK&o{)? z-m>YQgcQo?)wELH@UACZ1OohBUf1OIWMpVek48K1wAX3uABOFP*1t>Nw3a)b32HBw z$NKtfu1=SIbYxR9a&7xIoOyRH0j3)!ya8T`j!KmaLplhzJx$(PxLC}C5m3qrue@{_ za9Cd0IO4(shD8A1gRNAHlHz%1yGCzaT)s}1VQn2WD`J#EyA;`xkMmMXUZcPw%fKxwB!J z`IP3as*L>KEJFtd`Vr#_VypAT^okdE9_jozH_7n+hLzx<7dNyGJQvkT!d=a?c4%9( z7yhso9+cVvsGBFfp7XnUlOl71{od6!FxRjg0?dB^MAS94ivgibrVJHHzy6=?=T+?8 z0tck1^s?}!vj-+(C+D?#FcX*vPa$X z*Is|Q>6o$2syyPGz^63Q__-<-NlM@@o6N1AFC@@9DfA85U~u1;o0ygJH$kfXtZlY} z)~0pIqx6+QQGlc~p#T1gKbrET)v6=Y;I0J?Ksh(sf|gJlVX&mxsrQxMy_lpgtlTLN z4_P!inK=$9Une^&n|}0Ll*S(0R$6|eh5>S)ftw_N(rbZY+9Z-ALuI!)Ns&e7xmKXJ zwUh<{X_f$+!EB)L59fRD`*=MnR>wmSfN1>F;d~|xxV(f}!%&KFHjZ%0Zw?SVUCR8J zhgw$wu-StW-*DfCIK=JV&U|ecscL@v44Vw|)~?W8K4kwL|L7)h_nu;WSY8>?3-K=BBv_da2vrLeJ+|xh z+aat35(qar(C7CjR;lv&_VdHm$U!OV5{m1FAE)KGQpd1*2UfxHgtc$6DL<4e_~3(#&bLPz$CbcMsgNKlZyf_^R*!lk;y zAHEk+4}mcKFs;-6V3P0uQ+{$eo=6_iK3bryhWd{7H^GpNO0rTMKoXkkQTjJ|n^R&o zOBlt#-}$^M9+2L|EdA@HS)$foCAv_vxsya3dp~Uj-Dg=pfGS~czmD^UA6Ir(N{+0-T^SBQkIKF$9kBfeMZR zpSSRZN?lmja*L|dTPkaQ`;Vpqaop1!W^(9I<^^Owd;sVLUL2bt zw944^O;K@Gl?fQpf~WGu24qxj;G&!?(ubWY#1>tfs=H1V|Dd{gfO{N&JaYIyC>&fur7-%4LVAI7fyVSw4+t8NEoyw{e`W z?7eu@ z@LewN!W`mz(*HFg=IO^Ld$dwXe3X!5R#(h&xTBLA6-fw$E|h;MApk1@sHPe2yQAK@S?@5f16#?o0GqtG0D6%gHEK0sX6EARy}_Kz%!m@ z_lHy?H^~c4hj;m05P6-rEjb#L}(%)Vb!&edlA`jX%SZnl8=`fPV?;ja`?sZ==PIg}eqZd@EF#rfna zEKtM&4cx>tmN+kSArwl>$6tTuzqs_R+X+Ip0Ci;zcLqq63vpA`4|krd%Ems%TJrqn zY02zpQov7n?{F3K9;6x%z42JrA?;E1ZYQk>l5g{ugrPR<#bQUuTI3@E$0t>jl|mLu zU9_Y9WpWPnp$tHMD!>PAh5Do-7S)MnKC3Eg?J&@20}bc8EMrRFNGpngp<$@v70T&o zV8#~z{jCVrlfEEf+9Y-5wg||r*P~z<1XAes_m`c_E&po8j_DI@Z!12hC*&i0jMezE z`cAO7>A_mIDhy4OF=q{hpJ#4BfOUle{~jr@9JdVikaUrY>L0)8N@`v{ z!#z}zJ$`z6NNQrX1p<~~RcYE^3v|_=1OuFkhO*PHyL5Il&lqk8yJfgNT;v%!xJ*fk zir4v((lhm&Ftk>5nWIAwSl{Ubl}cy#Ziai%UFEtGfabX$Bf7O&$yTB-D-cvtMqPUb z=n`qNg~~UnSrdW&Qyq!F2HuY&P8I|H-ViZ9EPeYS@#Ubx}U00oL?D{P&nE z&=-a469A!H3kz%*m(N#xaQYuD2yAImAp*bU#y)IqJyWv&s*E+tBAUujJ5hy^%TlY@ z`<>&NehMsu<6SqxP+5z_aR&77mUjQ%n66B^ztRQiy`JbLd+7Owb{FfZNReBUi58ZM z7_+2iw z$J~1csV=nhJAD@MahyA0I8#P|ByX8TE9ZoL-b++gwScl5UYkv)*J!TJ!GS3Nf|<%t zp(1yT&*8$yOs|Xmbj#$`mO`CmqQ$AyJ8Y3)Xj{+Av|qO+U^YU^`wdsxO%wU_7w2P? zLY<9L*8QL!fJb30q$u;bz{+y0I1Jcb5<^rc;*_--VVg-i!$&0`|k4 zB4F42hzJI9byQ{)SGefcx2Zu78wJX)h4}rNC!(0dVee`vJ|=0%dhKsU#jAI0FP`_K ze^kS_dP@(fmXbNvWkhQBZO+b*2YV&HsKJ2mW(wtlI(Tt?h8TvD#U>4QWp)>!2?&st zVtiqjT!L>rLs!*#B49#QFu*H0w_9>KnEkN)AFiW{(t`0CTZ6LKRG`23(lICbJ1b-1 z1mTBd^~t}y{W2PRv->NF&H!VW7I%NX{SVYmR#*S?hrgH&Yde~Q*LuR5-!gwIUW}DZ zv3kDWU-PV*bN2l&U5uQeFst%><2{E3shZxpU2xNbLt;<+MKMNp$~^UlXUIplpl+*J zWJ+bJZ`R?TZ>{n@nUo#zrlCk@I~~gWQ-PMGfsuJfxk* z5Lz=xjm8cX+i%^)KC)lA4n+7L(erAS*mig+1A$-Cb3WsCKYf;!v1+I4RL|`UI7f!m zR8y@FTG<0yujCm{_abXTdqzD>v>=jOtms&K(5|kvy;Um{PB}l(QN1MPms_SM-rlwt zBlnYir!66u_24_%-)+asiL~;#+NS`nn9BtRjj0!uQbPkiYr7lzS(_RrU{EX8`Ire0 z)PZ~$^==jMBiYU|DjOQIN;+bqXaTZQ^NO;!adEW!nJF!A2KJy{Gba@5{L0EoRufiz zQf6{xayRvh!2{$9wBtgrU(bZ^2D)dI-WudZ)V;h8?34qy`lk^4$MqJ0MVqb1j;3jZ&iZH;4Q_ae zF}2g{#A2UsKg4AuQuOhV_opmUUeTtlq|LXe{w^_sbO!Z)<5oT9*4Te^%|Vq;NGt?n zHsEi1q~3fJe5|$@=8;-yLF(h3@*&6Qv)xMK5`~JS!@&IbnPGN%wCH~mB5DjO7CX7C zvP!GBZ97eko|GMsfgyKxu)BBgkOz0D)(LgwHEs zSJL-8OX!Kxo3nL=8kf;O7C-gO=mD~k?XyqyU*_&~fYilDpLt7~0=5=g*9(d789k@v zKZ#44Q=fW}snS8xhIAG4aGARi&M**z4TtG6BQ8D&kA20bOtT{c)`giFPm6z}67y~Y zpkj^yvoYRPZ(;rkW@O-byEOdGkFkL9?6s^JT@M`?lx7Ext)p)Mp)tatK;`9Y@`lK* ziFvXoYAIN&O0_V59>bFh`=Arynv&qiLwi7~D@4;x&xDoH*vZ&&!$I$~dDZ-z)F=a;$1kDEdw*sxoqK z87^2SJf1Y3#c=WTsY^tkS$=LmI+z%I(WIg{p8^xgh2ORHt8zPS&WIsJ4@R^8;4l}n z;<>y(2cLuA_-DK0bP>h{L2NY49ky-JE9dZrw}0%wbNi^#rWzode;A5NSIXqIf4R2a zL2>fwdu(?Y?1srxFm>;a=!8u;&hY__N76MA0ssby2pT1U~hY+rIoOUL%o_w!$-H%xlVUHaA!pa`C>V1S8^pOM_FIb7oJ- ziXPZxPyP7J36Lq=Vd(r}`|Fxaz*%x4yH578F5@44gAU|HFY+)|(0X9sWZ|-*cET4b z^%*+hkK+NcYU(u{E7ZuzU0dPu9u55 zMDO0}OH6(7_#|o5Y(MyH;JH;&a57x??@cAOk*{%3cq$~TI@H0bww+fD!b?C;l7s_T z4YY8Hsu+rVEOu(4f&LG5$GzRvyr{Y4>EG{k*zEaFmzAG!$2?$*mKxXAfQk6GG_-CL zXD^|Sj)KIH%5UfkPP)q)fy=2Iu*oB2Z6Hs+{@ggI8lAA5NQ|{Bj5libYxUsI`m763 zQYuvzQDVfPusVF;D+Z!!?RKQJ&hMtamFyOSgO&pIWoyH0L0IXjba~2B&PcCw$ySJ- z;?010?ZSY+o7sU0WxR&)(wUcb<>kdmUnwC;&Bu|%QnG73Cicmk2FU^{wHhn^4ZjM5 z0s4q{BojX5F}6+#*q+Y@suZ@C84_(}3!fRPQ-lnZgJ82iUQ~nxQ+u?r) zW>OP&48RH?76?M@HTRc;dfB99C#g}6|EMUzurr?hv??oNv@I3}ZV4E5-@9%c_1i=s z!~RHV#(;<~VTbBwvQ{=Ztg@cSQ~ zeOjqTeoB>czlL#IBHe5%yHfv8)q$~pXUsk)j_+H#q|kE$v5`TiTBoJI+O7ncFE3#j zk>JG?NkuVp_exuOKnqmUx_*y-$YFD8->ZV&A9|}IQ%{W%=x`WiXcF8`!8uTFQikV? zw`t7PtoPTCL*P+^yh^;;+JiM}@bfMqB?77Eevffa^OSuo=EQ3|#lG_ar}xihSWPi#aQw)WaB=RM z=3Jy#@xzy8$O&LUWL8!lP3+NTO8#5NmUZHJN=V0S2Wyu5)DdazYGWDgVeOmXcAyn~ z@q6*h_*sAhVpi+>j5N;8=Ps~TV>N*Cu+|YEQ*`cy)~Oo|7}B#w?k>DZ$wR=DbtjuO z^_^*$M#ak(O@@};XC6r${(=#KYTP~fFRR9(WbB!{zDfVZg&{!Wh5Kr6O?ChzhZ}k* zL1&^eOK;*q78?Yelq{(ffTDM*HssML;(A@crNkhQcR!E!BT53FC55t8BhkcO7*CJR zs9CRzT!8UhqNK`$=}$2mh7TnRqbz9|$JEOyVPkd( z10@}WNKzuV5dn1}eV^~{LCO($%d?R+!IQ1~TNhQSTLAEK3mPbfVj=9N>iLiPo^Kia zqySkv_gyk3eyHK;`1=KwG6o|fKDyQO<4%Z8mdX~L*Y^x3|5sm0JV0tUi3t{k}V+0IdrvNgKMXi{#oN$X7RoTGj;-P?9yW=G4|{;2;J@n^=; zp&2dzPlXxzFT3_tHZFWzNKu^0%M15bJ(wN^@@n0vA@T0wygYHgSZO;6du;qrh&Pre z3#0I{AlpN%-Fz4~#`E-^$WQ6$=}F0Fwf@KTJCeFuOXf0G450Y45%92^jM}t#o2=!D z)kuC1d&b{&y7P)-mQ2WvG$%)8Wn+6C<-7Hmj-8GXe6J|*wsy)D zyoy74J$?eL??VAS5O`szl18f!s-&Ds~pW&uLA9!1mdl^epO zZ(rV#?Fyn8+3az7I)1we_i5v(uJRt%_TL?T(D6?vO3}J74fO&Tz99gqcs1uj&8aX@ z6oh-~c{E-wQ$60&PD9HFy2)sJhhEPfS#m zNK4CQqGvqWO70GO{;K?D_k2;($Lorg6px@OgspTCAr1Ygjf&m@GKPEGF_5eldD|md zwCG;K$?~d3Kp%p&&CvKyb72M#+e@=NQhA(K*SaC3;>x!tb^!TFc~FIQ9x7b~LAqc! zfOj(SOMLs@BroPC{M~NW2p%9oRlydB%!|d1vh=LXe@O4@@O+6r+xCR5vc{Yk0mj@4v#6bFCC0v|| z3YqYFEu zqu0RW(DySw$8-)Bl^W+zaiKeF^gc_mm;<2t`c!0&^J4@MnL-W^vg2J#DTK7R!VU4n zjZ?q2C4A*dev?F1xWz4pd;ocj9z0C#zHmri?VRT`lA?kDR-l{4w|n`%ap|fkM<3Hp zLV2VxZ0t8!SDrLB`5_X9{6h)5HZv%U$SCIJqMAne?>&2b-1Y2)hX50>eQ~`M%&-^b zzVp6J0XG@@K)qd09dBoJOAfrwP&;g^?6*Ol3?U<)!+RJ~If6lLi_q)hmLyqT^wq<6 zFE`FL0wMJ#)Bi=}TJVdV!-HTT^&t6!vvTL3gz0U!cxsvb>@imtN%B=h0*=1GJ&8I} zAz98WSoyf)gVY~SoZ($8A=QuZ`^%3c%~r~%ieL69TD<*?wCD5azqv~Ag5}$2PS|w4 z|Frv6+jYUa=-W$oOnSEyLlqJj*I#u08GqdUDybml{85z51fwZTju-b6_5eVDz%>%pIz;K}c>{TYNoARC44F6|_Iyk$(=0Q zwW-O?1$CZLAhoD?kB$^IXAF=C1SUUFKZ^Ww)eStrHe|Fgf0v*zxIdp)#6-i1%5Ni$ z$+`Kt&Qz3)jKnTkMA#MzEc4aw{aXKNT9n0%qooXCGtPbV;B{vqa0&yc(Px?v6^r@#4oCVmzTJN1Bn*1R`QP+g2q<|@DYGI7*YWkXa}d^D}aTVn=6(8Y^WGyCO%^-Wu$_k#~2W7 zu^|N--qs&~?|Ncq8KY{}!5*X|Hd8nB zs>phv&L&)|eLiBYw`F@TB)A$FD#0sXXHtM0(+Kd6^EH&7b>1e}C*$qP4AA-{OwCdV8C?PBQ{gWH}gRF|g0EQANc*@^0p$*CNVJMrR zZ+nBO2UaI8YVS!O%~JVE%wCxH@ktKHIO>prOXaI`_}bOkXAS#39xjCiQgS8Q8C*<$ zr~mp4PFb?pBAPTo_r0f6rOD!mlYxS~hcoI_iqHavtDuS~eV$4T*kyv(` zYf@Wk)giv$BK{Drw&BALKg^VpXbSQy@h$@z|McKHDRX=>uQ{N?9)MgF?=5P@+dwx1 zP6>&EFny19EGKI(E%yM1x-IqcdyUfX+KKO7ceXJ(p3@g)ETl!0B<(V?YXYfcg zp#90?w9N?iZ3A^RtYm=t3EQ?20X^!S!#7T(WtB^{xz)R^rQp&w7SHePK~4wOrBunU zd}Rk4_zgNr<0i%g6NPoVvk(dHYUY*pg~t_nJ*|1I#uAbH?~rw(cp$ZV)Z0D?Sck%a zf1$yeKw^H@PWaCm{PPe&rqwvdPuw`#A3MBvbO|W4E|yQj7wq60VDP8P)j_iN4okjr zWT;FZK&$4-#0@?UYsF zTFX^>wr`q0&3o)8s02KdZR^|m)TT?qa>5}tA+$NA+3f$-`LXI~wAqW}9!YD*H8cBP8*P+~{WRL_#p7`AvKCVNUIrT54bt z_onmX%f}}o;v)3Zgj=%-=0({QtK#t#!f7wRoctx~+CK!qUsWaN$gAWgxJ4g4mCqUY z!5Pa7C2=xgVr9PBOhRv^zab^X^7w4qbU;DjK{i`R6COa- zD?qZ%7_1KX$~b@z;H!Bdw+pEcw==HFLIvl)tZLMdK~{B*7^T4PP$t@I=9g!q2@7I5 z3O}v-p)MWj(`o-TB&K5Z?P>oWf4C#8!fjOqIFf+C-t&t6ZM)pp`aTXuR@ryD|FZi! z9!wDfYkLn$vDwR88V<{@SpEIC1-`7$=@lY*J4~sF-)VX2a=NhdPLA$Q-Gy>$2QvN& z?xdtGGf)C|LYmAN;KAa8jM>@ zyJ))vy7?FQju@X=?0Y zI*azDBfg5C7?05Lir_Q5bo-d#u1NncO^V>oalU%8cV#yM)RUrL9P-Kowoy^~^9{X< z=G+8ygDewQ&090GO(o9dknyLK5oIGC*Stsw0TK7&7OSoDL#jWSI{W+XbyUTrHbdK& zYW2_Fd=PJX-mzATG&CPpeZJwCdga_X^#mePhg?)8m3KDs z(exESQNG{z&n`=McXx+?fW(5dfPgdtODQ4<(#?v3beFWC(ozC~#3Cv!NQcr$Nk})p z*U$I=A7>nyarE7N-uv8p&pqc{CCL5G@4`fOITxZ0paH}#)phh~{5-u(i4BZuU~5FZ zlqk@$W2klE{>i0mfhRJ{bPtH|p`7Gb&oo=()*4};ki^*%>S0Ib{v582E1mha#GvS* zf5=I}c$F3mt!+&GpsiibZVEeGD!v`2^E`&08ukHtJ&~_v0U3RU2+*e^f}y3~3%?Q` zNFW2cA#B_jYlsQa6rw5LlqThyGFD>mXYgHE|{{x`-PLm1?&WcQ!I% zr$k-clzVwbla#aF9n4FRsdGGkNQ92E@M^GcJ&Zqt>{Wg4(!R;-CxaGLP{-DaVbA-S z*Dg;PGC4x~dH{j^7t#Z@gJp;^sv@+JKQ;F65r?vHSFV2rm;Ooow2A|gAZVPBs9J7(M(?B5VSd=RYR0ewc#Hvml_AM%rC>R@{!N+|5?`hyr? zg4|6NljB!v>e>XtubXwHGtQ}y23SBJ%TN3hz&PZF-uhyB16~;544qS}WWO&CreD;B zkQMOtFhJ}An~RsprVJn#3%uX2O6TnSXO7dKARmhRFSkFR`Ip;2p3f<@{!1>YLIpQ> zpHQPobN%1v_#Saf3^h_}0&xYHigO=e0C9dbpH?8t`YLZ%GWtLB2!a zU>M$koJawHS91>wJ%L)z{}bZLTpr14JU1R+`fhex<;m`(_{;9!$1MghAmt1!sND`< zB}TBOQ8+!3BLpBz%$7uad4>S;rUXsiI6yy!##B;aLYT5= zS!m5$uS#h4)*r>0ItD{&T$PP<&9O{ImU2p)NB=CuO z2y{IBPDlP%D9e3-W+HNusn?m%*`OPdMcA5W5zCBJZv@k_93<#ZGf49&#Q=qS2rrbs zN|-_@9OCF$=%6+Ta|0?fZ{n*0DJ%@l@%vYat%h??WV{ehe49BqHJBwJRKmH<7W`>i zbDlcRpXf0W1DOmu#At__SON4?gVRVn)Jq1i#o3z&6MJnQq;Cu>aD+Od_yivgv??K? zaW1^tqo)V*)}fRD5IpFo+MvaLt0GI4ePjws7rC4_6a;uAc`sl7Q-?rJ>wkzH4(I;^ z6e?&kxgie*9B%NO3T+_kC~OGgub)FbdNYTL)jds^KEX9M8wCn_x?N}bi@mDlY7RrN z>*4Cc1p9131jybY5V8kQ1dSpfT4+?3>pQE~-~7ON{24>1M{wtg_ywcDdEz7?DIso_ zsaz(d$cb5pB%~uRt|36<026vJe@Y2J{|(7EVDtv0h7|kpcT;KSzeaoL71Z|)y~@2P z{@?d+Cp5$W$liRk#J>KPLcVa*`TD5UsY%h$5sL;qN&6f+rET8a*XhywO?Z#AE0>B8 zAQV6KG`W%$c}jvKIvn&ENEGoP^?GxEpM)ng@q4})z(CSl`~3587rJ3n-DhR`!bJqg z&XrES;7vTP9+G?1huIf(>o;a5yT%jpH(axF=f2@rcpFi__Fwuv+jhfICh%8j+)io3 zcW3Wixe8Q|+`;^pZZmGtQ-R+&e8M@OMOaJhvid!XF7MfBVXe|{ky*DBpwC-wOrKntfO#&12+`PMBsnF%a85PjsoMoEQt)C}X=xwdfh3%W=ut{^w&oWKmIF zb|QZdM3`fvX5Q{){^V@xXN!(NE+I5hVe@dNr-KHMxK)z)?zG8s6t^B3@2&TJ$BrrI z>+!Pq`@XR2XMA#LyhLc*|9^F%_eUfAzaKDfgvB6k?73Ucj?B}i0A#C^p;_Z_fi@2| zIxmbGCP_L<0Oo%)Dg{c&VWZSxpxVzj_`FE(*}QP)Jd10@s6qhuHY^|+AJfFleUEAJ%Ikj@2Hk&J zX2Spdpk-OW0yK*yJbu4=*yFz%qz;8zsw)4FFqr#17SP@x6oNQ5)vNY%X^`y-#Cs|b zUxT5w66C!LAq?w5yFcVVaf&W1+$|@c=(>vy0Ov(I42i3F7lmd6g%bqQw=ghtu19{X zhs7uZ9F%K@ZIiaoe(pSepzQ zTF&b^VhrFY$V#9PU?v}imfZuIK|o>l1_YwTD*!PytnaQa6B0lL6u^sFpN77HJ6*Hz zOP0LV8kgr>ZE{fi27{+kQkRx6WLK&QL-9)g5XkFBfd*}ue%}D%UuBTFxO-Imzsx3C z1Kn2_L%YyJL6234?M01_=EFh5fk@I<1r$hadgiw6pyNgWFsi0w&hyowwKWlrK;v(F=y}qg){`s%hKS$J=ih~89_;Qz zqf6c5yE#e#ogG(&Qu}WC^7Y-P81dhg6WS;kT05aBCAxpphaX_4&P`e}V6zvqQG?KC zCYzKZhz@G#$SjE+pHv@XgCNJ$4*@zcpUT4EGnk9DLcZ3o6sQFNXjtN}myW`t5CYYG z=WYUIUyg-w&Ntia-{M<9i3N|U*V;y>*dE$AewI0Ou;kf~Myk!OKiFYbn??o;DE=xF*QpleNx(d6hDIu&+8)uo%1bKmuh)Pfg% zoi5k5wv~PzXTOTiyaDDX9~Kdy$zeI(fbIQ`-B}-$B2F831OZZwYq)U;$)oy<@FTV39Ehi=(|0@)e?KK&%|^`6l6eKnQEzo1+f{x(%PUSkYr>7**2q z?%fKOr^32eI#DJ-ZY8t!aApMAjK?__a~n9ed2ZT=0Fc5Ml;cCZLR%bopCy$DZ9+1r zN-W>hmb+$^6|4yDQOjMfj?E_o%RSIHfB*+41o`X)z$vRW%f(slyU{=J&=_kl#qLS2 z7EG+sl@Du@0hEw~wK?J2<=*rd6G+2TF&?hXYl$PaY_+zUS!Xa@p?N!Ik$6N(`c|9X zrv~@P>A{jY9hmJZeR(Y%ao^YPUOl7ntlf|?-u!$u6n!M|AxC%p(dGpYN=D?e?AmPp z;ue*azK9}V7pq_r3*47mt5$bA7)v+_$td7T+=QK74C7q1le9 zpMmJ!%O2u{R_%h;A3_=JG<>+?jeXb^&*fZ2K&#d~|{2*6yKS>S^o4Ct6EMaZU&FRqs2Lw># zI|d@HyJA0OZ7J_U{Pp7lr;Xa3p9@W% z#^t4+zKs|42+6Qa98-K3n0G$*WG>+<{)XPIq1R(B<04-H_@6I8qT7Qfd7TgTZ?@ZL zJNYq~=smXgWTYTTB6;Pwl}-XNVxW5O&VShkn(9LrJ|U=H|4Avv@Wtsa!Q8vD5Br_B z4TDg{4mHZ<$2qR5nmfE~oh*u%M#r_xGe4RhKF^>!-P6#!bboaJEMbzbr~b}p#IxcT zPu6qX#zyZALiWSh?krS?kc=1suKX@({7E4>?2HJO+BAi((H8*m9pkQvJjIvYfX8oH0fx-5)Hwdr-oo))-c6^uF9FxWT{q2ei zNr5Dw150;qgj%`5CZJ|&cd5e?1+zdy%wc8$56(zp zn{>vu*R?L!$8O!CBIj8Zm4{lQufQZ5W0CPnCH|^UiNgFBuQ3`p&xp?~htrU@48hQs8WqW$ zR|~pius>lbWa^lTfW|vqKdPV2zL`2c-9ZUP4y;ec9e1y|ozcoZ@ojVwInp#OnauTfCN1~dvp*IT{gxu+b~i~ppoBCvew%j4bsB5Wa4Yw^#+R{( z_X6Y+jdmpci%DO2o-^XJ5VN7DQ7;(n5VyF-M!0=xe0qLQ?XuEW-ugHRv&SZ#jbO{7DgPR0AD2C$Z$$XgeN2fiI9E_-gE1tX1dxy7n=W!Ku<| zJSw&8_cJ1MA=hfPr?XF|EVgeuD$86sa}pE}(0f$gT=Sf3jBe`fF14L&hD|`b(54=- zJhtMRF&vN$J$1XZWM%6 z@jvK9Uy1{Ln+51E30_El(d@U++2QLQysLD(K|VgZa>!Wg_z*I(Nw=%v8#6Q?Kv=OP z@$R3G(ibH~hSt4yV?Js=mfbmN9cVJ@0wwJP6P}+$1avLXt!G0nrCd4J+NLTIl-T}$ zR_b{k9hQ!NWAe+2#X_k{cIbg?I`?%$Bj&@u1sNlD>Y?P&29^f&Y4Vqh=J> z<)>6u;?LqXLCBbAwf2FHN`QwkKbEcN4d0>Hr{USpA26=z72V5K_~dcHVY3}8H_6%j zcYc4AP185fJE6kAv(I7wT#wTH?MTmvG*_jMeD1GM9wlsrTh+{hg?)emd_(|@$8sm5 z^MjP^LFgNBdxOLR{2YOa@M^bx581`o#%Q7Mnk(0J$1JGiG{@=ddrfk_gG4D8!^*f=PhnMIwPkRpHUC^39bRRCPe#pUe!(@6AD~#w zS{D1|B0IG9UCO)A?4$0b{I=VRq+7{vOYzDG*6xxUhHe}`or%?bzU<0FYVq8)y!5d= zAElWs^>}{XxTQ(d<6WqBy+bEeS3Mnrqiv!{zn^$2vZPd=9+K9Ts3r z4fMrV3|1v`n8K^^k=5I$bEu#(0~azA>>JAK(O%kkQhhIOQFCL($F<51fwYm9qfB5%w(w8g!)H**&b6kU~h;+)17KId!siE?rH(@%fY)Vuh3 z&b^mKc^KR|dj}%P`i;4Zx|2JpA)r62QT>v>k9eQ}{~ckWgXE(iDw*-262vOC4B-lF zKPNO-Gy-IpxD3GdvKH20eM1&94Ur_NP{MXuzgg~b{yQH8PRNT9N5Q}{N$+sGqSg5Q z0~YdrQEI^VJ-YwP>$icjr*V&Tz>EawZ z`+icK^wE`5kx0!#8WZb`;0ei7+AAP}DIMoBO1BKY*QL#j5ZV|NkiWUEm6;Z0&*ZZJ z1-t`HO9MR7E4Qi>A$AI>S;GrYp&0ucnToMlCvWIu#?+InOe$`EcDA`(E0!RmOPqD0 z4H5>&eqSy`-5@NysX+_Zl@^wM{DA?)GGb$r^TuK5BuA>f@m#L1%+U_yU9 zWO;iSa$W9HYHMu>`G*sLgT5YLYoWa`N3|Q!4dpcP>Ge!iI2|-%qFFTXo?FL@M9Knv zK`F`e*Y~OMLnFX^V0+?Q1X%JTpfnQ&yW@!TK{}VD$6H^5$~uI#+ZB3rUcoVqwtBJ> zX3u`zr%R;{_0FoeI{CB!NoN^7SscB(H7-xPjeNa_cm8d3g2~hM_FmNodkj<4s=&wu z1fUI~G>}X=(~qTPe{Q8X|GL=)Q+7|3>*{`ZA1D637>Crua@9z|I?eAWZ5guYJHG53 zPb&%{`rjBdU7fRx-~y&%8jeXh?2yPtY1`qK_gbGp#0>hRR{NLBY;x5%UPbc}BTESi z4e)iVK$@t$f{d1Dl5aU?amPl}t|dsQBL_Vm?gS4z%cA3J@$09gg`_ z<2zHmw!N@g3c&ND$IC=c!c6*N8*2|^+}Ib<}C0D%?x)Qtdr zoSI=K0u2SJ%7%0G9@V;OGNJJSlVFN(rkO;ZvoXSi6%>w-f}&p7rfRB%OYAOw363tm zzUYSP9IwjuL$w0CFqP!6H{_XI77JT_#CA*(;{DD{OFX08?(a(cR|?<-yraZ?Bf_t# z;?sN+CtU|6fadZIx~NBEhv7;_Nq(#=R`?|ZBdavm>em@U+GQl~cpcguxGF8Gb=9v| zleRhp@YGLtYyxU=BtIy=c+R5Y4flE*%%LcWNL-puSyCQ zTaa)tW*VZWxL<1dwvjT$c9bMgcZcECm(xJ@nPcas7FNI%BaIe)TuY21258mas5flq zCfoO826ixdR6lElZ%2I_VsO^sNFwQRl%P=2^%XBRD1)EdlUU%Lhv8QR6r>rk z$NW{{l#x4p9l^5M>BwW0#?5>6+)a1IMJsIf=C`cues6?hsD~Vd8EwLdbYrUU zxR@!c5rexiYo%nvy~As5%fzHM)J=IhS}nep^{aLYqTlY`yM!0Zl`!VC6LW7@DqIW3 zli8Sq+uvu|8*v+votXV|3g_@FmzwEL@Z*pgBsou!NY4AvBKObI{-!FUi19F_2`dLLBILf&7?&#N+uL}l(cU{j7t;{wxQbw$r5*Gd@3 z(asK;WdKz21ZXJJwF-V(mNgCe02xIaN%T*Txcw3(wF=2*B86-+eT=lzpTxGbq&U34 zpKU$zf`cjFf*Cb^`xGEq1ew2)j zm@4@zbJfFLy&@L~S4M$EJweDLOcW5~0vVPAvmyb`@O%fc;}Z^>;M z?;{S+aUQg?<98=xd>yl1%92+&!2f!+RP?@fX0*aD<0fKCpPBSZ^gdxDEOwzdd8roi z_7$4MKK1jjUBLw#E&BQ$Tqpv*HP-OokeKLHvBWe!#k*Bh86T4j9r>4OtG(QT#=DlV zYBCt+a;L>;+-0C!;)AK>{)?k*08A;s0V70T0TzYtDa7iAOLB&r&fJo(3*i_h zX30{c(7G*_=YKys*w$ursQP4nd!nE``qF~exlO;E_)n*FTx8cRu2IUACF`>wtv@n+ zuksbSv6eLZjSQ_VysPj*v_6{R+;GoLsjD2wB+{iUF!leg{;Mu^eWh$xG9f`YcQf)u zECE_fTbSl+fFs*v0tsy-Il(W&HAT!3Aqhy;e)$^?gtph9%aP}FRb1pK-^~+{K@=kN zmvRK)S+KJ0O91X~M&7A>hynTUM_$V3CGz&>&VRE2#$*Th!(r<-%^ zpH_Mv`2$H}&<5S=y@J!aumXom^UFL9$>;`Q@3N7qR2}K zplvOQ=WuN>gi{?VR6-5RItmSjF5tidw(I2NGz(G4VJ*K?7=Txo;0(}fMxY>8s6rd_sw-WfVZ?$P=i)Mm#8(`*@e7c|%WD@eU}EDAP>sm8O@iN^cQu za8U4*?fD?Xb1qqr&(7;@d(YixSC3rdK*s*5Tb=yii>yA&)Q!&tclDdut}iqHH2o1V z7Y}X_q#>0ni0)Vyfz}{%e9U?18vF`;e|t*-89V)DRA^#f^qIN!E=73v;eqD z`~V7yA<{&RV2EkxUX`g=sU`tUvm{u9flM<=VQkPSs|~6{5`rF%Y}LWR?B#Z2-(2va zrz;^C^^S5iqU8V|H?@;iJFzhQApXmG`T2LxfA`++6Yw#?mps!1(T^~?Np+)#L>IW7 zCH;AUi%G6Qf02czZg{A)Bte3G4HyK*vC12d2On(ZQGjeCX+h;2lT^mGDFHA|4oaRb z_|6|+1d7oly2fREWo(-YAkSO z@P2;9$yJ4bX7QU_KiT^NaJb_4qGcrN=@csp0tPoH27VR=D}c8-`TmNQBF>lS%HfV4fMDF{y^!68|~|7jP{A9+|o&N)ezi0EYaCq5=w{5}@FA+Tv~p#WM?1$33$k!%&jr6i7#Sz;YUx3iM%# zc%&+LZyGy2XBeNKZD6+*&0ex63>T66Pkfqt2aq)C0Sk1?8XM31NBI+-fh(EqEA)e#LV8$+-wz3W`=VBZCNhUlu+FFnFn}H!qR_R;i| z?s-+iay9iCD~R=avHYqHX$%Uez*6Sh(8Gz^_2#PH2>E6(gh-64>x%ms z$Y8eW4tb?`PRmys^$i>+eA(X<+Q9#o@x=krS6Oa-ZRdYg&zdN&4ZQH-bGDEda{3b* zKo!zrE**Ms$K!y#BF7$I60Cj($v3~v&aEow-@g*(W~$(u?=6)$wD(BZk;1VTPUm)~ zWxFzM{Y~ljHpHqCJP%@P&WqZvVh&%LItF_#*{y;mm zm+((&y2s#X5o90JI1_%Hjg$0&$HPoqh|Bo=77TSqC9Q@Lpp?$0ihtm%@bACUVZgnp zePd1UG#+oYMSa$y4--S<#Pxl)8ji_((|THcP-v+piGCNybNVn`Lm|B9z5vjM#30%T zK)KfZ_oXV-D)RxnmJJ2%O2x-~pd=F1Z~_?y0`!HdQqZcGFU(tKgAa`ELv9*>y9>-# zV&zO*TK_QSF+yO~t3M?<$L||^D{Zdjk@o`wK#9z$HW*jTPJ7G$lW_GFJ_<5bIe)C0 z_wtGCdj#s8$nKL*P~>s`i#(?PB2N)OsVp5*gaQ{)lcP*g9<&fl<}(Z=SdzUml+Q^2 z-k+J%uwmA;o0`$n8%0zQ*<<%8>mkqhhUhz8GycC)8triK0ss+#d%)c!eMvy>TT0N1 zY3=%1l@u{(Ap?pFa-U2{bLpzn1KsXgkN*m3>gIo}W=EG{wB&CH*Z;GFM- zgE!Jnl6t!$?x0uv@7r3w1T+^uFO3M;Wgf0|u=4g~18CWqg`Y3<13Q+p0g5!|%dvwx z7i)qMWNBxUdR8;y%22MLKNsIQ{QOOOJ6RHU0Z}Vk!Y_R}a6nLXNl$TOSpWPq4wjkhKA=NddJ?qZ(& z!E8qn$RNO%gcRXj`F8O{&cT|UUR~j z`}$aoztJrg=1ew8Dn*C~;VE6DJm(=#|NFR&#gQp0PiXrIv3Z2O%b%5f}s&8u=Yw?VbAf&gX7r|*jy2mr&n@65aq@bG0Nt0{YD zNI}PIFO*}T;|C3C)r>xaXVxE3s$)$CcO`E!^x2H@!CXHKAfHn&syvsrJ8all<%#tq z5Z7;xW78*D9K2k8O0W8}j&4NKSZ5)t8n^Y!@q;cd%I8rIzwRK{wE|uLetTmbq#|<^ z3`nq^RSRJu)@wAVw2_+=2ElrDU@>2p0(7SGEi%yR5y>GRjr@fld0k5N zGX4PyLf`Df{UyZN+clV`u-R~@O^89N;smHIWJRZ04iP043rk5~0?w|!+V88HV)b+w zV)a6`xo8~lAd3L4?q1QR0m-)bz;DQEUtsT(r)W}9x&z zWiWVWmu>h<93P*mPiP;v#9)GA(2!}#R%FwqH~BpA_)jO-uqQCEnxkA1VhF1~Kc7Za zLqsDHuyOd#>($M5mG_r0%%111OHlv%$LzU=80K@+LJsP+#POL34aa z0{s^U_2VT-D`J2toMUzYO-)tO^%Jb;z%QraSiO3-;q_An4s$-_F*f(nRk&ZnJ z5E|H-9by+fOR!Wk*_h(^%BQAhpqv+!Vg?8GE?;ii6-iHUkkL`e?*6^yxHxySXHk`? zT2+w1NaC?iX7co6o4uvxx^dVCQZ4Sy^CtH}giRU_otYR6tDc#jVep3o*<9RwvCu+! zi{zLwE+3_AYe)`m0Ul2BFs!&L?JvaqrLIL>j@`ybayMY-EZQr=0QSXbtrR=iVps`R0zf}WJBq|h%iYBcFW(UiK~;#l%3L z=^1474cK(&Qoj2`f-%M80grR5n@d4?kW2*HK9n0=Q!!_5MhE8e7}fNwr}TOtIrRUy z0B?HF{4P!9$6#oF>#bii5L!wLl?FVtqQ}m(&l)0;oFMVjijBkZaR__NYaBDNf4a#u60)Lht+)~ypjQvf>Ho1ypX+KW}`!zXT|cW=LIXQa4< z+6#fx9)>^B6Goy0UTF`7PW@rnfTC7lwv-CQ7*LYa)m^Ugp5ybdTqWmgJ$b-G4SrH* z3kiy70q|VuTkZ-i4aR*XRP09dT;by|IAEU&uSK^y4P-uFe8&UCB)r`yws36^ffi!v zE!JO4IKu}f!4-u`Wu8lBc4FZ7$3>yp^%nhnrcj6|A&~T43}HC3Fr{8rP_4uPlz&U) z#h+1toD5Dn8}s`*#pPfZjz&HJ+(4{aNTBmwF_;V&0ZTtNtUxOKwX(ksCpMA>vs2+Y z2*n7eNaTC24cm28?p~f&p7y=KrglO!3^4lO1MuX9({tG>YA|=1+8u>O0A&-*XhdXS zMhwOXss*6mR%cf^#9oriK>KoOV)7HzU)ICt!#tsZFCEkCxcx#bSFIMkqJY5W_t5O+42)6S z1Cv>`D|G@8(lQ>C{?_uoJONRRyvHfC$8I}ovNhd0F;`fvAAHy~3~&~U3Oq2Pu`mQo zsw&8Y+gA}oU*GT6`a@@d0Qf%mYycIb+&#M4$WR`fq`xBP95yI{Xt=m@hiNZ2t%d}k zxoc%6g~Q2bLTB4^oolT_Yrl#b-U*uh`StNT7}{4fQ?;1y??c&$VTYmTIqFgDpeR*! z{v`ipG=I2KC7g{m3>R7Y>O=yHg00V=rNsU*~VU{1B)yrko!C$I{BK~A6}x7u+*E9_%H#PTD&zg)oY2XRKn z3sC`CK$Dw;a%@Y77kpGP;U;%nOo%GCVE#IMo+q}^Y}2A_61+_TE!Y-uVH$njMIIBb zZ(6RAEB`)IGp(=k^xYn3h0fH;r>&CbvZ)1skju|1YnRSGIsAQ1Wz#F{vPS+sF?eMiV> zP8U})fhN)6?*+b12~Dk!b<)56Shf9(8nM&(GMC<}6uzA!UQoqCia{m`+DYV^=Uv|H z5zdPxrh|vRBps=P<)FLs&5!)$eQ(F@!xP^ki*x6RC^8&M7^W5vN$qg0@W=}X^$2b` z-$7e|Chb`?(@!IV5#cSIEK8K!6yLz6c~y-Up$$uyEE&eBv-g>l4g+y8aRwgrG3B2sXFmI;)EihO!#g|PTHa$G%KTko+5VT>mB!_F`;_r*W7$si<-^MO)lUD)Hp(OF-!F)7BJ6q2FE#jD`G z1OJIWhEyCrY&0%#Pn#eG$!1xrA)EO1)(a1_GLZNfJ)IAfkx_=Y^LJOC&R4>YcY<3H z+2vQ-M^J;R4I}|x_q2Z1!Kyt)4stk(dQFVNs*G4g>?tLK?{7170c*oAySL}9+xKja z#k&9|J9D2x{dRjN07WjRFDD~(AH6ix6r19LQqmN5LR9M-QDT>Ki_)`0PX3+!tIY@D zHzRn>5Kz*~Px}$cMBH_;9g7X*ML#o4y9@2&C1d%cNE;a!NxK+VILf|sW-+BIIzYtj z#kY4}MjA@aa{xat7aeK)r+Yfo>?B_2*GZo!7Q0BW&r29CB=WUr;ccX_FmDfXt|U6t9_s*vt7NHrm9 z6dfQyT5Ve~NpNJ$GA)?UdYR(!M>&;YSN`uoMAbXM2Qi?@T2)@5;Yb*Ge=*X~tOfLM z^xT_&Lj%@K2+%+muqUDRy18!P05THWLwbe2{onT&JTD9?X-_}dP2h2bY9co|(6Z2O z0^%aYNQTc&#b*osh~;&&A78}Zz|rS}d^KCvcyq#7Q`aPLkcwT6DEPcKSWNI&QHdX* zgCU*)H|{2k;R7742849Q6v;oTzZIi00-nXX!9x74t~ zd`LJP>7B^`?DN^g*v6nVLw?*Ru(nwoOch4&1w+HQuY`PHek4>t9owY2>ioDE)}0f6 z-g1sd`z)LW3Qd}6a__m-$Vj9xB^K?$%-^t zhwHZ<&Iw_GaYs)zu~ZFwOo<_=Xy3gLfhMW!wV3=q%R5qHj}*c!`;3c8Wa8+rJrE}-JHs# z5sxT3{(isPadjO~EFW-G?69?6;l-9@Z+O2PfeQUyjr6W!T0I;!<{iDSrHi6&LqHe} z@>13q$J=DeKTnSscnJV9ReUT;8=jnLCeoSBc=Acr;0lN3;GGRu#zvoH_kx&Uj_aIHMh<%C- z(wBL;V)PszxzMYa_egx`uxvC6>!a0bAY9^l-iA%7gLmX|&H{6T`zrxAFVJhE}~x5lDTwJ0=w>RnUjK^K_(fOBQw9qU|B)T`MP- z>De>fx_goen#drNbo2zajVD;G^mMzn3=R-HEd zX<04yU~-Pa2Of!49&gbpFKR6x{m}YFiKy4Q#a~@&;R!H1kB!Cot7P$iP2@_#CM9KB)QjLHfSHc3SJ8$OVXqe{PCf(h$uHAPQ5VixZ><)bSNkE zALW@+zdx^tn;_SZl7BYm9-#7#t(_NOlyrkWECo_+aoqzz2sVj}jeG_$NKv=eAj+$N zuUq41BtkH#$AJSfVSZ5k)Y^AMW-jdV7lqXgwxs%CirJ4w2y5Ef7vE@JJWUk94pa-d z`Y6BO6zItPos)^1I5l=pi#a=hbndX$+Oj8lfQ~y-1cuDMBScqDf&L-xPbK;ej+m+lxrX?N|OtG~6;})W75j=hb<; z=;`Xyx`z%oRuh@K;@)FvXTBY^mORnv;iCqdw^mM%f9ktnt;quhwI2#Q97EGkJ{p?# zYp!g<>vu*(Q#$wO84(M6T*z2lGdG{@I8L-GrP#yGYQojW2!Z^FEHo18k#6|vQBnCYNIfQ?yf_b+0C=(EUt7*x+5YNOyE+~H#a`}nDlT#UO(ENt%Cdv6v z0WTab2yiCeO$TG3%2e3c~bvOLSpqT|DC% zHC9mYG!NV6%*+@U%r5`n=^n7I-{2l)0B<1fP9C&pov9AnkJ14+!-I1vkPl-p%}
t~y1V(?EwvW6xK!f0mU>zOa~i41PFQyPo6lf*z@4mAB4{KmD0cFpR*BBD+{fqJ#3fI zAz2Aj%2;l{P~W@DoZQWp%5DT?fc|;((mvsCTeTcOPs33{5IK!CUbCd`p2Vd=&wB_* zAbi%P=+)faE5hxa&PGCK>Ka<37IOXmZl9LD0);i4lkv zmXuBsUW4zZ6E2_J&Xs^xhk2i39`8HlJR0>p;(JUBW_*>2oaWIDQ>Y(}2 z3T)RCpxtO-=xtk@tT!Ik-PHG?u_@g>O5J#=KV8-kW(Y;9&o^(6pCMdN2*8?j$h3K0 z`w+gL6*hVUuKx&bR)s)o)YiZ;{R_tUNH{mZHxGk(dVRPDLp$NlAgRd^yztO6 zr;f>@00Q81*@}%!#4u4N7LHwR@sR_d^NVlgu*@EX7KsqM-iPb!!q~L9JWqSlK#2s_J-Y&c{8PX+zMUG#+76XCQJl>P zw5geQx@V3)Y}ZRKXZPj)O0S#2hMUKUE{vMu?g+7(tj~os{XxoP_2NOW8VCk z@#d-~;N2g7|dXv(AM#s;mT#q77P zo{3Fn`BL)+4Om`pmwPN=PiVRY)p+zhu=uj($dZR!?K^AGBm_Qh@HH z7)ZkUgNH=&Z~0+~30w@q(EK1IHXE8Db(w~U-2HjsYHqv+c~rwbb73bRBnM4xHk`anpQ9@Yh&SUPJhI%D z1tdm5l@IKrPJ*TPnisJm40EJo$fHlHw_hpW=2FkHG3$O82Oxgnh~eN>BW^XZ$G7cI zhMQ#pG`%6+YFPKIrn*VX7WMG;6f}SW)(giAq)J|*v%8hosU4wb^{V+e0QnhEf10}1 zepE&AW0WQ9?6IHj7Yp~oF^`2tZV>K-#7SB5psPPNk}~Kh@Uf5och-~G^JaV!XNf3r z|A(x=9q<=0-u@7XOlGDde4KdD<`?G`yhhBSkz(jkOnx6Qot~z6%=zah$K5tq7x*Ft z#LBC^Ej7zvW+6WXD5})KvobCz#d#P;8l6kN1S6A#Ob{NLbw$+W;i7T!0Eg@rtU8$m zigsnlwpy#YYv7hknLk8(McR-kDzV&Ri!#2o92olXo=@+R1PjZT)wQP>ikdxfqw4^J zolk%192VYsj5j^(-m+<@wi*-+9Ii>I_fjsqMBXNRD=2@U_wL|DX2tBQ z4C*O8>d=OQflgX=`uMDPwtDG5qD_T&?^J3yCjTEx-yKi&`~H8QVUwM`_m-4I9DA3& z$0;*Wglt|)N!cT$IH;6S$cT*7TV<6MLS}Zhtjyo-^Zh;gr}Kw&UgNs2>v=uLmDevZ zzqjanTC~Uv0|d^TG20nl(8`ek2kfjfU>{*{}_=$YfUO2F+8A{=*(VCcZ!@LtB@NJ@SRdFwM0u8 zBKmimJZr3dP~qEPR1Gvkr34F_CF-VU ztQwsx|J#kL>a=F{?p2Jq^FU7ubTis%F1{Lq&PzwRF~wSd_yll1m^yGc7CH|8p&*+R z(jWBOcc%T6RiC2CH?=52s{8?mTk6Dl1|v7u>%zkKdJdjpkngwZZ7*}i!90$2_e-GN z5d5uZf-XhNim9oBb-=4bxQ7NjVxPJ5T1~w{#}C@pJ>(rJrvRs?R$Kg`gqO}}GN~e+ zN98dka%uO=MvWS3jSb?DUWbLM4$wRyGjdBrZdax$b$;MX<#F^sk&cMIA-Q9Sxo4i6 z6~Dg*ZJbbpB(mkSuVOt?L~S@R+5VN#bfE?N>TxkV3h?zha`Wv;cJX^h8JtoMa~dcg zd414#c`8OYO*K@1MQKM{@#+QG0DWDIX3wglcC!Vzdrsc-ithm)z+_Ex=m-b;ayZ!m zXUaOH!INDHhr@A?4U~XuYXHKHXl0Rsr4gNW)t8ijH%mGCl`u<~wjAwJlGcan2gYvd zt~`9mIaEpi(0@f08{D~ER2Q@VJs8_>BH16?uNQZgBjz^MSZUL+Q9N9~N40k0xAJgQ zf^ds;vchOA1H!!at&AH`hgq=Q!+`Ic0z2%mMbSKIQ8YUm2DAv@`6qIPW%bf->!we7)NDZ9g0cemy_85cReZStm2Es zK;TBas^uWy8bBymHGAWmDP+( zHOJTi#$dKk5{TLQU!|c%dVMP;?xZRe-O-$nb-RwcCSeY|E(&Ik`@mdKuQZ~L8ARD^ zQ^V{)*`@3hUvbXN-7YjB|Mc-*=_;Cam!bezpCTdhi-RY;Hj}llJ8hP_a^jd)c173@ z+AzJf-e_S&_Shc~R+v9FQV__1W`1wX)nzMy&F4y4xa;Z0{6yBN?sA>Xu3vJ1bK&C7Fv*UZQj70C5HOlk4;lATCAYlb=151|kw9xNSMtKFF5Jl(6sdKm)qjXXcAOkBgOtX>sJ^dydny(Yt1ln5?XM}E zE5EYO9B!FB87^a2IJ_LXy81GaxW%*+FOO(Zdf)hHDU&`n$0eff=oWZye-#>O+;|e& zt3|LlLA5QC{eMAJ`yM%Dxjnbczx3fISz^CNKh>y`mQM;2L1L_KEnzu@8BfhDC)+`2O>lK!F zMglcq`ZU(B+`mBk8B7gn8#qcjSdX7a<4(LS#M=}APH1aaA(bur#xD!G)vJBx+D#80 zSRAj14(-Lt7+i=lO~@!sjaTTw(w*bb!^3u)5?xO z%uM-N>3dY6ilBSyr+#|Xc(f^)=(D@T z{eiK{<;EzwRA<88d`p!X1dfigA+q3a%N%;EyOmDv;zD5WVwS}taWtYs16cnXn_hEZ&wz)`QqzNZ1_b|B=Si!c zG5iczuXPpQAq5{y+|Ej(f*y;bJS0evD^bRpV)gc}6i<{f4)3iGe-M}nMJ9h$*yB|L z;y3F*jTLsREac2BAAXIvyxxFKpEcn7)RphTHxlKmuHj@CU?M5-n)J-38@AXVq01(!RM+c*)iAJt#zgL`P$;i->A1SQ_L`9A%w10>JA+@1-` zSzCzNX*-({sqvc;)zB}utE@!!xfxss@|ap#NucS!Z)MYa2iDmY?6iJ$9l?;Fq0CVx;) zWzS^-9$xu2Xu2Z?fJW#nw>w4iwj%-J5 z&As=V0_T3ql92&p{ls=g8>z~FF>YTzHy(t?H(mLsdu#p--qG5g3={i5`VFA<=ysHdy`Lt$}C^W>!S0BD2f-%w-K>)6lc3Wfg=aD(tkYp=zitH=crMOx9_a35uqmzn4XV!BC)w^_0_5yhPN4 zBgvwdrtk~{__Go4j7gV0_cs64rj~@m=G?9mhqjHOEJgzkXER(PYA9sJewTAMDreN7 z35~0vDV0R&N{$O3uWeen+F?j=hwR6{wZ5uKZo<$mIf$1qf)NrZR+EZLlCNoY_!4L@ zwPyK>=SAV5PWG@rwpL}7FxKc*q>OkU-}q% zjAJ}0N3p!M8F1jrAW!Sf`x9#45nVj6lf4w(Wb*7!>4$}XxPOKq|4W6@Uhb`!H^Xrd zX|9j|moC0&1$bW=f#lcF{8~f`1%72{&LrOa0FPPaxIusWaDX(K>Io!J=9soUZ=n zGLryA&EYl!CGvGH(Xq~%pB;-ljIvEi?#2+He1L|xPZox5f=zl@pNvc9w0=V&?ixaKOb2(9={ie@aop_I8Zw z;c<{W6*!N739|%Fa{~nJ1rS+fz@K8%FS2gsoyPhLyp7=_=m$}Q-G$RMU;_F{0A43~ z)JXJ=4%y0|W-w$uED_st$ooS|r>(7`athm4SjTHIr}*lVO#uS}v#I8KuxqDj!NkMs zF-iv4r)^)RM!xe5;9DPeUv@Be?(J=kjNB?-J^b~?cy6Bws}-?oFn^;|fR)rfqFC&g z#ttnDL_@M3AsBF$*`~&UB}(xjQJoA#uuLhE`+m{cLlL=ZBF#FF*O+_9YyCqg5la9h z+DhtDtWCj^^{|*s{Yt(#Aj+`0T7J1+aMZy3bTBrbgxPb8ixLr0T{p71#Gb6lY1;vmSz8$N`EUlY+3AQ7h`ZK2Jjpd9vq8b_52TmhwI~_ng-L5bm&(Z6VHgk z=?mX{fu2xX7|u;!@v;xd>vrm^Nx7Bapo9UpSU@q%N&tvU6U&TwDkQ~t9)}exlb;-W zkTsbu@xBP)#1h0%gCo~KnR$+YPJov=z)>2Lu+Dt*2SnQ3qo>MLrRojRK*|JsgYIpM zDpreoayJ06##sxe$_BbmDfrgVN~3k~u*tuGrmfp=r&2(l0^g3xw?aYK!YLYfxFncX zw1{N@Lkhq<`Q8C!+RHGrFYnA~0473#W|HrbOt5>EA|wi^Q~3hd@@XG3Ve3^nl)N^VcAO zL{<^~gJutmwK~c_#lT9)x50wOy@7&ce#p@9eI&yIU>XC|x7m zyy#(6wDK=q*|$ewI=T-j(sEZoWdFpsVA$A}T080jn;fT8ZzUZdWM`RbetpyJ2`Cdy zwQ?xx#v z1`|BULI>6*`?as!x$79x0L`dMm%TV}ki{sE(yXw7{_Et(D67vzppeV7*^W5qRuJut z%D-hhuyAj|3}iB#A}KrwAdbnH6<+zkwZGN*vn>R;;E5NW7Jf5*8?cv&FJ0LZiA0+JsGkxb4`ss(Tc$vq!tIZ(dO*z`S<{Pg%J{;n17xxen#UF!D1nj^cM#+Cis z->fsDDM(TjW8dF*6cmg>>)GtRHPe!YWI_eTo3kO3H|A*XQ!}4>(wO{-<;NWT&?4Np$FlRJ&*z}WKR`w&qf0I>p0h>C68A_plSRPfP81ryyZ6y`NtHV}>MHB3 z5I&@}f=uNg_U(0^S%6!XU@!uh`!6J8dPYe<*RpW2{oeg(g(Chnz#xt@sBT{sLvRQt zGL)u2`Mu4UI(2`J96~MdH$_*$ch^vy7V)Ynfy+ixkTf6!pubJXs=T2DzFy?w1Hmd! z7DM0;nQCTdZJvT&3?htNNdE7`uI#@+nCEyN3P(r%MpPZJr;XvQvBr`82xo?>-o%sg zZy$Tqp3x*V7rAzOffRTIP~eJDI26Oorv$=MG~f8&w|5O9ojjnK2pN`KVdN({sH;dS%ZMwS~JwO*DCvh4PobMKh`aa0;DUTs8@d!iJ!O-zk$DF_ex zv%fZ*>2RHtkKo4L4Oq@_S--lx!NcCJ8?>J!N%@&6tjF#C>^Gd^RE08nPKKZ^k|Wq#dwZ(`b; z9_&v3aLOp0$;&c3fy~c1_)sEua@A@N{pdX$;C1tGkQ{wtkG03LpET(kz^IxAPXXfK zoRvYq^4?Q^$R6Znmk#8MLHA?Fd+TLO>NJ1FtRnn}0WMsL+eIA+{=N+&RT_1s%a>Dj zhcx8YiIxkUgbbzab4`_2r{2YNke{YGyT&(2`+a}$=H3UF(^uoGFtH?0R<@!mwI8%k z^DG}#kM0_=9nN;S^pj5?>Fx>WZkV`&mdFrCKbxM^=>Y(2mSl~<8=$L(!kH28%AF_v zQ98aMK!QMT(VF0XQdz!_@Aiv0kKV<+2o!|%n)ybhw0X?u5|1L4?cLaN4zy)uy24$W zTUD}MS1EAbfDSI?Ha$sEzyP3wgQR!iiX{Fj2X5e)g|6OSfP{D}u%p@CNi_zhBqe7u zAc#0>kec>!9=ij0M0#6$#p=WG^ zEgAQ0ZqPj`RGBbx{#x}F##{x4J&p3DCC5>ju7-nKWkqqecGC~id%JEggqiT$l?ozF zQ=}fq?BTzkA~OqAO`?n1>nKr@)@%K$^qp-N_HMbWD-PAl^S;|F%qB$Y6yug2$n6$e z{XG-4yeiq+)m4j27<>9eOG7cUQZ2=+{dAi7uk8*?&b+kA;S~#Nw&Tk{mR`4G@);>G zJbJC#O@23hvkp74Ag>J4N*pI8H}^@c($)BFjLy?%wTdeAu$T@v{-S8s=A zmDwiF`>)cQ6e@sVoGWH#-|25=h4;p$JnZD$9!>*g)j7W&3g43}57$)pNMER5a=k%dB;dw-7XToRg10HMg$!DB9 zc$e#^80b#EAIls0(`RIUcfYR0g1YLi;vE{9htT`6@I3(#n`QsNO&--l$(!$;pG+0Y zN1S6_+jT6frWchvEnw1L!5nwEQ^QE+e}((|C8 zY5cB z+lp?|gRd^Tp{h^bhBuS*Tx;ce{QHUuol_gy-b+!m&FJIHvP)vg6wAIu!QKdxMJp5i zkzX_?3*@?|XyD0u{(?#=jJWM50boJ{9s%~&VC`f0#@erUS)qWg(-TGqfo>b9=KO9% zq5Nn4hTlrQP41r5r@=lH@_<5Ak^i0?%fwfJh)4Bm!RoazQaciQ^1daUaJGB|dBS%_ zPd>ilLdgI^&9GJD!Sj4F9ExH;%?MbWTCxBWEU*+j;H?>d@0R?`e@F-4+Va8|j#jok zf5kB+>=Td;Fuf_^GW97lnqCxUUgv2`DWHgBLVSvQV_nUfMyvP41zw9ADDXgeq{ehx zO|DFbHdSx-DT=Va@OZn{q1rKaiwTTb+-Usz4(@yIKFjpp?<}|7Dc!lP1dwH z@nPv`h4$sG3t|pxf=9CD8eI2-xg%ZHcS;51%C9G4bB*-;;~p_A3*arlU+C_lROfm_ zjxT0I_C`qo=#IS+j{6}AE|5xeLk{Hl>pUQehCnl<*q=V|`TV5!{{BwKY@oda$2M6N z8PQ%0xIv68+}drNUl@9UCO80M?OdbH&0}^W@EnaFR?vW3W;j^|pQyuT zzvtan`U9WC?gV-dC`Go=(RUS-xmk?`#ed11=dop1v!3}-FoAF>G?>NB44qDjRhb>w zh)Gl4sC(Q2iQtr=HN;Pp400a({X+^edsgu;A1JP5fzXf06$sp(u)>Howr@f`U{!#iXtP{vESlbuNNnzC#tT_3}ch3 zj_sFUQV^gS^mC+%{MRZfNvsu`m3*4AYXACJ1uCSC9mI1w@;jfERt@H_#!>`N_jNo1 zNP&jZ=A7WYrWbi=R!TQPdKayT%l)_JBn;>E#kAxTEo^ilAIp0#mqhY-&d8{IIl`I> zou>WDk?*EEpo=0=F<`Ss<4A}Pc5=kIeyXFoV>15+oedT_U}H~zK7OpTa79q4{lkwI z;x6Bsl6G&B1wlXq4dY%f$_kU?wh^uo#nrT^FC5vu z0cGPKhtuJI6B9^cd6-BW^O6TfzK$-!$tY=&(!lK;il_}m_gjh{D56G;%ik<3m=gFA zSjWekzUd1#{D~pnd_Knzf1Z&mIG6!Hj|!rv&U1k>nh1kKMW8;5feXwy9c=N@je9b< zvx(<+hnE)E6vo&_+!`1dXh5IO*&K379lftHE@4|LQz)ONIBi;ea<@dNh(v>exT24T zDR+xP9{x?y7VB4>%Mq&?{TECTeTiF~^SF}=KRHeuRq&_3aQB2rPan26Y87~LTOF}~ z&`1L6Ww#}TWxP&-G&o{FiU6Lo_`{eqFmL1_@1_QWiM3m6vBfjHiIHXG;J_?U_)^HL zn~l0(tcp~6WO(z8^%9^bPh@Kv5Ovo0cxhn7ueY?O;4j_5+ajt4$0~DL3wH;)Ac`WL z0o}1$hn018s3bd>xz5lu`#fd!`+piV#e3f#kpt2gmtV9;CZ~;F2$Hg*Gf0+cJrbUy zft|3+@5yimIZE(AfoO_Kq{k2WZhtw}#QOSJBRSxuhdRYdgsY{T$FWVP)mHNVtUeZd zbaVouOz-KV*7iC+LzcZa399drnBYO>n1*`sCx8NCQMA%NLfue4lMgF5TXy9o#F$SM&ZA;W*Llr=+gClM_k#pBi18;J?GF>w$pNoj`8t0SuPsmkqJVpZ>A-3y z<{O;5cDa~9j2!{sSrDIUr-2$)5LY@PaQtB=d!zE;CM2J)D(`sTUVJXgBc%1hwv9?* zkxG8}kK^>6uUbU-2QPPWIpun8zdNZMKJ;svgfwIJ<50uB01Bc!3OW{k?1jLGr5MTs zx+%bE7-uLlGFBPt36K;A!M}$8(SX5d286MMg3vNSd!t{RVrFM+Adiv4Jal)9v|5(f zo>f|btEw#yso#_-Mj>hX{{mQm=h8xQ*Lg%wFsjR?>@GJiUyoETd)Bvq#RLhf?%Ebf z2f~1W)S13#GXFItF0PbPfP{S_htTbQ#gx_N;RxB1gj9yxv@~t+#}A_<^<2}?h!9`~ z6SU28+xv$Ah@x0yknFNn6!M#V{ZRlUv*euzf0G&=5xq@S?!=nW2qW@0c`T@n~YR?X_LO#lCziG`R9=@t4qZ z0(%fKy0WBDkwN1ustVwKj<|JCg&Q9EFR<56-+w0s(V}*&@yFq_XJ*=iyRD)fN)#<6 zR{Wz_hIlC2p{qDcFcWY)H@b4Oe4}xJ0UVy1HU1-UhJLR(+RKy@d8j!=YAlt)KeU~O z!umJw{4TitrBN9n5$xRJj`!>iKJb5YelM{(DM=WCZ0+cn7Gi?<0u8)`A6^lTS$YrJ-%S8 z?=c`;s=Mws)G-IIrQQ*!8ujM$#gNA$0IZA`1Ds@3zt?TJ8b`F(y|<~SFCg7&0ryxh zUuk6}HROBEOex+udm-o&Af3FQ?9Nep(b6xV=+@@0{MV!}*q=+X$3_UlH+c1OVAA%) zpeUZ~Iyy6tf)`%67U-Gfe|3bBf8nped7AbqW5C%^42~0YZCDWPb4T&N?cP0x12xw6 zdM5P9B3&zoEmwCYxP9>2GGn&#y>GWW^Vf!d_YVVy7R|*lX+nwsS$pi_>(Ma%!&tS9 z3b$To@r%^>+%HMTRcimwWQP8nDakV*r(5irq^`7u2QY)JOQf5DubG{5&YlRUz3ae) zu0BY*0dKw?!GZ^bU2N6wOfv|D#kAc_-4R45q$(uz7PFLi4n z4x4!Ck7Vzt8gxz8gl~sWPqvn2Kt4twOwq&Vr#3VhVZ_0$;8%ITdUvD{Z+JEv1Gq^L zl-vxALt$cq>O5W=Wt$7;OJgR>=wj#BSEI-P5xcfl@q8oId;AOxkVS zkiV!Sd{*53`QOvEQ;SZ-;NQ?M{MNk{?~{`MSM~%nZoW5rX9&JzgiHL!j38|O+CoAz z2LB30dAfz(A9 zas%0`Jc*~;*Lt}&Zv9$K7MZCr2H#FY^K?T|U>=-Ui#FQX>zz11!vvOnc>+Tx`F#XW zcw++VuRpFXo%Gl#8nNO>|B#;P|f zGKL1kCC&cOdFH;0lt?fJB!$wre}xs8dn#)@?hlI{n)vju*9o=n>XfhS6adA?A`h;j z$saP`JH}X$hq!XAeM$q?v`FXUIeI`&FjuRZyituMn4)B%?>k?VG^YDa84EaA-2UjU zgYsEnyWR5h=(J)J2^gU-Sn`Fsw;jD2`jb+;eIg=W4m2F$t|f;%x>WLcX3yt7#d-pl zz)HPcXCWH#2JY4Kg3z~k3MLiEr1DeL@%e1IHwfW3nPxpUQ zdfYpY#C!H}d>L2iy3m8+C80%{;Q(>}HXu0a$dIBD>q2orLL+QXY7_zDmK z=iwVD5Cu6`Hi7QD1#@9|mL_R0`4U-!LO^}hG>R}0)%0E~9(V51s*5tHc<5bm)?FX` zmU~eL(lCg9mWcXwlJU3ZEJnbH0tatW>inLNTy^x<8*&%ud7gaw($(Iy^1&_(Bp z3-IouLS2W0iu^p6!Y9!n6D0JWW03z(9Ml6|u7xCbGsfGjONkmaoO?3L82#tJi-q^K!EB+L8o&!N?!U)dio;L{yYRG5c6Fm(Mf?5Jy9*?Mg zgyGsciRb(b&hTev)qR3~l39;Re!V@}Fc+LqdPUV&g5lE)pJ#UZ%pJhXk#^WaSh8y} z%n9uu|HcU>qW9{cSVj&=WoMY_+!vqbGI8leOg@Ti)?51g|k*a9fr+K?2CO z_Xmpe+76Kr$p9ATW>l$hnH0<$%?MFy;Hr1t3xRq`Yd{yawcZ;*QO}k}hM0ivzKwGD z?b)p0Vr+&T3UECD@hx_$obM&bgo38dxYl3~%j`?l9q6^j{`25G6H24{>0-i%+MTE#fWq^<;=maIxNuBVgQF_lgFXd@|2k(qP8o;D-#*;oxf>FJ zx`^K5LG^tIH3GCO3`@9o!whnkcLK5~f++X*y`%-42LsKnj;}q#E9`FQY+W*im4fw* z8U@4_F3+!KtQcCVdt8d?^`>YJj-b|$_x==JKk<9#;j=^rU~M>0<^WT~l);_wofx?! zedqY6p>M+mA0Pg)U_p$UHTdN8=|Z4(J_kpQWav6=xJPQ*bA2T45F&sf#OmGlXTg!E2{u~Q^C!?YS~r$vsF z+&%adw`hLiwBqjI{H;je)mGpvP=uYJyK-lbiOFs~J#Dp4nCC+e)7&qU8wO5&a}~n5 z-t;&8QJK#mNF@$BqtO$yw@DC|@be1MPubm9v`$(IY4kD!?A(WEbUz%POhK8@T1*Kf z$%6@qv?OsfV~vG&pkj!uyrSOyo)~Hk1Ew#!dA?2jZa(a6Lqc?eub?z9z^4#G?%jd< z5jtY!^K7E;Q)nKy9}}^a=Lzxt;vUVi-a>Vuqjqc=y>`~u>%RcNu8%$zN8ky1HQ^$K zEq9h@!`yPtPYhU`Q1oH=pJ1lW2xcn3m>P`Q3g>?Zjbd|H(_6;<|HX-((DCO{bOEq# ziaf6p0;hoCl;oXTCqrCj%*jZ{%`IQk@xO0IANB7Ppv;2KNzs*L#C{$VZa|WVCf;fG zOo#9OkGDx%`+WIsPJ8E#p)U8CsoyVBpAWK8b+<=VOt|cdpUF}p-qu5|%e6P1zG7>W zJN`{Gfpwgz7&yPZl}81PP;Wr@%_S`8dXT#DpTU^KM&1wXGWwgIu@lOe6m+LXOb31x zs^D+{a?iD_0?43|T-|LF9G?>3qO-$o(=v@Z#_J0Y|HB~8|G`?_E+Pp;>wmK@)KPM= zTTWox8J|rAa2j4oXk)xpr#`U!EwAIA7>|bu3xF1l&2Q=)05u4j3%-?Zw_2xn+a{3= zF$0w?Gy}``Pq6N|6YQ3as`OXc$tU$h=%hT+j>k0~yj+E~q1zNUdoqESb{x@E`MJ&v=ORK(tFa*EXo0umv$?`JZV)d6(nrhaw>HpStSjefPi^N zkbCAfXg~eAtCATg3KtDh1VI+(A*JGJZy+%ENtPN0yv%uJ0CO}Vc>DatjrR@Qv^fdc zQqYYA#Bw=bJPUYXK}?wn4S6Av?F|h#T$t{^wnKMs1Dsx4vP3ZhNakaGA74&~DY{>4 z3FI-r^n#T&nl7l{7dH0#@L~mt^IfT5?>!Hl5>W&+q42vtkTp%Gn3x20LdkUg@Q~bx(Ies6_|22jiWglghPY&DXrKEowav5zkbo(I&&UyUtGlVO7a8Mo5#z z`8xpqYNB8JkX?(>6GBo zzB_BG2TBLX=0ni6wVy-hdj^pGI*h@eNf<46@LjksshZiACI+gf2J0snBgHl*e`=uc zHzddb-MEHE#eS%2npT^9LU`K=wMkiC)Vb-GMBb&LZDYWC{&Tu5`>cpSFx%xs6c9YK zQb~qLp(cW6cCQdDvbW$~lL8cAyD%hoHgogTPtQRg^h?^Pr1T)clCTRKj}opU=|HyQ z?Lzw6jl|SWiE+LPPD=3czud3BLr+sgE;nfoc$0OD5jBm&6SW1*5{tBtsN$Kx9k1I; zHoFprpU-~9K!!rnW_r75$t#xuWtf-e5T{*EMcmF>MR$|KlNlfJ%J03;>i^+29?d6h z!UM7|%PA*kRHzR8KCiLAo-UKjB>c()yK6$d<5ezq;C$a_@yeDAOpD!6plxr*%%hEQ z1G(HW*3eHxHaU$;SI(+oRh}(qha*i4pELS?_$edH=K{>0ZTP?(Hrcwm&RvOGi zW3E!X$QrpC$ox|D(l7^zMu83Jx0kRGr$d2wXxg{~=D? z527&wJO5$Jc!UuwFjVg;yG&98dh-pzFKEH2NwtglXbYPu-9^nH=&fP-9g1d*Km#Bs zpm2;2C`4@OLr}OBfVW7DKH9`C)IWme6*vx251ZzJ$^#T+>TJh}qu}A}-)I*}I`av~ zYcoK)#y!Np(-GvNT4!->O`?hNAn&NKrE2Tu>wp@MSJ;V>_v4Z^;Zsy8_sTu9(71Sm zzdy!m1Zo2R?=(nFfWt%TsjSd@@S-B_lyg+thfn9<=v)>VtiH8r7_R?*9}ZuLKIad< zws^jEJ+-!^Z>?&t@k-+drfj=JyR;u++!U9!LNBD&grT)b zq*x(}*uMs>N!#Ksst#&_mbsxg<=|nViV(YyN%(*-O?owPGDajzo+?dMx6OVyD2?Lw zx8CZ#_!ID^o~#m8G@zBhMFcysPMEmM;$N*rfvYtw**>fpQpyZ>*iyP)dL?^lV07`M zQ6D}bbXBgF`-aZ)%hK}WE$beIdI~c+nyo)EBn&fw%++NnRAxQ2uB9lpLK71y`QASi zC|GGFVDb1Y`+xk^D0v|e0AGhMaTEVtuCq{ra0K2{fwKG}3db*^k^C%<^P~Ad(_}hB z&{Rhi4|3@N_jql^rv)z3G3PE8*EK2zL`qXz~f#5 zv_q`I<6EkJO$)^uKpPtnGHLlz;rOilT zoYXk71vVR`Ku4!;rZ)NQQ)o?PnY7u?9b3Pxxv)1q1eX#;?x_qCpZ#w%+sL6Rbvo_P zWo+Icl9m=x>nAnN0I$ov@^XS1JM7u3QIfDVfI?bYDagQ_slG8a%n!XCKtb;0udnD)W}l1WTIXM{oXvi}v8reIBGXTnuWeE$O-_gZ*+F?{&W8N}w)oLT zbD^*5y;*YP z7sw$74zB*lJrk=_s@btPmKfxUQDiG5Lr_3py=yy2U-Mmn2*l62vE3o!qGyR0Kbld1 zqNYq!x0f&zkAMcx%})l~bq_irpcmXTv&s@Yeq7kcCd7za;!}o1?|BsA8_&JXC}NI! zb>|^%ItmObx$rI<16<_KqC_?fIL-8Q9@1QxJX+``23UU+3_*Eh+V2d2!%D2o0K(Iz z`-jrdBj#W5EEzz*ix23L4!+6yD$b*Z?H;WrIl(9c@a`dWdKjSoZb1h#;Y zhY-$s-#MG za#*+U8Nl5=m%aLacy3>USydtLNqhU z*_?;f++-HD#uWtL9cZ(_54s7-iP{tpR>zfTLQ72=FmYd`>ZU@xO62g)8-B31jFR~n zuQJm3l3ir2$?A-AO5g!o%T|1VU3B}0MnEI6L$h--2U%O6j1pJ5uIzZj02vwdGff}< z{~Uh`=p8(dE&F%%n)_9piONk&_73~s-%`)hPv;IVP{;z+X6F$8ia(;Co-ubk$qWm< z{k1mdi8%(;j2yWB`>bVU;52tFJ@dOD_;B>HPz?pLF8n&?8@i`fyO(OLp3W$G4seI4 z6;}2ZZ)hubIX`4TMlPU0@6%{f^!A5WX6&HM9*J!Tu}ilI5^g;oyu(godtXyFE{%Ok zz!dkrEQ5UL@NB^V3V~AwZ;Le09ZNp}CG5AX_*Y55yn8o028eqw`LKO~oe&Bv1;9x0 z^pZS4?goj9Z7-t1L~u{U0%r?lqbW!OIJ$|{0ZKMB5CwJbl{m`E}K0fGDxMbrV^(D40`xe_*oj?+9ZEk`mQ`8a)Mk|@}8Wi zybo_OLgus!HglIpx4mHJ;Qi+ZXB20{uoPS!?Qh5@{;&$=FTLrEtZ_5bpzcY*`ET4c3AXMUy|7@IMZ<+4g3IC2 zo%Hr{dZIx%YtQ$UI!RS`!h(&|GG2;$Lbyr|t_*QJ#?;bFJ$>UAz0o`Omt6W+GOqB+ zK`={KvY z5U^?!AmT)^dFLY1)VNX&gx}bI`Z_I$9@C#jcRTdjn~X+!N>DPU^Wk&H zUWD+`d6a^jbLwVs$hEFVN>H zcw7B57)2Fjf8i6KCCPeQiM?rD%+X-k6hpIf^*<0o(I^A+gY_)7xWY3bfJr!w zAOulgCUWB+UXc{w&oc{X+G_1CVmFB*SgtmJ3AhK|!J)ca{zlKST_w5myZh=;EuSY@nm z%WX|D)U2rGT*=yU&Da}&cC5*|eEs-FL6=x)!K1(>bhPc zFPkCu1?DSW9wSL)L0k{jh^PqFMe@$&Gz_3oEBekz0V;1-9oQ7%`tF1^55kj+5hnwJ z&dc%1{1b#cQ9wD5rYn2k(2gNMQsAFjG>Gx1Al{rp$z}k8Ad^V}(w>QU0~~JO(D7*XqfF{n=-&!uiZU{gYSyOuwM6Q> z99;veNaCMjtQQSYuI%~v9ZrC^yK24dJ)fpm=6&x8jSkpWe|zqYQwztE`0BlCP9L->tj0J5W7#)(T;H+w!2jIN_SlsTqsF!7hS8}`){ zhZK}?TU56OMqj%fs??ug#t%hA!2}`Ek8FkJWY-E3soN&^@96nE8DBK@3O*l0iLe7a zD``dnni;bp+n#kuiMYs$|1!x|_4>NHX#{Ry5S*~ojY;Y&BshgSZ%uPWvlnSWzwO@x zUTPBD&q66^-enS!QEdvou>c>B9?O60ovRlBeogVJchaMeQv6LJJ2Mq1;T!|ArG$Is z1^`)+{nDw}URm{`)wD+c4qN$LcH!B3rZkyzZ@?fu>yyKlt=8kcmTav7bv~B|YxXb| zaIWrTKWBd;f~Xy=lln+5`HdV3tH%$jyy{jAplNL(3Rq8d&Gjc*J-TUD$NuJd7fp_V z$FoAgGKL*E0e^IqSd_U3*Dt`k#_QK>5)AmJD<&qmH2mRu`pX=58?5aYJ|f=-LKD8n zw05Q;QtCLd;V+W7Skilx^~$8&rQ^=;&qC#lsocEL+}7m#p!QRe#dk_Ivc47yiz zY5Dr19iKQnxs~yxOfn278pTBJdrj$!Z)~Vnhb4!eS<_r_M?>J-S9)g!;$Q5{&b1DF z8>!tH+0HrMe>S)I-`OaDlK>Ya;s)QmuzM%(@znaohlzdO>z9cZ4N08_9BvP(>_}bw zG4?fqH2O-vwoGWdUgSatH1xzpzr1SSoIcgQ?Z=oN<#uH`Q4`+oHq$4a-e+SY%DC9$ zSB58*l7Qs3)j(Hq8|Xyau=TzQyRsxV zbRsRy_1@3%vUC93;`8~#R1cVeo09&xu>7=S4dhGQvFE@&0o~IkGW|H0Dkbx(E~|zn zl4?y9Lc<@}G-C#%%J399HCcuO5~wnt0df%Jbt`;g|hRKi{$wIhVLmV{kJ)T|;ky&AEZFkobLL znjxFz=_bd{sVgYt(@TBU9=Ds$WG`yw4!Ho)u4j*$=c)qoG{(b>QQ#cro}m(H&Ax$5 zquSfLgZI7tDo(EF)E2@%Osn-jwX&9{TO%8z7yL~TCY-^YlA3VQbY=HT7oEqq-$ij* z?`!Yq>Mx+uf!oYgqPm&3IEghsojdM~fNGp7?NX|DMwnwr^{W>gn9JUj(A%7JDTra7 zXqZ}hreAfdTj8#Ee(V&Ur8=}txvk)fId{Sj!|gP+7afP$*s#U^8i8wAi=oKyj z_|ky(ARtOYJU6Ewai;q5jDm8_hsZS$#N+^;+!XI2Ewg=O)7hNwiQnQ_>i_h;l?XGg zxdH8e*tJ_pCOueL{_5FLviscCLf?cg$v=n*3D>@Ob47w3NTyko&#?pKMe^6e+3c9vqD0 zH81vhhtXSR%_$R>L`WskCxGEQZOHWf)+v%?Wk%u@*&*3Gk-hi+ zT|VF6?bbi~r&}+t*L6L|<8gm{)j#rIwU~VJEzA4muY+gB8jevgHz({eEiNc!&CffhK)||F|AfEbq zmqo^YNq1wD?XzBK&qDH*-c=QKHlxum7Tl`G4hnVwH>wcdw-6~JDVPZ)EaO$KD*h3Z zrs%reR3xvGz5NAvUL4#VYvO?rC;)vd!f>i`e+dzY zcMZ#~kfBCiBhZHdtov$o*Pc7o^uInKt~^5UKT{4TZ8J9G5iD#tD1n(2vJrY&5P0lw zEjP1N8fp!0e+)!c`q1y-UhNn!eL^0roZq|h1#y{6f41T*N#5qsQP9v zBP7G32LL@{Np0G_eKS~VGKa6S7{Cj-Qcs_+~>_%C)#g+e!q{(C7TJhK3a$boS; z9Vnsr;&%_hQcHboy(nxzg6+^@8GBq0Sw!?r6B-og)7bjA;2eq5LmX*R03?NPj%V&NDtn}QN z^|kTQ-V%fc0urdZ#9wp#{NqGG>2tEc8@R7LGWwa^z#7wlfW2c5KzQ{F$0$t(d~v6t zL~3uxd~HAA4fOJ0?VtYZA40q+4mFE>#sUV;|K-FTdA`ph0oSW!F02F4zh>YjcRXEb z&_@f3S5uV-r34IXH_^Pu8`P6`?^G=i^}@`l6ortLk2Oygg7&B1tsh-@qlIlPlMYtU z1o(IS-(>N>-vK9eitpc^K0yKN%E)?&5=R7R$gXJ&6khtLR8G};OQ);j}R%PrS-KV}W?OYFbA{)R7dlNL&&;D_nL1O#fa6nGSXldx12Zmz*} zDFqIG<>8FMz>_%A2g#4G$#cZOgJziWlXp5B1&6~^2tAy7+}NVz1HXhMgH-mH=(6rJ zlJo{;Pd+)9*pktAaE-3ZEZrubc>5s0^|@BN#B&7PRrUXxhi^992CtHmNEAtd#}-Ul zQXaVf38N{XX4%mGgIOdGjb{zOR`;e8+!4>-ogA-e3x$j zcR4+f?tqND9)CQ z$|gHe$|3+{-D0Wy&s7-|W#4oCmWYZQd^&h=NMj7x_?{2YZe7K#rAO@BbIv`%@U*Sv zT!X|D`mmN}{&JGvBs?KS?&#|b!1WOs(Rl-~#rm)%T?d2*)h%r(?N;QeuaI+0sO$|UWM$LKhgvADYvCe zJ_>bh8+?s>DNe(Gukx(IA38pi&+}bOs>l zP<))Ol01Of!zWR#J#!snV>fUs4hf&1A8VTp$>LH!UB;cFh z54&e!8<&zM+#oi95-*h@T#VNWe{zV;WX_pY8u9}p0BkH~OL2Cg2&mRLW z1Z}Dq0cDy> zrg-Nf$S@{6J#_{c$*S}K{Mh>!!)#EezPz zv}Oos{v--57o?p+pqIdQ_Bsl8Hf}|!=*L-_#QuM((;*8kNQU0Z$;i3SVZm-%iKNi}Nd zgL3%O13>tr&R2069u1N3`R4nY4a>qi;t||ZaWccw96c@p0iTx;oTI^W$Kyqu>%moX zraUP@s7Kejy>U$di1`XLf$L;Ly%qf?-6Z1^9Fr}r?y!ZNBLO+%*8=838T7szGi9{W zwiegXCe#*u(SI(c{NZ0cN~!<@;AVfnFrkhBu1kE+;%I(>0IL!%t74@uHXEn)$}CJN ztVJ$x_#?m_4Sd=4;i3MH30SeKJx>nay4P`b;4vBTv7FUeGBw&+HOlW)nLoHe`2n%K ze4_Rv-*^ux5kr+Fw9=Ijdie&e5kkBIuiWJEoUireQ4oMP?f0_E%nOWr3O}~}>oR@? zTX|#x@HexoDLYX=$-tRjKuGEGrQXp;K)p>RIN~Gz`7(qx z0&wV@39w)ENuFMh?YKvOk$}QsK8=Nnfihq4NabwaK$@ff`=f~q&#K3m%qRf$F`-7F z^X|D`(J27t3rdB&7pwr+BFt38+OH*2v`uVShKjSITF=vX8I=F2audMlR z+G0E_%=Dck(oMB|W@>Il=17X0TFaq*-X8Wq59^!PsRhUgo(r(1_)qzY`{5C_F)VQp zR zQs#L(B~LlY!hsd@Y=8DHyE)3Ee)qp$Zr~;};9-CAV{p<0Vtq+HZZX0T!prBipgO!* zBOXR#T9%3bg?MzICiIydYJjD7U(=~Q4ZwBOO54zAIOKQ4Q1K`b&&0Dze5yO;@T%GU zp=W7!z~n}&U2}G1>9oXWE_H^4Up44adhReQTJIowV}(ok%n)L8OTd;LuF{KMPy%>Y zqz%z}2sFmR*#@ltpcAh*&iJ@K{zLGd zHOlpSfua9*Y8sFp@eCRyMEo1czCgedIH(p~;gR??erpaP&N`;@R~!ye!w4RYqm}IS zsU);pv2Pr!-$fuWJ|G%=KvI4tSfs_*-OmP0(0WrXi(tU#<3o$)78TD~F7>wsoHK{CVX?+Qxm<$p0wbti zkf(tVqNX@Fy!TxxOKkEgHiiqY>dZ+>Aph=vkfHHLbeV)sN$-4FqD$w3Wk#$1XNpkrN&l9J&N2q&jphB00GaD`y)qm8t%!7XWCV4qvj1;E~9{V9r^#lb6&iO z8KQ)2C;F2&^SiOv&603IRwDErr1x85o)j4XM0AO9n|G zu^+Th_(X2>F=@NdF2J9rYq^$>!u`A}mcTr;)}`6Ed@*annSlDe=w6NjGW*W@P@Z_b zr-y%00K3y2~#g82$Ut@BCiUtRpL)%r@YINB}Pth>q@Oo5~O5 zxcO~$dchP*+Y(*adn4~S4t0`@dmjzU=U=uwE>r;&5{suK0Paw;qJ=UJco$=cAAA3y$2OL)ovUe9 znW2)X9+LP^1C4)~D(Xe=@Qw?*kYIv{Qc)=_@C}5yVT-*L&#Nb$a^xUa1TRyFh9qZz zU^zFp@-YAwAum=y4!pM$o;IMd2)-i_`VW#{X~SqbKxkw3JUl-^N>9y<#b51Daj zolkyKPgIKGcS6aR01ziIWdKjvaf!ABM$mQ!@%?M%*Muhc0GtXSr#$R^9KZDU1t~zU z#^rImqrgRQK6!ipR=QVigCIP6c%g11z+lOd7vPlnw@Y0b7!@!8YF<;JX7JD%eEC?OMGIE0Tj&jr z9bLBE{Ub&4J5!Vnh<)8r+--}O(>Lt9#K8W0sm;eZ9YweV#@q9Y|DpRJC~7y;VXNI2 za}m_$=je=Dp$wW^n%@vg?l%R_fF!(xu|TI=8icQMTdnW4+U+LfdHz^+R3r>4JN4ZHX{SZ0+QEsOb|SY(-rnNd)bdD#%B()N;6wEo5esn3g?5u+Xctu zxvP;_3no5?O-S$(ymTI<-B)D-o|bX96Il`rdkR4(AFv$YH~k2TD5C}03#IouKX1ai zZsnvGtfM0g9Vl>z@&N3^gt}O>vW(ZyH2uKv-xSCVp#)^$G#PjZcP$iPWR=z!rph6c zf3CTKFtVUmlz3i181n16iIOlyz|E!)s?!^25jfcmCc(=dmq?DW*)3lJoe2=OC7oVE z2}nS}(W9n$!(0wf8Vtui68(HmsD9W3pg@6bnAp(^H*miXu|{>$Lz^4O6$85HQiFhU zA)GhA0B{fkO%Oc!K4X>gHwiWoz|j@4R_%!>!UN>#6T_JS{;LByd7h_mh=t7?G@y?l z!R|TnRPIOjgi$~JEWF~De-+T^T+4F`?ZaYZIu2^W_5U@i&o3vi zHRi3X6*qn{n=_30Z(Bk(Coj=p2WmQ#Iyhv)-2O|P?he9H&`RW!5#j&;>Stzd zAnpK>`MPOKVFeQnkDiCfQR2xAYf+T=$T<|frf7f+eD10n+oHqU*80({;w{fX4K?I2 zopGrt*)Soze`un-quyJD!d`e0f48(wX6BFRr?RSHGJkMB9J-0u06FAjxRb*vV&;Kn zJg8o>Yu=V{XYcVhv95q>jpGvAH$mqn94ct`-!P#Rs&4_MtxlUa6a;uqJ*@-xSU%N< z7cfL*CxV$L^j=eh8%;dJWRmJDfbi^%B52YwBD0QqQ0(}1Q2dy)Xmx9FkR1@JOmJsG zlQsnseeier)9`go5}+oP@T7^238cMOxia{lZ!8nbM0NIi^ixhnR&s`8ZNo3v1b5EZ zD5nTgP@SF=ylRN=y71xRR_cPA^a5PeGvLW5GTOxAG8Jv`1#$X(35y#r&OXGCBjk(d zx4%<c{`x3 z;sXF9xppfSRiQyNzT-4anRoa4PJjezOQx)Wc)xDnj?%+ZJJ87IOb?_$!ZQ!&tI(;7 z5jFArEyj-f=tT8W%54AYeHG>a)qaz6`y=J8&&s|hulU**vp(KWh3jju)Waw~c<VaC776=84%Cj$~66d;@fu|~8< z3Rw7SlQ9C-EPP;u1?=$S;mosH9Nb_czS~5A35{#EBw|2j06q$UTr_?n#U>vR06CWD zFJ#}6`x5K3V$+*b5nwnQ80zhq@Vz3FaTz!9*JH7Tw0Yn?X;qS ze65s$4kWN z?da=*g_)ONd~7*3Lj35J2uC=Kd&LLl&KLf&Z8N`?LXux#0)Zyx@FdqJBCH5rn$PLNwB{G@xP2{GBxk8ykU-5_jY;B+2TpH&LI95J_AWk8{}X%-f&kBe$cMF& zo9ExnGaF{aQsT>93pqzNA4rM^Ihg{Y&c2PZhR4|Z*WbPAK6NB2kO5dN6_lvX`oU=L zZm4e#G=ebh|I_5a?<;QyM8G02eS+Qie2t6Yyx=@n^WaSi8y zPIYB~wflm`Be{zg10vkrJK)S%>11ZSead5Onb*h=bD0uvz)#lqpR(EZIg0+H^V!`x z%V>Js@PqJw&x1tMuhHd@NzYS$&x8X4-3GZPMvGC(fs5yhk}>J?{`CaEkf7$;@8qPw zyJr1|*ACg$#yrfRblG)QcxCT&hiAlmEUdAgJJDk2SR+O**V=RpLQ2@dc=kVlH@!ju z;N8FgTBZjCp@%4q#BU`Mg0;H3;=@Zh3g%DYkp$&ZO3?r6XRE|ykzbpa>{|@(EsTQ) zR@=HU7HZaB(#RtXH5N$bJOwz3%#{U(kC#XIex<>jfzClNKDqUyOI_XY4ys9`+Y9~$ z@q#fbIywGio&(L=r83u%l}E!DG8com0j?R-dhawXsM%I%{%6AAHgDEZ*b=V3sa$kn z-|}9_D4qc?b!?8{ZM+d9lYK=5|BQd>(>W33NtT`W=4EfUUFjQ3CYEtqa=umyl&#m> zK4U}iMO)N&+dl>3*=yJz(Q6DglgH&ZuZ8g(e($)hQTAkmUjlyg3r{Chr+JO;!7Wyf zg4xmwF_h@(P=IOTIjduLyLexzqIJ1u?@X~k;-k3!Wx7H#L*G$eigi|M*DK;~hd1wB zeSFFNbHhuz836(a@rioUHkKAUIeJm|Hq-Fq%Nyj+fA!$s`brqR8wna9{xj12{3bx- z-`9CF%hj5`Ti4#!!MPAG>jvC)zklj`S*&_o%Ii?ZHg2i?2d}erqI2SktoBDtb}AX< zo8v`34rlEcUe;;S~G3lNK7;+oXH`cz4bO7@aM@g3Nr)}I!!J^^r=tJAV!O{mIV{hdQm2PU@Q2YnLsMiV5{}VZ{>VT>egQyIb$eW6npa}mia;e z94ujYXrbS_pM;18PvnBgP$oOC5hA}Y(5P}qBf~laoN)7w#xK(6d(CgxFBKjQ>kujY z_5ENGh)vJtJxhWYJu470YA%K}*^y1PmDrxMJ?ecy-yEqc5@R;hUkr6P<;cNj&Jnn| zB3y$19?wgSlo1EBDVw6DS}O{?pX$2&ij@QBMb~IEceA~r)xw_Ve80KkKV1xbTJb1d zC^zi+v8yQ;MckPv<71Mj62*UkG+b0hBG6J%y3nv)O*>^kl@at-=$7es@KK)pIeG2} z){i5;!}BM8n7`1Li&qka3Sf22!}>r1PfEc-)$n%wnU*=Hm)`FV{}{9-tw+i&{&5Xi zMcZtia{S7jK3e0PaGWk1**|R`D@nK3W*2&xq0m_(b%zE31IlQEYf@su(t}!!gxYNx z-d4q%+`!7?$lR;0%=Yy(h`Q55JmR4gsm@7S@~u7) z!BD)m5+o5sF3+T<)jU}pQ8yA+b9N1Ts z{KK1Qe4fJbZrgkIX{;TlV}RW3lun;8Tc``O1^ua=<9`>)5{!ll_>NMY@PCBL{p8bQ zf2xoutOxYzZ76(X{ zdjnUGTTB}iuc$rv%EG^HB?4A{rlRg~kG9obRbJRNzJGmxM(PE7>Iz)x3FN~OTxpFsR0YT& z%9VHCh#^E8sTSuJ23VLB20kveesDEe4EC;2C*T7uP+r%dy_Xzx_6ag>5l}?^aSH25 zX9BDnQNZ^h09d>=C}uxAFxd{KI?DCl%~4K#x!wpVwe(9cmkXjsQ)Ym9$ok zbk7_yG`VcGCm-mEkX?ce#QhV0r6PJp6$+NpPLWf6>G|wMj~);|G&%CB+n!8{@$1S= z|0``Y5%)2;^QLotaC>n=r^~`+3a=+eH}T^gZ%8WOk#|XaPok|*!G`U+(Ok_3GO6#& zM`}>*5`p5mb(iGhrN!Oau?nW_$!wlO1_N1&4&5AL!Hn813!K%rH&Hc1&FUhy_B?Gz;hZ$1+dx8U_7$K zM$~q<_X>>#FmtK9x!624#*SXj5`^mp4A5S@8yjASKkIaf{Te7@BHnZnK*j^ihm5Rl zx>gwz{m$ggSb$$>(H|Z9FdcpAmu5OR+H8=DT>kmVTCB#7n#Y&1@x)nyoS4rgjaPSqXvK1VN1gN5Hm$82bYoEmGg{cooxkJBZQ zBvp`H{L-v9j^*8!$rlrKw%Xph+nT8TjyS|=8q8qU; zf4-@_RR($jfIry5^!Bs$NBnr2wUdvC7%9pOeDIDAn0vFS^~R_oSlH{!sjq%}*nQDp zm;EUvW3ad%HNboPuJcF{PU(z$7V(%oRr5J+#kL)d&6uu!7zl7>x$+-#%g=rcJTC%p zsQU7IPn7{yQcT->ha31j7G>_^1L9TRECA#g`hgwz=2mnJkM5*dHps$v78V67a-EJ9H4oMUuVqjOa6X*>RItBSoHcdV zfB}F;pJL3oQRx-e#u{gtBvo~TRAnO0rCojOqBY=&SK*mX-&EXfsra=;8_bbAugg;% z`=ib(B0NmM0X5z>ZpldI@oUO^)boRfK#vqtU-pN=Fbw&2eIwP{dnr}kkAHr7bqa7l znrmosq#Hu!V)guxr1iVQn=G#uhVG5<@92=Dw0~Mq4)&=mlLlC+Z`ZCYN)&cKEH`V- z!5XoUzGoiryZ&Bzb06-7nN7e_o+vu!aKmT$gshQs4&EZ&r<70jGqcZOaY87MSlopJ zdym7Arj|cG0?_YKpHyr2d#U-bz&kMLXku#SVwo4D$~A znk6BMJF(XTK@lk!_n?*t=ya^YStSe5m_KK?yV2~eDoqf%2C&~wZ2_HYWWXQ}k`Au? zp0Zgspa({S?IG)i(AZR1K?(>iE59xbnF0ftnZu74Km@4Zg#Zo$g`g763sT;3BVQ$v zdJ*Wd_fkulur4I3H74xzj2n;UY&BSSAan1FaJ3BsRx2=&~;4Y~OL_?v^N*))S=T z2jF323RE^TRWOS^b_~p@8QY)Mvj>D)!7~_e>>~)E>&Yl`g5|`5CwL<4FlBMshPaCt zkyxkt@hcxEl$gM0)1}%!WL`Ts6Bu)$v&~SM4J8M@n(a33j)YsxsM9vI|zP$|y+Qm}{cJ)%q6BPXQ-G>pp6+G{+HlKx6y7FJ`8Au6Fto_1m z4Z}W+@Nn=P`5utN^rPC;OWVqT)bn=UkodXn1*d2fZVwQBU>(6NOATh$$#rf)N;`{g zQ}ZGfA+Hl){lH53_j&5twC6d=T6(ag`ArR*eFw|lKWAt2!l zoQ0C!0yvrprqr`e5PMVM6noJ3@4u#NaUk+OEC_dgy;uiNjCM^tKWzBhXcZrNZ6y~b z+^mK7P~A^bLGW4EjNrL%CfPoza)(FMwsd=DrDLTgr&whjDfk<6%JMjhYBKsLY2)82 z{a=_20q}=6(mMC)i9Tdqg^BQlA-8}y%xk3#*dOn75F7+Hjl9LZ-2jU zRaqsufiVUeGy+S!%%`y-yl@lk8VAazqwJZWt_1}Al~4-kJyksUdNIbkE2pPpUFXAQQJKN((T5Enq)Q0Vd5Th>|+lN`Dag z%(xMq&i9b`b=IA7ak_l6xQd3rMGwbC1U69riv(v-hMb>)Gik5pi<>uKDR7*jbk;mV z_;c>8%!g~#Xz#5t?oJqWKFU=^gL}O9X4a*Dl1^Zk_=0vq&h{ujuX2^ls~>yQ zm;!GR&z`W@O9KKwgm{>Y=CWS6fguXe%xfbrzh8vT50mg}NFuAG4k^t1pvah1 zYkIn!mgJiyj#d`ZSM1JgcfY;r*Sy~mKUvuk6X=LW@Iv1n#qKk~_-9dMoYpYuE(FMr zxhKe+xlBPEP1+zVnuU@Y@ds<7)x=k2rr+pxUw~tuFhwbTHzmsAC;+6grIAPi29LJ= z(tls>BL*j*l5oiOI!f?t_>wGPc(6we4L6a_p<{i^2!7q_L!hN1`b4=ytE=?~D(ZvX z>+dO70NjNe_r9*|QE42l%D)3f_jhbKh+j>hXs2s(^NPf0mH^-7t52bpK?dG~^TE;D+ z(Fd#dPI7t~51_nAp24g;htH_1(Q(bA-WL>M@cei<7yI|hC&Tkpj_}Dn%dC2`rJH>Q z@7d@&ERR+R!4d@owA*l{soK1`_pYjpmnz5X#he5dlI9#0Ax_VtOdNv`mHkl4vdkGqW-Y)614M>eop)j<*vQ21{iln_l>IK$V~M9t3QaCt$##etAoX z`+>`EW{^36D6B_X%)w?94Jf^Fwi49Px8oQhpdHEgE{r0uXg&%BK9jLA))Hp9L)4&1 zrRgnAwq)TYXFBHpq)vmtWd;Gj@?pp{{R$2LUccA!{}|HVa44AMJu^&Zjmefmse35H?elnmsrY#rwB66u(7Lei|I+Pyq3!y)Z=p<#!nxr3h0_)c z?lFrwDXK@Y)6c4xlX+)U&5k8uP?;MzF5lXIweT&fOd0qVHhnO>^v91tg*7L^bAzFG zmVDs%JJ5;!C<}-Wim9;Y5NrVHWA8_I8+7uz%jn(Du>`*qig7Yw#ecYVqK(_CQLLdN zT9Lw>#q*DTY|g}6{TYMT2;|%fQF+6X?$h4^8+8hZ`ZYxXUQ70$^q{)x1Hf$zJ!pEI z5+We{r}7fJ+SGy1Dig@H&lgiF)~D@z_xjM09q-@pw?yaYoTpujGP#-XinC5=hk^MC z;_aBeKL490?$wEn^Hu1*Gcdd)oV=f@MiEFbsM9e^7nDo0kEhD1fW7cWTc?x^jfm;CWSPX=GmSYcV zchV%04TFFE+E&dojlw69S!=e=A3FaTr`43J*iDti1@##6U*W)RX!bb7U_W$_pg7(o4iaULPg z-=o%gD_D-$vEqe2|68pBunfbzR|%X~NV%;qO;hQWkn@kXCt=y9XrHy?`x2&Rbpe2(jvFAVp`Bt!Z@$^eZ!!5iGRon?sbPND{WYurB=C0_g z?C6Ox1ydy(AK*qR2`A1%uy~Su==nP~%~D}Ds8F4PNcBsHJ)*>h3b>y_!r8|RAh8lR zawaQC)$x%;5_DQA>()*G*kP>L;esvHKij3@T-eAEFhDf>>j|EmSSWQ)hQpBz=#6r~ z8)47a^RXcsuRip)SjZ051g8rRDe==O40x0>NGiI@1gJA<2#^9a0E>8JMSYA75LC!+ zm(T-hel5EZojV8?1;*u3_%?>_(g)+g92=msF&hdG<&NIMC_1CK00~2K7?RBo$Qc&= z(|1G=wo?NnXkuf{&N&64vGAo53gzb;dT!RWq{GrEjW}px<_1~kZjg}7yyoM1qU(sV zK>-Rs@9$6Ok1p1f34z?j4kn2DiKPJLg|3AFeAg~;H?ei=7=gp@dt&ghwpFSx`S{9e z;-Dh-b&0)1T`y}#3vl>qex=q+PnJT!QD;Y3?`Ux$U9$f7VRg^`4)?)X(EmFj!LfE< zrg-MCF#3BSb^}d2)_) z*h=2fQEP2aTM7`{pX4bWt|`2S%9j*4Q(-wT`7C*$Y~M~El6qqiY;DWS(vQ{FHyA*k zc305gu9tiu>vvdi6#yrW*!v$Yy#s7d?q_CFDxS_M7D~f~L(i}Ai4LU`vr;P?Y%SZY z0&zhOCq(n$uftpUDS;%|OaN!*;BCR-9G%@r;<0{I(|roXLA|qR>p`a*Dy&JJj4u0> zAg$B1tnS=*pNc@AS(E1i8h01HjQUW5k#>B)65=kuz8WUQ1_IZA^L9L9?~p$UGAeOS zo!fdRb0S5%%gtJ0E{2lP#L1!oAI*>G(laA1w=ak!h8wC;HUxPTTq`+`ga#PN8j|B$ zNtoyfjEcuR;hO23*2Cx4T=OE@>(V%#dzk)F{`cAj;*juB+|e{k+UHInns?QLGerU< zg;eUUJEH-y;Rn0IQMn`^5cxw~HRS_J>i}55KqS35up)6fIoz1TNbfFR`xGOwrO`s^ zu7xnt8T7?;RdyitCjmoDd?Ec7!mmL~JTNeW2v6jcK+QgWfBdot)87GF|IEcri z8xUP8AvIBbbQXI+9G75D0NQ5RWwT`=Yn^d_yr2A8V4zdLA zl~KmlAHP_bFAhaYX4K{-M&0U{Ly;SNroojpj+hC98qYUPB?$t2+<$6pQSe!psZYTJ zBIkt5)y;8f+mAKWITEW2Bp$t=wFnlagJ3zt8)2hrnO+#(~ja~gC3!}YiU_t!lSZNL6gx( z+F9?t?rgjaH~c*sJ&VGBuS@^&=k&&^ z6fs`BeGY<`(wFsrK)vuSI(*CYc0IHN@d(j@m~#dc_}62yE(y6%Kl&={7|M>)f6Hh6 z5MeX|IO^$U^|K_{oX1vWvD9LsQwT9LJ<+&3ZMl9`9_V_PFau9t7zNMKpo;;SulX8Q z|5J?2+2`ukVTOXWP5^q-d_waEqlRb!UeadcyOrhOFkHFNyW`2SHIQ*NR`2RkXKMvG zUfMUhUAu6zR5!SK_hzxNAK3V~uHeYG+Qjft_jpmzN}mG$I&c;ey4Zz3&fJdaLKx)0 zIjOX2VWFw(}iNB2(ko!!<(`@iNDEti7)W*hE}e7PW-iy;mrK*jLhdas#Ozn1KC z6aGRB9t!dRTuG0+jRw}fmtSAfgeI}I*tV~8yb`M?+OE~4N<-*LHNZT4>8#2NOHgN0 zKppk7qK@DE53vUYxEDENrp_o?vwVeny7ohXi)Evp{`Y^J9-k;IGNnW;-*W{FEav^^ zbg>nxAY@yss8q!xmYOahM0Ovpw0}@efII8?qa_UB2DG4L%DK9s*h&)VX%))rhW%(<1NJCQ6*&pX0*2bBEBwJDhaP^_@ z-2R#tO!cFgEAuv>{}DN^nbAdwAN9*|GmxT4v82RDh#ypo48+9js;A~kaRb=~8guXn z5Zz-UZ0~(&gHla~GuQ+PaGe5leuIhTrk(3g7f?lvyFFBeb%b5}#^>Hy=1(If5xex- zyS3B@b601%HTf!3Y;M8OO#GVwpJ#*%ht<+{5(`1xR&a$j)2LeF@HOd}`9fRlJPM}= zaIz5PNPK0jWqc#63Zx=;ehJ&y4wK*~|D6T+L~9=HrDxwTQNib{SCjT{GwK5eN>H>Y z;YU-%A1v?zAsWhsuu|f`q|kzPm1*zF%@nx_2C5`LN^G7?r`pS<`O7h7VH)_&-1h5Y z(!(f}S0kz4#;c*p=&z_wZ9pg-YeoSozEZs=@ejr6^rH>tE}NFO=vKe7>AmHoFDmKbr;1*w+lxr!Bc?2Z zh3Ab>MQ~MOaw+6f@sdA9i2Rc&?#>r5=ud6!wBc`yDCS}cM7}s6+@xKHpd5gb2cqR`3pCdZ!9N_K!R`2kA4`lw9D)ar=c!bW*95he4i@;!V#^CosNzhc^FKrlivl z2o6#PokQH*a`J#)(R(QaE?7@wzE$co*C4(2#VPU*vz4*^)#(J=*1C-27?H5epy?-T z?AKJ{Hpf47Z_Sap%KSLjYjp6(Mat6Lf%aig@*+;N)y9$}$s%Y{u8kvBUF`rmwnIz+ zPe#4ODXGOW(H^XJ{=DF}+g}*D60&!?a^l&|tcrOa8K*L>D?&Aw>Mk=cPb}V%3ma!J zmRWP)FmFWHjG^#iyF-I&SGzDpz9CH5+b!wTIh1#nq^lVoaf0!V1*TYaOqPR^M@RB ziy>8R$4yo7b&8*jx0SpvxAeZL_AxD19^{us%m9x?wC^K+UeY`q#|0D^T!;)Q+s~$m z+dQ4a;<&#j|MHZ+228MrVshThDxi$%_U4hby^qkB$4PCoEy=Mik2O4~OK-d+PuzBX zu(#{wnu8%4IvqSz~0yu^C!!4m!T0d2XlQ@;U5TTAFH? z3-X+_mmd+IP7kOWCMCg&DG7a&&AFYcg1M{0_Alt0Ti&5FW9R0;beRcojk}+*$4d;h z`e%w@U$Q@jQ?Y~CZR|~TTW-)VdQs~5Umz_C`f>HbO7;2y`GQP? zVM_Vq>Xh7ju@@tX1xL7J(;^2OdxMMb2wMz`o2U` zI3uX1_Z<=+Mguuq=fQTP-ka98y?AKYDRXbdTJ=M9V)eDv~hUr_(0wBH8 zEFLg5^FS8J(~?fN`h^q1aLN8o)z=iMQ{>cav`;oh0wadEcaP)V6J=}9h0kK!9LnC* zyb226?fi#UNIDqO2rrCC#62_cdm~3qw3WCutsA$y?I{%uE438=hRNvd4F2b%GytMr zF1!U!TNIrrfD2_WC8ag<-MKDG$qjZ!Sp48@o!X1^T8EDzq&&m~dw-*^0tY2R(_9T8Gi4H_^3`7kl8BO8J-rp8w<(xJVnv*S^C;fG|zmBQom z)*p=N)&|(Cc!18~rf#!4XMDP{9jV`l_V7(Tf6!(P=v!YjbzQ%lZhr-+Q{r_*gw$j5 zNP%O9kk{_r#sH9~$qH4-1*50pd4N%)%Jm(q30~KlZ}58lKP`aUXB2?~@Fd&vXx~pW zu|qkPRNesiYj-3DF!aPsm#n+ke$tf-95wj>8^s5%KpW8PmH(n|)_R6P)BRF-k9*RU zkgw2xbSE}X<#?S20p%N)M*`wZ9?`8o(L37Dv~-F&&z+n#%8e|Mzo_W1cGW94RD( zP^MEULM3CAoRT4Pp_J({S1MyD;+Qf-BtrW{L{ zbM~|MzVG|GUf0v6LI0pg+OMdsuW^&FS~F$GwoW4b<4bRk|M?r*wY1{CZg^|u%oI!C z+TV#{*1y8h--9kn(74R7~#VRUmgx&#Y-r^9!*47wJM*$+*H* zVcE1uc`Zl)Mf4--Xov_G{SlQu7*3!bLp+Amd^$i~aezA18vb>iYoT*n|1tyLl_NaplC`f{TGmodC z0I}tWgaPCtekh0=L61n5o+H}d-Gus}garv~FO^&Gds;S(US+F>tk#fw1XLFr>n(E# zt%VXG`6Ls$3!{BO3K%O)0TtM%kM{ec&Zl(Nx~=dDe(M+HxyZ4dmJZ%A(l=fNh}*Mr zhOS>fPxHRXNj|AaHEaQqTJ0zGI2L_zvxhojF1$;=_E*hz&8wB>VPD(y`zyxYP~T5y zMbb*QbX8Z_>Q=Au1~DC{^1WFVRpGcsg5@`owc{fqnzaR|9;Nj&g}^74OI1g|cqP*v zF4X(%GavQHzj%|qow?*`NB4`T3Q5*=7Tq>;H!WkF;-2rf=O1ek_To05Qu3*54e2lX zetgiuFH{7QtB^xQ)~`YZlijsbSN2T4LcN~K#IzRQcdhODXE`7N&h8+u+6|Yh)9JOM zv79vaYBPQCgoFIMZ?6=}ch|;QfXf^=vVKZkE;F@}K7KaPIbP!WP;Ontt9SJ?&kFz9 zG10D?W4IH^TPAm2?HfI3<;STtWKBysopf8VI#g5f<#>0>=_e)W%O_ij6e|or(f-JV z-T>map1qDQd>bL+N7%)EWPtDVGvFh{WFAbaIhK-vUFl_^vEK*HXIq&+2dSufs6XxO zVDYx1F_6c;bEGo;bnTL_&b_8mnTU8k7F$CP>!z;h_byT7W5CJhn0L|Q&f5p0)2GK6 z>%GHw{Jl2VWY+a?`9}5V#*+2Uh~L=)RLHaW?_Kj``V+;SN-e1(US?Wkrid$Jw1?N0G)v!=c@1c zLTGA(^7l9Yl8&&dygS|2QsKuad2WyR;U@W;t@&4jpNKKCGyf{B(d>A4dX+~#*}aK> zajCm2j1R8s>z;hTnQ@{(XXqGJBOQcD|-5H)L;m5V7azT$= z<*BD@${vEmt0Il}Di#?!t+zZYpWHWPrx}b}Sq-H@b>t+BE zk(dQ}Z5wm9whn#hJacxJZn9o-5!g0k_fGxfC#Ab?^uI2+w`$zLUxxO1(vM@Qqr(8PwHz zuzibBPcuZb^RGTyW6Vj`{Rd7;LOvUX-4!CM!RY?SH5D8g)?Fd7RCm+^@U!-AL|o&1 zgIS*{k({JNhxi!Cpd0JuIcWU!jtJ=GA~)nyIl5t>6U#__o0FV;A$W?b#1%g}Q&n&)%IDdo z1&dxlmA2KXFy;+%+M@MZh5nyxJzD}fotyTI&fK`L``K#jMBM$uFZo01`dG|ZZ4UN} z(kFBik?eWDP-{xmEzNH;6bF(5t9Q(|PYjbK-tHJG0Ghgg0|;d0dd$KL#n)qxe3B4ySP?!o%; z?_HcgYv0v}W$zJ`zhL7L-Ykz%coDfwO#0-dRWHk`ua|1x3(-*j-hcXSiHogO6?ONW z4^0H7c$JqgWq8&P590ZMH+t6d?U{4BkHN)Wn32zl_ojc(;@uLms7)E1+LqMe8m<#y z)Uwa3^1i?|3n}Nk#r4A^xa$zV6)4CTEQ-#I3k6kMY!&_GNsLyAvZ1)4Me7!W$D+-2 zN?yy`7bmB-U(4$?O_NS-?6ZfS zFWnUZGa$c>)1AKha9-VyOxTpu+Bb>eZlo3$DjP+-aMD3O9o4`WE-SkD-tiRAb;&E< z^pnnYGuf15);Bl)irwt%Yfq5(8+H11Lm)sv_D-?&%(DVNnG1{d@6gTJ!)EnPN6Xz> zK7HfPmk~{D{5R;n1lQV3#wz=AHKa;?Kglkld%-v4!!VxIG78L?OD;Ezzol75}*bBu3mkIzi zQL@4}AMg_uueSpO$PmGm&~qMWI`Ow1PyzOZYb9l3su&el6&)Qn_JJM|#V8`tcaN3- z?eYX}8!tKi5>#tS2C2$F=XR5q>;%S7ueG5n@<@Le?* zjUJg#p9q|H^M>7CU&+__dSK+@%g)@(`warc4#`HzwYN%FpjZ+zC{$wMtMOZ(UukQ) zqm((-jhyJo5}X8xY;x4kVraa-6;IUDdB^eAOIS@>f%lQqyEShLxi7){@8byGLX+7x3jcJE|_RN;pIjCan*+KTN<=h zuONugWleV50*7aIOW29^6}Kx>g0X7$9S^yB&LKv^*ORu6M8?r(R#PxUz&QJibGMG? zf(MWX2N&+V9r+*w0&FnTv+UkWq+UVcflSbiX2&k>bj*;DN5-h8iVAPuysMkrNJ2q< zo+~17`(ASOUCz9#~_^-v4kObGNs5J5Tj-MCS-3k2s6YJh8&^-zj$FoA@uos&Jj4hvY*Yd7Mv$25HZ?jpPaMy z^*Gu7z4c?ninu|@Hwm-Qi)89_%Kb&vp%!|dBqHNs)u+bWo5 z3jP28AcF+e|Ok&$gU6F1&M_s1;zvgL=FhjJ+I|CIv)B2 zs?>Qim#XM@UcW=PYNVu}uC@4C111)QBAX5H|UZNKL?V`wp zdDAhUV0lW1uX6VnYC^()M9M%sn%i>4or{Uv8E@7}q}ofqF;6-?nxJld{hHZu3+u9*ABqIp8D3!w+;p}hzAZUS`RLR^kx8%$uk7G(}b z8L2Ila#ShE3U;Y(`)v30KgB6D_qpEM8}&`hU`glUIQ#GiMlPVULg+U{q@uDyS z&7qrhzhAV%eI(4Qx>4QSjkZPB$o&v=sNJ+Ap4_RQ zqQqim*!V03PKbTa>o78LZopa)eAcr|yc%+i;Z0Z4_tui<4^PYZi&$E$H+o}K@p>-| zS*LAz@z~wCV+^;m^CezHSK&)A>lZHBwf`x?L7-i+i^`kG0B)7<5YmImNX4};aDlCP zc2ffQ@Xr6F;8XS`Q?zAqq?-WByD^y%mSswM!3@p>N8x`93uc8=1Y^DRTAZ%`!Yu0C zUQQf8^h2cS;5JhzcD3ZP##{=^a$w?wBZ+2L6ysO)WL||C*A2H@ZI*wT@SvATR!o7`nQ=``mz@<5}tGR zL?Z8)ll*-G-nXB12Q58YeWXrg{kR_1iQ-ZARsnThr|kx|JblWN2*pCoco@G>b%DyN zGZ*xTo@hxJ-FCBm8f9o{a!A4{OyN5gw2Hnv)-B|m(g?ZoJwnb^GI9cid`(^-%!M5j z-_ijh)BPlZB`aBEiZ8}2&8J_81Xf3$@v<%sE&ob{U8rTU?h2oOqOLa`p!sA-n*tcM zM7pbRYsec&Ln{FaLcE{JMk2r^nycQFmF(yHwp)yuT6rLDFb{d;Rr}~U2j5R9rT^&z zCniM+qtk+9;lup__sK^S5o3lbp%iTUo{RnWo25h&)H~QlJKpXq6QBBmYd~<+pu$=mDOcRDH$UbWG(uv}abZvS zGK!O;2%=m4{l4*XbT&yNaW}5}qmppJ?)QSmDKw=XJ$}(GaP&PI=- zzY2`EdX`>qtXyN75)DH15#`h%0;R_UW?yljI;r%vQ~|oc;^{Vn5-&8@KekH{f!fZy z_tDtB%`9Y=n|i-!b?o>et79cH!DRQumn6_zqYP_cK4BkL0m$Tq;c~!|SU}r82 z*(c6|qZ;H2rOy7NMAdAVBJV@UT*CYS707bhyFaJ}-R?g5soYdutE?#R?-Hq7`?mM` zt!jc{`i=(3_4{_*p{nb`gYl|8!m8 z)eS_Rp>55`i5!pnE+hTgZNPwjmlgWXfK~4=z8B@Tr4ht-w6$fn#A}THr<66X!CE{n z0E`bruQcX3C0v{!<*j6(cP`Kc)jQp22Cj7pAWDAkAyWoCj|c`L!r=t5oh_{8O{Eo! z+ts`S{)uHFe%E-BN_w&!P}Hv=uMh|NEmm*QK3Pkk5x~4fXDF*kgK+v<`&O(J37W5qbJGBEeTnJ}TwKEr2%mcGy6)AEy8@=Ah#(`$HKSb7^70%Ig zwWo-LgXypyV0#I<|AcFxAmKbx;3?e46kC8VhT!)6?;h`T2 z-yEZ`AIF)*d$&uIXk-S%J3memLD&DM;iMYJf$~{MI>C(l?fyg(8^Ji;;?$nA&`gPV zbw$11$|1}0y%O^b3KQ?HMY|(`A6F8;x29CeZNgBEcuqZC^uMUy9AjoYw;*u%ZOL-X z;mM$SGsQ?u-syaZ!AmZMH|#>pQX9&V%Nz2D=av^9?3Q{ioJgZWSB4>6HHn&9Kc{+1$EDJC6} zdXz+ab{Cz4;l{AmkngGRToh02>BqE-N8W>7eLdEU1#4uGUoul?}{xt|y)W2K1tzU|f*lSx6Z25y+P zM4)OZB$GH4l*2@sMg?(JM^i5b@9jPI27l{!C*}^D)xOcGyYP}gp~vvLfQjQ$Gux5- zzJNfJ`6Hvf9I^$++o~z)4crjbu#gv>4pzUDUhTWKEs1}t&KfnZWMIZWH_UTEF%rAf z&+pA@`*g(o3enL3G)Qo0$9u$GG06kep6)+qhi;Y8M{nFa@tgA!n*s9RIlkdF0x6SP zoS&+Bv4J>qUU_da&*(^Q#}|5}@49-&7`&q1WN9)epd(tS>v3pH(P*J@$hk}g@&N<` z63yPST__-_ze`oGLbW*uj?T^Fx9Q-Vy3(~)UU}Ywqf&-@JO^X;N9e=$(~Cz>pgVjn z3Xp}NC#sDKXae>TLWl2P+yQC)mb?2VrhdOTv z>k5NdtnME8^prDTe~>^pfl^#?j{tqST=2hkCHIx6U6HZo?~2S{e^EvBU^`%r^+wSO zjB?wM%V{?ec4xxYuQq!nEl`*iY+%m!P;d}N&u_;ZFW{evPZR^Wz67WgK=HQDrMFJj z`(PLa@zd`Q^%*l%fSUcWcPj;6IG;`|7o_OH;R$Y(ig6)vK?GM23r%?3zRQY`;%ZAoQYHiT{ws|s5= z!pR3@03jt6(G!B-zIl5(pZ?L$NTM~kHeCC4%)wywoQWt(ZlS@l!N&I{aUXWOMZ&>ahNXLjZg<3R(lFx=u8-=onW z2bhkkzT3)tQYcoCHYj8u^8xuo$wn!QFc=B#L+AbW-`>1ZlUpz1whKbECo75PMlPUL zBUL#i31n$QTZ|U{%TGU1WB7ryPQpPFIZoHeZ9$IEwbd4RdSGp)4UJ?x=vH1#Z@xS; z@PZ=A(US);y`e8vUC0Q_`_Dn0&RR?-`werZV)?V7Ao?J=O+BR-~vUjv)l_T&l5s zRgGw`pU@q^H6s5Qzf->9**$J18Cxyxr%&l<7BI0L^M2yE7 zO^)9~6fR8R6FUjKkizN0)aML`6Rwi5@xCnqSX-Wd7QXgT7=iVXgG#gMz0$jf@NNi8 z?(^ae`hoWSp?1dq>m1@RG%kqdQsRm zD`gjk5s=fQ0`r?~uj&JH0-z3#Q>ya<%vRWlE(vWQnRJ?eV)L_96IPI_Fpmw;{}aPE zZO4Sv)f_WH->M4Hn{$sq3l6=;Q1Y10e2?(97K%CpbEZdvsPTI7SCUxpBk#sEdfbq* zwjEf&k9Ypsp!OMvCNHeE{tI9tvr@$M_XOG!UcFQwJWC?`G(;LsI%=J*WD~nPJM}u; zQ2d@}&=+3;OgozY2p5ISH+J8dluqmP0mdvjuf5Y2`@*^p38=vS$B9#jm-3_0= z`cwTgoI0Z~*$Z<^^;t`vv_)Z@{a!M-8Z8BCo zGs@c0f+K?zZiE@V{_pw5 znu{;}Zd^Ek7ndrsd&yqgF5zfk-}y76nNDH6%q|6;HSJw>txYwbk^|Fu#knAGeaKr1 zn+W}J3fb2RlGc zUNI_fkqDLL%iZ3izKJ^On`}u>UoXiV6j!oAqh5{63;PQT(K@Vt6G7ZwFfJQV$OkDN ze-3V!fQh%&W9Z=!cL++Ch1ELvoFla1p)So@?ej$fZuMTlxy%#jaX{dpo@ z6dAgod4npeAX-Dlz zWSE-%aOdN%#C$_^Ec1KkVZb8P7;rE|}WR zFtXgXWu=uj-@5#j?S5sltz%3Eo}$!276h3=Wdph;J0q@FE*r?|h}Wy&{|Zi(wmt$C z^g1J=+Vj+4jU~@SM-H51WIrpO*F+Ta3kr2$6$VaZAVK!nu<4R}yK&x{k{&vR5GWFj zUMN~t<^so^6Q~0U)aU`lulwmG@ zTVtvTFKVnse?W-~6PX2Y)9d7|76Ugl+aH%q&?{F#H<-*h2f!sFWPy^%waO(FD1vnC z%d%_)y#HDCNLC*P372XptjNam@lSGJ;XzS!CXKC04-t@bw1v^*_>XY_zUYGXzk09T zStqqiJOy4qvhr5HX(aO@hwgAMqUKeBg`iG)O z7?~?}NYMS2nbx1HdSBIVNjCD=>4#MvFR^ip^O}BHcb4Pn(}(cwSpioPZpdJ@b9@(0n3LC5$hV zj{M}8i3x$GHmmWJ0bfy1=kjG8*^BOxbJE|U!g;)#)9GM*GjrtDRprS(+79k7bsApe z?wXaZ5&;mqYq-~bjrG-ys`oY$7@6;m0B5B83ES`+REd5+px$FIE260Z4T;a&R~DR@ z@upF?7O!CC;hIMjL9+XU+H1f5`x5vF^JfpfBrt!3y%}5E?ptn}xck+WZZ@=t3k#Jd`H$(Iqj)IxAvzI9!108cccy41c@6jE z4%@9fMdVhQ7^KWcj0q_qZv~LNYetP*IqZ!0=T!-mKGdPNTGKbC270X}XOH)O2nkT! zV(YH?UMfV?qaE=XN+*!Y(`SBj+rN=3!x$}O)vn)JF4jyvvz0CyXm{U@%R=XEr(TTa zQEt<&{+l%$nzM9w4RjBn_!D}T-PLnVx+BiNmn{}vYf61&ifW&OH(EDp2YjiFwrKyrJN{!vqtM|Uw_8y}hqh8q>rC&++-ir(j@3+xt#OTq3c# zz9?cXP-Nf}PyS68j1i$GIB$pEe-z?yYyp*JMc^|;v}h@@{(1?h_J2Py8oO)lkeoN! z6j$a%vsp6&njrqYJ>)R)OoR@S+ffoMKH$~lLxQ?SzfDu*`u^i|iWh1YFKso%8vyK8 zzItJ~$1u*mO!P8H!9>gu7i@4_JZHiEn{?1=uJl#H2(oy*TX(u+NHo@FfVu`H8{Ubn ztJ^y?Mx8Gm^t$~vb3ST;&Vk2a z4%jC>NwHV{&vi0Z{#|@{eJyVz`kl%BdfpFaA%XIojl-wcqW_hweU|5$EL~bKmnvn^ zI?zA3C6*D`hL)nhwqq6SsL#oZu?kDQA1lQcLQILdG2yNDYmfd>@0`iwBRR}B6!k4A zBu|!1sk%l5Pd%~chI4>?zez3Z4?&p+_$a|6hvJR~i?|STe+=MTSTsf=5QO(meh&An zHSN7|Tb>O{!dNvx=Rs}iZoFehQr=z?s=%sjbU48!pzA>FYlmmDd~O23B= z^O{l$i70+hmr#GAlG@wx^Teg~oR}&1=K43XD$aY+S?JPw|4Sgh2qYqdG70$76b(wP zl0!2(UR(~IYBf+{0S}|ZHM{q}?FNn*el{e5QAFRaq3hLmt=^F6?;XdCM1YG!&hqNM z)nlnXZQilVT|B4-aqVjSi=z@0>zRKsoG3?2+qJx6E&cfjM!`T^*bIRo=?DM9^5(A^ zh7{Wy-iv{svM0}3SMc{Gby`cS9H6)`?h3thxB3NJ`IScQrQneJM;V`V9yvL{6&vk$ zMBwIpAk$8~?^a~ZTW5FoE?sMj74310tY^=(B(5mG)b&ePXwUuTJ5v+ezOnDN6!3%eptpIuIDfMebTS4X+*h|URYOm#fq8nMi@F(2)WGg)9n4;KXQTce`#kY+xtr>IL;nvS8T`xf!th!}=EMP%%F-_X5$IFFAw1=c)@m*@Op2$s)fi za%zP!csz3j&{AZGIm4WD!5g9(>8{9^7g_*W$nx&hv+&@V5hOjdx{O}r@iii}n_h(C z{Rd7)4T}r0upOmzp=J*&kRM^MZ9?DQstdpT^Ox*%vNOf@Gab*+yFKt~`Nxf}FSYBO zRHrB_Fr0R(7-kzFTK_)So$3&1IzMljhqMNNXO`r?D(2C??G*#c%z=1^Xl6Zx9H?TkMGCG5GxNr`eH7; zI`10L_(4OeA_DVAAwWNYO#>z*#Rmg%(R zPFm-^C(;-5R5hoTL_vf2nr3*_5ei3w-MPRMgFaoML!_N}t+qxEaC zFtYkqsZ>@t8(~F+5(%h>GtJ-H^{mb-3WXaq3dT9i%k2gGc!HRR<2QhW4pm0%7ZcEU z1rdx$GXpvU7VI10nna%r%qFvfV50G6q5X5f)1K&V|4+sADKH+za8_JJ3RW&+YW0^v z*&LMVVMqN@WzTmPRwm1T$CU$Rz$Ky)n8C68s2ETui|DTD=FtdwIO5`6qh40ZCKv|| z6p$M@Y2}w89_0!M)M}XDh|;o`)?69c%xs3suO0ucrEpLhW!hz`?u;95+RJNR@AogY zw|S7TYkx=IJ?~FEFeB+gk2@R+Vp|vv|Ck9Bm?fAaznPR3xR_^M<({9HAW}B%()O&p zRk3RfF@gTnN1UzSsgPxNo$KUVy@6%+(FOnX<@LQ7&Mz9XkB zhOdV2<3q_SXD|9;wk-8G+xY1`0p8ane`bJ(9p9~EMw_Oz4_<~{M_jPmf-JOe7>HIR zg|OlilgfJU&w>>LoI-fmqPVb?{k@7WnuVOd!^ITc2HRDZIQ?( z)L3E|)Z9FO`B@fvo+RU-$F`8Un@D}oTKA8W_7jF)ux+0F9&j(%X)i3JzL29pA3!x6P=DB*A6CqfAM(!q)d?Cm@)=)0 zc=NI84-a9FZdX9<9GjZ7iFe+nw;$!9+n-adr}AS$CrZ)T@!+Guy1#O4Yv#H<1CR`N zCDrFwF=MZnPwJ?q7!crR7?{hzm>`_@o2;IE7Pu&O@ZZ}sY%2g0gO^25G>m0Blesye zGr8$lxxS1T_gOLSTqZcAOy5~AQ(6K->PMp7*CfMM)C`}U1KQIwy|+1O-h4#9#@vv9<}k}g z+e7}|IG%zPt8oDV9{)odVyEH55iR4OFjKVRSSB4?%JoTE1Wk*eaG<7=$Ssyr{RO)! zK6$A9lSOP)R-l@EGM=rpM;@*;kq83ib1JJM0vu&ruDJfZLfCoSb?xqjxj9x`sIlq= zVdxk~!d@5}LlM4xdeSU-6d#NP)S_;@QbzBC)Q0tQ?Jyg!@|(XcXIFc!B@?{My*ar6 zG%oX?monysF9^6v`_$mQc%csNH+(dO_gqb2P6Q`rn#GL7A!p&ybeQ#gd}}W=p0iu( z4l8IYf;fMI?MSOi5rl=*mD0rO1H1j!-!*mJz?=>yM(FU2bolFkI@NeQ}H(Tc#d z)NGp@p9s;-CqLLFT9a)y8b!Y=wnoe2A2K6-n90LR$7Xh-D~XUaT6i8=LRY??&cjWq z65JCaFl5#umX(j{eZ#X@aX{CmkyyC<@DqSLRHxUaD9+^hC01&oV=~avpKZjKZ2l=l zuDLptAu7EzS~TdzNFBfZ1?AeVi{3bkiJ>^k?vp@clT;mGy|lZ8i4x7~_ZjamR2q00-2LqbRD~UfS;FV?fRbJ!1I83O%B* z;oN9`n%kFhq+6J1){WN4GbN)}#<7w>04upi8e4yfW{#KXR6?Xj_LoB%Q_>J6LTxIl zJS`2!fBf=cf5!xBXTSC-COzd1Sd^KoSt@(W3Pl85U2*VL8oPBNMvHa1cj;i(C*I;C z{f7Z`E3DolNHO4d{ERV3HXa(DzGey6ZDn^lz`H~OWzbl=X0DBo=+oF+g<6zFm*#wE zuN_z^Q8I9gAB3XJHcT2ql;fMtq#!t`*cc4u?|-&w=eD3OCc-h&j|eZDg2(|J(|k^m=U&AT?1zq@zd zSN&#i^u@(FTg#U}_4B{72O99;`XpLha^SHIsnmPi;EF*6z|0w-OtSXcid5Pi-~6+? zA|Gi!hvFHYQ-@XujJUzWKmI-C-RTJJxnr$st0twgJ2G!e04*7#B9-S%H&8i(uSAh3 zE7}{0!4Wxn$VE-F&wc4+7 zv5-$-oZ$p&-~c!D($j{FPh%b)S~vO#=oUZ}y*n3=HfnN*1-d$Qh>CwDZ>`0|y=YRU zwRE!TPh<5JsVcgimxOj%I85Dls9V(h#*bEK=OZqkW8V_fZKG`Tr&Kq$=dGN5!CrDN zu}*Kw!O036y2X0$i%yhChAsx(zYyo^*7~#-muAaYqT zZB;&}b9ErM5ylEflSIS)&){z^gQ4HZ-uRV@lU}9nNmA`~l&C6$H`edOI#*j#XDh!g zms#F7Vq6u|Op}uVKQ%`Z9#z6gE?As-BYVvpWy%}HCJ$UwkCnH4(#JoIW#j$pJg|g8@S97fe$k`3dczAjs_rk~V8y!+$aiSR6jH&-;tjiDt#{;s6ULe_Qwol`l7o%#useGKN3w683~ zcKlHH5$T$^FJGO0cpp>lqz){MYl^lh@p2B_W<}j1&zlSno3{3OmNK*|d49&kO(&px z_pJ4ITE&9=E&CFI-1yMk!;%cXvEVyLS{dSICT%QxVWB8?5-s zY`VVy%_yud$aoxV> zf#mFIfhF6vZXo{^;DCqS{C4@-*2^rCN7iH^i#46R{DjRlk$_{k^TA?C61a z-IsHKYn)v<>8S!@!TT(IXsSb14Msya5(g4_9B9~qtt!kAn?UwP#7+KvAo~vK^K<_* zP`dI!YAF#dvIp^~5K=RKQ2Hwe?facE%%51WUotRMlYF0m`|54TJfUswhgV}44sCo@ zF4QA{2eHAX#5EBqK&mRy1Z6IWfObQ*$r*j1swD0MCs_fNOG48duG&v)0{_@F!$fAl zUCP_2Y4+@!^L~L#g~A}#6piuV=wm-su&yUSw!TLmC~lZzNP3(f^z3sMrR=Mndoc=x z&ZN4_Q7bpb+f{uFmUWer`Q!Ra(I~kTm!Et z)*#|__{$Zof}ooPTH9R_t-K6A#U? zt*K=JuFtG;ZP+-+twtzWO4}Uqdq9AWx~c7V12{cDu6ons_eF+MJPyd*4^#-!PTSg%<2u91!1}{+?8}^?BmGUQEeGr#9wu>0C7x53kylkXC z78JH<`Rk|l=96FoQee{F#7veFQaL<^v3+4k%wsnIFWD%X4?N(rG;8IolHAK(lwZgRJDLzn+5Te z)D8u2+4B`+N>Gr|P+*if#%&Aen)aIBmsUoiosR2K)ub;rwdr%rcg9ceSmN+monAQe z`qbI}??``2e{&zWA)w3+t)*q|%2O#d{1!-p$p!9cT0g!VTQFcXLdu=@>QZy{>6>PT z(C>j4S;%KBO;oaqXY!QCZR{y#Nyp3IJpFXf9F`gW{H(9y2bJ2v+O!@k-nO3%;F0j* z&IgnIYZUHAIPxRJzGkFs+_{>L?X@jLq96shYQex^3PZ1+{N+F>b=|rkRMXQ^IBGS5 z{&y#uH6;U{vK?(exG9C5duX?*YK8_$OmChZd_?bMQ&CQ9T?7G6tce0`_{+d)UH2zX zGh<_(Vj#h=o^9jn`R}*T<0>nlC7i>c?Bjzp!|z4%Yxh*vz7BTf>x711+gWNGJu&Z@ zxh*US-tSPg7C?fRrR!*?E&*i*xNfhIgPIf^p;D1}Qx$5xh*roqcs}?er{4Ml7j)v0 zx;zxE_wi@FLgAgUF**o-7g}udEo%kN+~vXP0ly}4;#LR1z9l&ZI5b*!&%#GwtrB4F z;x8MmQ&Z=8Kx-gCd6pX}d^~`xMagZq4?bmO;d66MrS9q2RMvD4q{JY1FaQ#$p;FZw za?9HpA*mrEQp5CrcSNsTbb1{!J$us%J)a@HTu@Dqerg3n4lui~>W|5imkp+{7pNjx z`%u5)S9X*33jd*%$wxnd>Z51D zn8(;5YlG_Q6ingJ;X9ja`$+7kV*&g#uCu_s2g{DrW+=gk1;~vlPmW{7H)B&Zes@0r ze9m-rZt2|bev%m~lrm!JH<+j+hW-?{}U?P)r)y*1G77pd<~yUp9{znHn5z zjE&7$akzgOgqYImOQN<8I2Rc)L{~D4Ytlp40%Ob!Qw6dKa~itt2tKciTlr5yxD15q zu9GzDd0-)|N9aKUH>_OM2swx0djOt0Z-XRv9n{s*t6h)Y;1JU+E?yT~7!KH3R@E$cVPMv` zZdTP5U4|%+?dMS2gB2V(qnUNK5qglD0;z5FoNbHMcWqOhc!B0$vtfOA+Ha+ze7;Tn zZ9z^VA~~q`I0rmvBd^qmNybF?m{Zik2%F6|)ugDFr-`1d!UGRzC zTv<5tIFtlQd2BqmIpF0NC!7bR=-#bHm4TtoV%M89>Jy?j){2Et2~AEVPzrVuU_|2V z{}$o9TC@o5ZPagOp;y-9jRkT=E)Ny1|FozzNLyQW{UmCse>gX2s?hl1>-jQf%STwW zuIKbfT>E& z&OMa{E9rD@IQaK301>Ui0!X65X+xuK2JMq!EM6WrqubZka_(HXD$Wf|pJa;WRs{jI z4mp8*JLd>l_@YISx*g`YFeh(E@1qFI=V?)j&G(X;(aWreG|>lSSbKt%i83X9^?&|j z(zXEVuRVSX{7k%7-t&H_Y8yPkxM;zW`Ev~6e>yIuq>`{jU#&nv z2Zdr)U0*q0{8H3(kbqe3C+-6Fp>u_^m0wYV4{{r~7Yzy{M-Kp15!DZ&ngIXM2{t=h zs8e+41QEuHYtWz}rq0f8)8rz>$Q3&##_0!8s!((y$1ZO~~T>RGaHYpck3hVH`0 zZs^%XY&9om%!bfR@O4Sc`@pMjI}6_Y(bo)k*qSq`ur{TUv$0%J6Ylugxb<&lkor|g z(&DTuNyGWFtEiL03KazEI^f?A zD{BYu#~pGx$*t^z!S$vSN1);1(05t@2 zmROQA7B1MFV~l=dMbxBF*z0arFa}DCh$*(u%n-I<{iOA!=b-ST&xx(<4fg_l0{y5=Jf6|m z@vhqY;Y|JUK;HdiGLT~4Ot4vWxy$=j$v-CK!;HX>>Mq2TUGD)E=1}J$&0>oYAoj_KRo`;-7!sOJA_dOCOiTcbrILy8k_W# zffI;t*=1gLVznt(VIckN#7^J-F`uO}TN3FjoZ3gGr1Q{JAt77kWgK?yaqKYH$*udU zwI3AevPv|3pi38BuG6nNV~X4cwL~`RFadCX0~GsFB<<*t zQI(!zJ~NW~=Z!TP7XV&WV$f4%$G94Phi!pmioY$1`AWGegg(82CBDJ?KhDI}5GFZR zd)4~0^-4BaLXd8ZlL^)+u#J2B{^HIE^;3RkBKewT{-Jli$(E0fULW~k@LE7A;x}g_ z6lYnvUvO;BV)PAYQf46cQT}Ns?!DHHH{U`~_7hAJjhN{0TR2IkY z+V^W_%6D_#_}K8K*+2S?UmEU-?ekq8@mZS{GkyoF?AuAsB0){U2E)8-XIef5-0R)l z%$=QYaK&~-{VlOs^(_aFa*-T3r){k6Gpg$4s#A3lqj>nF>`A`qSp{%gQu_HWrUacJ zJqwGM3noYmsviU(Kc=lYZo`&hlRVmtdcJW&Of_Ut)nF{+g-$&~?S$QGR&Q*rrCY}%| ztiRj8OKla`aJ1X^t4Y~esl9W)-^BRUjZe>cuM$$eI44@-2EjrlL0-&|eC4qYaUxur z7dCv@eXK{~2pjGve1&Kj=0l=IYzx!=6QE6`MGz!uIvPD3xWd#X$%~~L2;L?9J(RD( zh99j#nQ@{IYl3nL2$I-H9WpYvsY)C{;8R`>Bv0SH_p)@m#};IDe16zp>q@gKAd|W_ zF2Iuy#_}a#Jm*hAi6I*I>At1mBKPKVZpwj$`RcKYvr#jX!xJ^|E4u)+ZuAEPaX9ZXWxX=_Pe0KP?tbqvlMS~zg*ruC;O9_-P0Dfe*<+qx z2+kPo+A12tWfKQlfo6(zaU*{@Fb2x$(hY=|FPGFvl7c7o&Lzr%NQ2B;>YIUnOKLJ8 z?Q?hPZJK;Swhc{6`zt>*u9dg5 zte}Q~#9eXiTO?jzwf4TB!`JcM=MU%)4iCNy3H{NcWp|e6!@YsmKLw}naZ%gfO-#j1 znmIcI(Jq?edm+StRNIM?vforO8~$U~#Pi}Fu;^-YX( zip5})ZnHztTI&9YF9hpv<8dZNduo8n6EQDZ7~y{sko@xuyUAz;8A4R`g_$`Z%p9og zPaMNfsKHFYq-Pjc<<^6LmUg3O3FyDJKj=B4Ms7pA?h&5VL)q<2aNvjY8Nu9zEg>>2 zgL}7bveRUPO2`Q)titOJEeNGfcJiYPIdt0 z;QS`Yn`Rxh-!A;9 z-NhQHi`C+CI2${S!#hm?%$vsAkXxq}x{Ndg2|GUjs&UogRTA1q0<8|+ODZ2e^Y?6qs<2P!$c_+P4Iix@8l zBopWqWZ4csqXLg$)GbU4Yr^n|V2(^20|nsZ%ioxY+9rjzwQNJ})l7$&7OiVj#jJV1 z>gAKp0p9Dt3H8RviHZaA4#rjwuaA7;p={c1#{~;al%JJeY?M+AzUuL@e-b3(&8<-c z0Oxl@a+Cfwi?LqUFj{vn3B(T<(pp2C2yLes44DJbY9(6N@|jR05jb?!qPC0=jA{tQ ziF-ifNDF$u2$bG~8M8wZOZ>5jw2$(x`gjK=7*F+vBdDery>m%Qzl)wUZOaHB0{G1B zw$0vS<>=@DVQA+Qr!sBw_v!MV7X&be6*3!+;B3eBK>a;Bu0r;gzVyfh*Dh1HTpg%3 zpkR+R<*%ZQfy0gR<$>4vhqaK=V{|~nNrX`>r5YT3`R>UJa#_aUgA*E$u&glc(8b!4 zlV*qVLtdvBkzq!V!U;LD-u2MUQF92CeRyF-HQ)#ow^s6AOg8eeH9@Zq-mtpJ2bwV) zxTV2`O+aJUW{0tFmjgat`m-QNv$uo-1pcsIebjdeL$sBpAp7V6Z=PO+&+yQA4l5Q$ z;yY?K@DT)25S$}2EFLEvk4JnA&=;{B+$zBM6b1*fVt=0CnOvtER*2jBQ;Ro z|4j4Ki=8A~xHo3~kGw+mojtkjelC1`XIF#t)0gtS%%4M^aa-~n+S=8Fq>gfys^(d= zT@N<9r^6TtEF#*NPR1w?j7SGY+HweG1g=Yl}t%9L53dP#c*<@JN`SaL~sMeCiPUj3CIc_TW&M18k3 zSB>7SxAK`%ucYt}DH-6|bz#)qS2B3@dR|*A<+8VMWuSdC!Q5U}(GtcQJkhv5X?)i= z?I?6*1h1uQ%yv{qZ+kS}_eDqc26I~eEiLiNvebMwIOO6xD1^*;(8(pW&UyYh^gHP) z;nC-n0G5ok^x1ATXq2tLvc5-rZ;YE23;lFvwz@J=5?{Bz_xSaWp!JStASSBNrj5u- ztPmUTd-BKp6(;M$&pasW-_vfqP*jKHN3$G&(7lVV7L<9~&qX#nO4!ZPrn+ zlY+mGiy&`#j*WKbgFhLUfzjjnQ#uT&*54YzxIcBDKDR;FjAA3#CWev|M}A({u98|N z>Njcn2e%uWeg?eSJOsm6FBF1v4~L%r$JM|O(MRmH>Wr5LK~f;l!__0ww0!!+X!Xx| z$@K=WKgsx%!{x7vy{~ry{nC9;3T@XxeS{)UgvC6p?v6To=p_GSl{#AB9eMtHEPw>( z9|S+K^tT3jgxQ8S|LPF#q6k?>RY4m?ee8P}w#oWZ|1be0C-HMG93Ne|}&}jJPyMRR&Tmr0`s_&1NPZsklZ-#BA9SMWB-@Dn$f({=wj>%GBRX zEytD76pR6}GRXHB^2r4}pQcRShk%%4f&r@z<|kaPFKK8DF2rLsJ*uxu4<#3qnV|kDN6A89TAD{Px%z9w9;nOIV!X;sB>uzN9P#Snvp{!{tZAk zf0HiMjS#1-2bz23w;w0H6Y#NylY5Zm90cj}!V{FkQCKKlSRUzgKCPfX%li5^77z_? zt>sbL%p)zolPb!luJd`MBWN6X+Nl*=TM^-VqdO0wOylpK1ySIbVfrWo2x01+ z+xLa>S2h+zZ@RR}q?X|4tVvN?|1i7PH<-0u^6L7Y4Q~s-qrff{g+y%7W-3JlJW4#4 zmP&9ALu5)gBT!Gd>9Tt_SHnqt3>uWS`i+a$|9j4czulOQQK!_p{!|Oej}H@JjGJNBSBOUz|{gDK^EMl}f@7WI&8~slM`xpgg%R@%1 z9aF2IBg%Fbc=glrj-9B@oU{WT&8=*tNrHIg&LO zK)VvrjfnWBWgd?hSp=3(#!%Gb*ih`-|qJ%PW zDLj5WJBkf$&ZAieOajrEu;Ir7YTpIj-~FrUMoIzjznh5Yc8Id$kYCK?irls?TUQS= z(Aiyr?34-yMMV8Me6~hN7IioH=g70uTx=1Awpbh5p0CZxf%wWwZ?W}z1i6InZ+gK1 z7~a^TH|tH1)yY)G?~Ryos1NRG8)TCWUOcTt%~-Fl_RS#Sd{8ls+6e&+*JDX@O+ZT> zf;Y$gmQ%U;UC}VEe&_R+^g2GfV=#7`@oBVw4Z?|oFtya4a%ha zQsKC-3Vtl7r6*-mbEnogA z7$PL1?GmH%wz}O>kBU~g&VeKAz%z0NE&oJyoHW;K5P1e19cu}6?gfO`3B$3QKr>4> zirUb!o&F2ar%v3o2HVy*FU3EHzVJ%G+GMVLdXTXa%(3e(`ogK{45Y{Wj?jl0jyD-k zMQ_;i0|^idBbW_+3qgtyy5j{2cd0q11{=%jpS~VC8%)pCX%u+-^6`T-cdW_eKd@V2 zoN*PuH`vUXGOnTrNe&tFRxJ(B{EP29L~K9BveDO!h58XjG@*+WZy*ois3pz`4R~bW zgY>>LhD8!T-L4R)E79KjM;9UCevT{|_3rr4^^S&b;UD^jIaY?wU?aRhmjy$lc*Wpx zePC48N+1a|H4&erH+)O`Yb8ZHbX~jH*=gZ=hiaakM%(V1{-+i3TIHBzR z;b_8Vq`$~jQ-+|vtICYl%(SEhS>0eIXger`oJ3c5vLQbKx?0AY^p#|$%|OkPNSYd8 zlxyyzsORJs7^ece5Q!DB>na}S=ynHltu9mP_{7nJ6{uQVi z97I%F$twnrK{FDu<-hUPcex1fzsd)ODUZHnvZM>^$C581t6-LK9-6bv0n6lLet8CF z(vGrh2x>-d$UGAgxvaLZ=Gk1@%nRwrFqA~^_EO4SmZ(e*b;(NJK%(tl=1Ka?K&;&u z{oV_i6y3f5eVHR{Rs_5#{BOuiyO*zzJQQ;lIxa>Y7E&BBenO%;K6l)7dPOc#B>b}= zMFw^qKPUYp=%m3D8ll8<$720$2Uo-z@>9(Ljvx$oFme1>K8>*W{#7lu)w9wAGkXpD z1Y{uS5Pp2;88#?WfN4&c;~x6`d07b3x`{wtc7-Pd>L$QXty^3BD55}e{K&~&X*8gd zy)oy(eJ>F#eF7_<(D-;5^C(5LFdq6JHSzyH6x=0(!O5Ra%T4nm-CjNqGrLsN7d{Sk z3Ty1Febe&My*}x5t9FWCqx0niin}DY!Rk?^%#76rvyzP7Uwp5ATxyK@+Umm`S?E@! z$ttGrulenVf6EE+P?-pCy@cFcrLW+8TGY|jC*`jz2Dh=RyXH*_Rq)FKSwA9XzPU^& zyfRt*@bTDuO2vSQo-e^%{nF@UKo*y7^D*z{9}rjl2X#s3Es_!P&Y>Ul>hI%#u)a>9 zB+s471U$at5#&{$i(?*0te<&Ckfd}BAd;qx_Jf_R^s9T|I?z`-Wa4u=TJ@(*<)CZ7 zv(Nd;6E%sOXg#|s9A;JU(;wV28n>B8akMH*8gM-luk$c<-9#u;OU>~oy9A^W;Li21 z6QoZ1$A-mP9(?^31GZG=ZPLp$v;5WUU(Xx`K${+~N{-%v!3YZI86_wBqH}9C zjX1?sDM0;fzRLxZK}=u?7!&auK}bR6?93by%s^5jYn&Y3PJoV;=|vqKpbLWEcq9pS zJ^qC1kvIo3$Z1^FFX=*xVgL*oQ~ncx;$nkar~WWd(jmrt@LK!*oBz!RiELKPAh9-? z>meuvXb3`miIfb7=vJ!x^sm4bFcbq{}{jSF}d+^&>S-5vh0e|v{o;^ z+ii8o1=ENbc|@StP*_Dv27v|p9FkSPKfCBbdv;_4+i zBDI>Q;d~BKMzF#63wrH6EhBP>?VDk7j_R}U? z59RK=nUkrxU+uY^VS24_5GjFMIWBRaJ#WvSr$K7%ak^x`A4p=s3Xh_5J*M)~XMTNj znkXYkrl)3dhtHf{`f#}vA&|aD+nBErDEhw{AKw-#qx-=xD^$oZx}O3t zn^4~Rp>W5w?f;Jp@JsfF)pgSE4;l|6Sd|)haUG9=XO{vGM+Qv46ixCbr`^mz;;7%o zpI9%T&okEDAdKsDIRWGjfPAzkpCdcFHYb!UQu=KbGI^WMJM71xZ&{fn1kPDy7hTyY z8$c%g754(uD@={#yglRL8Qcb2eE)$L-+{WZr4s<{yPXPN3T!)>J#E2I680CD)uoi@-tO&E>zncOWMj4j%80 ztxpWr-Lzf8@u40<0@!vZe?qSzKW<6{{d>H;>aOtjr~`r{&&@pD41Q!c-k1`89OUnD zB&QWJz{p&Efx(N658SZ`2i(zM_w!5tJ(xDsWdI+?v#P&l%Fq27S+c2&NRmFguMqEf z(G)=c^0q3Zj-RuL+lsR2@vq;mWHf(`#k;lP_eUG2J?du_o>b56B0{8KdhV9BL<52F zPf;A+*S3#D%{v}?b{#mJ7frU1^dbk&Fjt+Cu-+@5vL0;Y+bIM-6I#1&IDP&E%Z0sr ze+lRvp6PeU=gxY+*`rgmMc4Tp^!Jm1&E>{?^9c^;oj|RJ+Xyy%fWhxQMD9@6tCc!L zN#+A8d!%RfX*0pnj3BLlTxva2z3#an`-tGd{YYrVjf_p_`n{2g?S9j+t?=-9J)lwK zu*Q-XZQ>+~A<1JhE%*W%=@b*xOmjJQWZqla?;(S=Wv>iZ&M%dHVFJ&U&BJQQ_Y5r_ zThSIhE7pSdc)RH-a4wX+>K$vO%>q+}la3wn_MZ8XmYgjEnQY zLxaO+i$4Q9jnLLr+*kxzI4eew=v`YkPiem6(ePpJWfRPXvaz_m8r8?;p#Y^n!CCASyIivJ zn>r-Z?|6@i5s+zd-UU`svz^{G1l||7TMO9P;pe40>H**NQBVkiwjQG9HlyJA1;()+ zMz}3?dS{XiW8cH?{olJ&{clV8lAJ9Pnegy8xa%SQ0gUj3y|55vIZ~XkMS>TG#Y=CF zht;Ky2$G@T{=N=RVe7!Bbzk09vTZDpx>Px8J6ira)0pGRX*DD_`+67oG#hCWLF|nV z5f4FuU0lvNeJSix>(xuBWzX4Yr;cP?M^@%338Ig4rq{b~QI9um%&SUrWCE?qInDM5 z4%LROYaL3mv4IP>La!|4s;Z}P8cyC=<%-Hr*jKJ=Brdr9ZI4zpPy=1A6mOG??dY~; z0m*}V&?81aCoSr$!?@P?Z7Bo2;gj9BF>^#u6n$?GDJ1Y~l7Zs6+ZsH*79=?HAV<2j zI;!*Uv{Eq82kw)f6DZa0ule93K-I2at9R~d`WRdaueI?|GQ;rAv?tIu;k4A7O;53C zpEBZjF0vPEJNsn-Lmw+`b3Upa`_4+9(qJ6e#XL$bhP!9*0?k8{3=KtDA&!e~+QGuC z7rw7lq?}uo;VMy$FIq@n)6!^@MQtbo`oo?u1NFtTcqO^SXOa5jX6-dnB`po{Z9)2m z*YpicsF?Qhrwi?|7hL#w**_{^<{vL+J;OPcGA|YgpvgGs21!!ucoIh4ej|CFS$}Pt z<)Q1Y;DXuaAsnZ*ul_rs!D%-P|FX1lv}BB6VI-8wP(3si%lK>`=F^U0xCVd!alyyb z`%XQ4UV+ahuemoKjPG!;F3MVV{O5*xayERm+i_{hXAgKKrlf}WBy6&M8O|o(if*DM z8ot}?xevJic%$AlXveNu5{Hj!)Sx!>#0Y~nutsb?D z8to~1W$Il7+|{M$3`dSk#kn0sNp46$5BK{rl;+n~Oq>$RsCp`}cFI-i!}8^V+;4|; zZkA}0dA>SjytrY?n$Cp)U7Uy}=4-q)#z%hoKA;`DT(Gu~E+%2`h9OOFu@rt$H{pqH zoonpjc)NZ-?_vTy<-cLCJTZZ{fcwn15Nodqn-_ij7peadNJq{xj>l{I)LF*yI8i`x z#~}RQ(ZY;Z*LI+JOZx&RFSw^0Hz4EBU->WN?z>~94<{R6E4iUt_V?;_Atcc2Qd-Go zPO|>FSaFt66YlR9*&Csd?!TP4*Cs7104q+(QN^sX23W_u{!MymJqzQS{UT8i^u_ks zaDUjk*^g=sv4_3)dX1XrAIZiKwHxg=Kpi>z_$7~&=;#+< zH02DDbmWWt{hzJU&<5leJd_*Q0l3tG#rK_Zzygr=sq~5?N@z|lL4jN=xKO7cc^WZc6CXb{e4_0^f|FWI#eYH41!y0Uv?$amse-XPWv@WpBLCdKJ5Lw` z#n4Mex9AW)=ene<3egD|z4=F>T1vaUhR9j#)%hjkvzHjcU~9~LY4>qfC@4DVZ(WKc z37p6qeu7}}M*6I*@YRX+0kh+W0&BkQZJuP0Mn93?h(P#{;lz+j^1d?0UZp$b-YLE1 zynHdOeBC3`W0;rl_raEKgM34pRT`Vw--qq%-zmnQ1QQ#PB~WbJ(Y1%$-d2hdftggl z+XL~FG*HxG<=Y~kwX-D3R?|I*(aBUzcity-AvJ*# z#QV}`%jSS&c`C3BHT+(@R2x8qp4%n=DpOC-j)%s}09u`}#jf3-Ph}%f&~G@K@r(_Z zuHGHuaiOOA zuV)&w;b;)*E#;TFp8Mdf#Y$6$>BIalN4h^T>(uNN*pPmf!}`mi*H@NoOHq=ti@CQD z|B6YTv#Rl8?!3i{lSW%s|7wW6_N^?#h1J^RoAkpU+CJ@;nB5b}p;{B|cbxmeNM-~! zewbL&b+>j;5C@$j9vl0K$bjffkguTX*uW1&SgGW08c(o6f`#1zPGMhP?&O1O2z869 zclUIFPO~E`w~h-Elj{U2VT4wMF>p zhu+uNOjuRZ;jHmY!I;ZV3T-9VvmZ?PAYH)*X{sbJGdF8X@xVI;f!_S9>x6;e_y?v0 zOxc!tub&krZ;tZg3$5XMGOuYyJv-!RzQ#gkakDz{+$z=nfKE5Di zhQ(B16a!vJi^fQl3Wg>tbf#SXchyy&y)0J&m-GERwS|EL-eRnDHtQ8Xclcj#s9Xfj zz4n}dJQWNzq?d+B>?VN!xwS(=B-7+;Uq14IhfX4BA8V=Pa{Ov|IVE;*kCl;v_yR)ac*V^5 z@$CEj7+jWly4>jrl#E=ompi+&iNL>DlCh^Ty~^|MhI*8QiGePHLOVM-@OlK1*A;V| zUdWu!Ac}tJ-+^qSaV8?%z`ob<<6HzBtt$=A_Z}4nCO^f^pUrt;aKdFuiSeoa-$j{# zT(Ka~)UDG>uY3v&z7CX2aYg|J12bfJ)E;MWtJ};>Y%te2e0F|s^Krl<4BO+KjFB&j z;E3cNDcbGtvbsTE1%GyCqBmu-=+EgX0W))TOLO)M->F`bnIaE<5~^=cC;7~xe__9{ zsepy&F?%Hf9>gPr4oc*)s}$-n27v*b%vPfYXCf!<4q*w+{*y+7ybwZSgORsa zZ&zOV?>Y8htZ7nYZhznRze-R@X+Y+j#R`8fJlSZ^PP^!3O08%KT}|VIeK48-XTx`m z?a8|9lUQl{C*W-c*KUM#5#VMeonfxBGCY(kQ}QpG0e%J8t7E50t2gpC|Z8cxcl9h@p!N&|uMk{G7z-MUbRF z4WnFMo$DcY9wyS!&70gpq*uQ5`fW-EHRYN;Ypvl;3XrB`Uc&Ub80hQC~rl$OmYP8$-hi0wULu`ojPF@U1rk2FW@4rurq@)Xtq2B;?(+%a5*`t{ysQA^i)B zf7Xzk>MNdftDbD4$+D2eLFFpFx3uzN&fhfBnVohX$ylE$iB`J{y}ra(_U_B7qT_Q~ zgO7M=M&0rA7u&x0{OH$>?|VxmL*@$FxT^%q^1>d$o$saar5hb~SdBA&+r#rZ8{UIZ z0BIdRo^9hLibo${xT_sUrb6(~S^ifNFw!K01dV%Sj}435MjMy_I}pZj3pc|f&z%N5 z!-R1HebF3lwEa7U61E19@e98ca|{3L@BhK}rl}psjoO`mK(O6C8_?VE^dZ_jV9cA4 zw~GO3o2BRGtVcsyO4W=R8ZGaf7|Xlx8zX-dSAi+up_CPG=rGcLEb`&i&nWr?cHEIQslTPX4;L`=@Ie zm0ec|qvM$#tV9(pP7db)=suUFpb>Tx6II5>+N1GB3%#TfAQ-c&TaAUxP+;B!39-m1tzUy*$sw>oFM_;PJ)VW+SKT zATLfS%1qkb^!cr%@Z&MF_0-*2m7in3jPf3!u+4X06s%hR8#r<+m#%S>k`$K~{_=T@ zf%vs`6coivsL5gfjYK$CjY4OBI%Go7*Kg+F7g8@jpjj;lV+M!S*4L^LDc_zAU&vZU zB>Kbc@tNC6dHY*mmKWLN7rqlbZ-KR424`>0LrT|o?4fU+lFsduEsvswf}SyJ|N313X7BO zE`)+|?+Qb~Qye*j59irX5wZ)LY^-IV5BnJB@%kE1GZ&*or57Nc^yG&Mi8Trl$J9BK zcYNIm^gXV}HonX9_j*e(CxcJ)$$o*XIEgpcg)#V|Ah-F5Cy!l=nECN7ccDIBf)ZaP zpOQ1V>}X=t8z|I%=)kxOk=Ff2d+V-WX|FN$-kE`&+~z;7rK^uzKQa5o?1$*dzAQ_1 z<;#idf!OHP82i~y!|=a|2C$sb(lE>iOb7=)=f+0k8QVm%g|c0bi%~Tg@xvWweit?) zcNxMf5XCF2H$YI}ji2!^NRroK-(lur{#yti(rgO*%FFC{aoAxyZ#2o-&6*!annZ8O8mOrasmlFaL z8R$kHODp}AHY$*O?WR0T)|xnF>H)}NkiN8Vd-y*ID;=F%%}DO5v2t{Zl}p)X2+$@3 z_L%w9iU^no8hxERVYYvD29+uIzF>CY_dI&D*FsJY{3DiZe$Q!(lo(H`iB>NfzUHPJ z)Dfd)9$&SK4V@IVzxZn#fYeU@Hv5d1cZJ1$!Wx;{1McZk7T0@CFN5rng(vLq(+(}V z3sU!g`!^b(@|AM+WnzCUm+!1=(cD`vjQ-3i?H~=DbHM2$Cp#F}$l)sZeaSdi_Z|&$ zTTsh0GeaG+GXKM!KQv#X7dcKC7XGu+Nkv!7>Q>wz#K+OTMRjHxj%)(jKXWbiuJ>CT zn_aKUu62cFL(GY%m!9eCvBP1+iTP8*EfkV){^S`lRP>~_f(Hj2=BKn1lR^1H1_8x?Hkcf4>kxMaE6FCsuf^9~k{fFy&ynVsDxA}aQQ$KDue z21yiK8Yvcg+%;5jAmRHdp@kVPDy3%J7fb$YNRq43_my1T-7Np#WL!yb1aq3eio~k9 zJS=T7F0p!3%a5N&i*!J$A;8J=`F|!-cY=(`oLfbt59I=<^UFm9Y->0X0FM@Vy!+)j zxf)00!quNVb%Fk{_4Y*gs}AK+K_nj8-In3G^6{R(kJa(xmnx8qaoAjRYF+jQ7Pz9d z^WL#H4_Q@yts_+mhYx{51}vLowk7;a>f#M2V(21HVG^H)178&I&HqqhbW^W*&T1Z`jT;amk|CBIv?+*^TveDv7 zmc9|{h7cMe3-{O5y^~WOHBcdWQZe(f?+(V%0ZHX-Xv@u1;(2(V=dnVAIJG)xRHUS* z^w#Yol`1g=YJ&mmscA+rjVm^qnsYWq$q3ml4bx#*nk7~)$`pczIUywds%rAF}M z3gzA}SL^SciP+By%F50_>-)XrwPJ#*-(fVAzRQo{BKN*l1$FSV1AFxPaYEx3%Lp|% z9OsF_QDW<0=Mx?pf*~(G{zfPk;|G*l*?GH6QA+ng>zSwe^UbZxs_c~eiF{pm zNpkFPn=q3_)v+iTI!cZTVZ%w_>LLSuS9xd^h<8E;+m~C+E|~^CU`SYt!#r<@BT2}N z;)E1X6Dg13z~1`POUbJ<_srJsBY(QZM|U`HF}4>D2!T*|wMA}u3u8h0gpf`~x@j{F zl~*-GDtN@0%$rk+2<7s9tViaFf5vGtcqlA?XZq;nF@qsA;(&5`uF2Pavt|wPoKvjg zQEpO{Q}PZo<7cz}dT-PlsVaPGK{DL3PALr6LB6b$_AXE9aI0?z4}pC zkSvjAc&UtVrokLRTH6npV45T5>dlrg<3CtF>BXx?9CNFH_|+qekMODKho1tD6Ls%T z7a%U6fP3!YjdRxzs?Yl~O%8(F*xcO*QG4biXKpm1^6{4PcDyN~@x|Xqk5NDYmHW(w zjb#$e=kVFuWCJS}XC6ioGK*8lGR!-IXMdQ@yZlFxdMZmWM5v{sfE^V@1g_&kle+d5 z_^)Y>+w-l}_lKC_ZtN}2hdGxH+8gZ5L=Ubk94dKA!sp-iJSoFCDA=;&Rn zvamhc_LxMIgR&(1k2T;tI-)ld{wj16I0qQoE^R<8NwrR+2_a%5r^&zNkSE2u58tm*U%~fa zowZxJA2TX5lDvhpPkD}CMDA(AvRo;(UP#rl@aC5?P*UrGZaE=sf0KvC@|N`Rmi+Z@ zRgj$N*YRLMZK*dIzW7C4(mTE${AcV55l=g`O+&@G07E7|SKuaQ8i>;H_F#0QDLX}= z127@Fgm%g^IJ}N<%3^U#L>N;kS`o#UTvy2caWZ0eafEV$MdrD*e%w27 zGl1dMo8kRh0~O2MsEcwc)#)Pmsfn#0zPU7g>9{rW3dE&v5S*L1QPc#`Izv9ab@+c= zfICG@Ro}j&mYbG{Q6&w33qR(-&~HN4HvhFZ2ay$eXKWm*zxbnlFwlLF40O#-PK2Rc z2rNZ&f4PJ2#hnb$W5ZEuH!qIfSa+DoI-UGSkb>+@kt{b@O-wH<^<)box9+$kzq4+s zIpiGBr2OtY1Mdj4^$!j{TZAtpV3R`jY$V#*pm)ZcRJKZC1ot(Ih8UoH{yAEu6Z3@uXd<$!1E-5ZBpfr$gVRSNd z8KI|?17T+}j52mQND0BEQ|)gi?FVF%>PD4ni9RDY2-JCG^!E+X=T4)^#Zm|w@6cjH zi;%`xAZ<^e8A_u+6O9yDqNRE|;efz0L|`1FM0c9qaOH58Fd-!!$uT!zYD1~07;br@ z=+Te2|Mp|(Kb3hlOzaCSv3zzg#r9e5A5^YmvigknVZ|}}nWtesgCe;A7D-;{B|ro7ZS|1= zSr}r0&$jhwKe>qo3mtQwK-`Mqll&j`6of7Yt~L>9Y#cT$&chfk?qcJBIoEfpXsWQ` z*YG_J{$!e-I6D-D&GRrUbfl$`X3wJzX*Phm!#8_j^2kHqD%3SSLGA&IE;8JA7#G!w zaZ&SXw~5H3Q!`^h^2BiY9j|Yac|>#WzE!+|&HOShUe2lPS?TR+^jJ-Hm}r)67maUs zFbfjzJzqbu8#5=sw(81%=QUg~!Rw2sdw5*fKoz*$JbDzl+v!V0Hc)rP@-FC3EsFjX zs&AUBE6U`PsHQl8^S&YyaJ^X%;9W{YL67(Le>;l+(gg-eP#KWuH&P}x%XU{}O^lp2gF;yI<j;FXStxN&XNLBwTy4(;K6uC@-n{ zl4-m62zhGIT>x}HV?MuYE7y15e!F-u5t~#!2^;}r905=O{m2JsQ?arr+Ng%;A(_Yl zRS5EWO`t`)FX{H(XQO2+>>J@% z>8>iTZog0|A>bJuI&5uT$b5Kn%VG1cL?Yg$Zt@r<3Kq# zmF3+?BpEjMUhO}CGU?h|l?lDnk*W(P*l>BK;s%7# zEA10eA^Yi>cW5fs2np<)dpm~u{&kM+d=OKWLPm6Cp3gep7i`!Gs32B77do8h6^Gmq z5VG@02G)W_RKa6Qool)XF%M|xY>+CT^>+M5pvPJAP=FS>Aej`$&>-1AMdNvr@pkV2 z;YHMt|s^)vEbL5ql1vxR`6%EZFqY~(IYWU*a){QiRP^T^wV-Ly5*TH zZ|FmXF*}09c)?lV1wekBt5w&1erQ9DwGCMwO&K)tX4J$HU{@Q&?RNdN115iVX?>m$ z)pG~h&5W(?@OUo^ea^STvHLTMv580-E%&;}M$4U?dw+*z64?t`BBv2oM+6t!zC%^8 zIEMS_SPBCm`o^Xp2YwxjdqXyfkwI{l?-Y@8k&N2K<-U2l*j2X+W<<~=@yOn$_rSRT3p- zi9MM>D;(H=qR*QhZ53~HkP$~^Imwxgk|Eq-fhZ@Y#mkGbg zYMem06&jgB7{o@sb9dbtUFc0J8?OktEMeA!yAeS;^VQQ|XEK`&I<3g~*XapGmn;ta zwHz$WqKWrgHm043(Vhx*hb?DF5}m8Luruo9;U<|_tf_K5M&WDE}5 zOIo9?^}9rpb987u0VgExipT}s^U12noo9#fEz!4vUHVj0Co#Nplo$G{mP$tx_A)>D zv0xi>0@;_cV~_7(33V6Wwz_b?_;&pvPkl(0j8pkHXMGJM$x-iluuol^sV&3I@)3^A zR2(2_3qqnOUA8cDXJIw0DGI5~|Im}!ov|_rK(Zxh5&806fJY|6-dB5qtbP9K1C;m5 z+ctb=@LNY52hMrN6~IM%@0P~ng71=k>H5Wu21uAabwZiQfBk=_ymdtzUL;aJ+~~aR z_D7JBeDSEyY|bRiKq zG1Qz)T-@1CY-A9~PWhnJLn{QtwI7)WN&?p+Kxpkb^c26f-KUZX2T_y2PI27kffjM6 z0t|qS2|lz+Cs!7r`{VZrDNAX$!pMzlj2~Xn1_hKY^p&p1K3!{*&Qp3`;=)2d#s?SD zX5F+s?OTf;n4o`HQyv~T@ISiOe}w}d&N1he?9nIiTN{~!6lO)m)$$-zh9_gXr;uD4@SaDa@vyZuh+}s!O z|GKG>|8VAr%aW=832Yy;%^Qqx|MYvuf zHAX`2gxL8!QJ^osyv;BFquTz*QIk0-Kt5j1K;d$(eLwW(5UhK z{6KjD*z(2HDv2YAE4~KN7%^~5dN(qF$b4wolXnLVEne6G!_n1+nm&|LkNhHpjQ8BG zR@5OTQh3DArz3+I5*1ZmRmO_Z;6x)DTlZrK%1dpTw}-tLt>Kd#SXH1PsI(^52LzfF z-b;qEs+DAx%}9cMiNCp%0WG{>a2URQF%jQ}nk>;8hEp^B;993f*j|Z>q3vuWvTWm) zSEEREa1^7-elc`PioB1QGQIZY%SVUXr&t@a|NZ^O4S0=TI#mmTTVf=9nd%Ayms>>u>q@RF`k&*V%9Cf1UQL2QG?uT;T)b_Ju6& zK^}@veUNec4yk_<2ESxMA}D5a{Mdd%SOS4-F4GuE>8INF?z)!q9OYOoUrNaQ6UvP2 z8;e1+4^_)-kh}z~MP5-sdv}tY#dw8uNzUkzlELst?;&VS5n0;S{9(NU+>u57F6NQL zTJMBl-3i%Ghb((vc&rM?K=L}VhK&oN*(R#>s7Hs|?!Eu48n$b?ejoRmaGag6_4@P!*^yAEB>df{lB2mv}1%DN(RRq zIG{|c=v=BilnsxSetQ0lDVUPZ;=~2trGiWd_!HNXL6k(gOTvd88c$jT`n@h9Lz|S} zKJaTZVpdv96DDec#505ILtiZ`Ol1+KB)J-l&T|t4S=IBvnW#U6OblUfI%E+6dZNl#^9wotEX?GcPCM&&neUEn- z;Xs~!%d*o0OvtfT=Jr0E>N$yV$IefWnVK=y%C@&i{ZxdJqt$HS7Cy%ru{+;5m3G$Vs=2dmJ=dvzh+}f?$AlqW!ROC z%rf>$vs+#Nhf%`k5>zVF>Tz@i};5v2wKbo#Pp6dVq zKHvAc$S$&HlSG7!jGK1JNFjuxP{{}x;oYK%iW1@?X;_s_xg`x{r9v6EvUeey-}8RH zkKcdw58m(hYdoLloaZ?UG2z-W4`L-8c$Af3pf62(XX*4SC2P2LrsuSKkEHC4F6@`7 zAc$BZABpv(&Q=;Jr*a_ju+2_~rK1gx*hxL2)38)tVMB^Q5y zr3aIb`5<-OKDPD7U?47lA%awU0GW%n_kQv6qtT<6LJC};Vz3+Jq|pBBzMuZ_ftg(7 z>alg1B`nznVcYgl8W}314NW=*o6I0Lp9)P%SnP>!;bv6eyN=0@*^E=1pWKgeM^;!u zsxS}CCd;&^yvTc$CIL&)nSAm|`4Jv^ZOBL!CwonKuuq4A*u6pm8THbi}y3gFe^bsJ&n$;cjKbxIa##62anhIB#Ra3}0F+;iq zHYs~u+JLMEbAHLS@c6)Hjk-lNIu_xWTlN@zOsTAMjqWu3m7f(ijduMOy&e-qtd%2r z4DU>-uQUpB=W|*KWYt@(^*IW7*beQeZ}2R=8~OeA14GA!GK_UzyA{t)+0C~Mhve=) zr!o0~^KTr5!T7lrNV!JwW0fGkSR%t4M~y@Ol^*1TGxvT6ELFf?x4d)I{-5OC>_&r$N?KXTV4VbKm zb^>h`Go4%Z^{={`Y$TW~^!``vCZoX_7FDD|oX!b}ggLXeRbZrS_v37bl-s_ox3jwZ z`#0tWv}`)>nE@vBbIHGtUO0XC>{XnosxIUbOMz2B#|mPBWP_ zr=SCJ_k0b^2$JT+9mOj@`4oq+Xw2IAb(L=qU2?xDwecqQ(l6FQ#j9d$bxE&74;1GUUw&DY2>!DtY z?rhzoM2m97-l%1Fe%lCO_@zNEH1%IJ^O|i=x}VV=dX)lm^Jmus%OK3o8om@VV%F1z zd@u8nCYsx&Tvzp2oCrg@w(;r{S$nEL-@bgU@^^P_X0;m$>-GEiclTa=`uvem7~kUV z@FF0y3Jp~C_g6Rs&K71FDT_?%{F!UTQHAwzG}U?fv_S3LTBS{6qhD%wjFjY*jePdT z5l;$~HAcK)(KUaelC7u9Sqp;)oH#|p@Qc8 zkKy^7oUrrLp+X+=02aHF?+q$+ZG$=!9xn71HgZ7(+qX^Q%fyctJsxQ!1%!%yuKSh} zWNieeYE+v01Gt80isr;FkCeWw%}~l-?hHXu@@p>pYEPaOs^@aR3G^N27xt3^$S4Y3 zq{-XlL0tNvtpp$@we2ZW?N!SeQn^h?Z+`#j&5%Hag8Jt(De2=nVY_5<-NpQZ})>EOfnTiY^vWGSU+?W?)nbnV?*7!G1$T^{?4>MwZ2y?KB4-uAEM z+w<<5r+|5uq#2S~Rh@o2Bi+Ha+4w+UVU#;1A%ZV^Hp@H7o{IlPWG z%io*4y!(>jBqtT>Tzr<4-=(OHKTpPHXOm`D$?t=4;KZrir>}pWxM^FVo%9!3dA!%6 z3COV84_;RVPY9pngM!(4kGx;KcLM>srU&HV5-M$nPe^)2rku&PCs_Pqne6zv^g*#c zPZR!25%1hiOsP(PIMtqZ5KWjfDe{ldE1H0s4dJ2K82o+r{6r~x&22%5OVeUS@zwtd zP_O?A@0!N2EsY0*h5c{<->;_My>|tbjOK*d&e+nF161<7Dry|Q=%P6Z%l~?Z2#6Ow z)&ui1X9*_p5RK@13MhE)m5D+YIN5n+JByNty4c)e!^~s94**k)2wMm1bn$hH5zKX|oe$ae~(;wacdsN_uadP6@p7XzA(Z`a;e ztG=EPHu=gRX%f5Yl{9)VLC=m(GuW(a`{%~!!-dC%==-v7=2`I#m)dpO&AF?E2iMiT zjXTn{Bj3D&%L!mZIxH_kws^GFC{WLc$pp>C!&z0q4(4pZWE(V)f&r{LO>Dn3}g z-I|9idj^?(%l85!`hieV(o(p1=E{<@6kzVaNT^B~!Ru)K6Trv7O3%+>o3*xPt&#?( z*Y7x4YTR>Y2sBA7mKqQ`W8cLKF0%qMre+pATD40XFXqcsP)NSWif{H;9{dsZT5cWS zxbu6vDlh$^TGm>~*mhfi3eJ*yI7yEax+|Vb(3l0MQM+*@e7ehxc&L;7*hRBw*is5p zz4l!Mfltj8p%l#Ab4dFS)D>745;=dUQPAD>odz4VMJKkom>5?!f*Qn5kqDaVd0)W3 z%MA`707uu7L42vCsZXX?nCM(7wpGgbt+##wOei5+>ux!SCckn zq}_)u`!1tMYYoH@q%=T8#8Lt_!%)XR-MrytC_X_K{jh9a2~YttZxJD_!l8KGW1GEf zUj;WKkQ<{I;$l4tX)GHXcF7|JpBTEP**3OPC>3<-bBrfISP~w7wH>r}L{BmW`mr{G zB-TiuYg`86+&z5c;edM+L4FYQbfULr^2*l>Ba6$6j+v5C^MkI#RUZA0Og!?>j0n#fq?ne{IKdkL@OXM6~#FM5mp}>mz zFNdOE(EQk(_>{k{0Y7|>UgvUfY6+$Qd4SLsPNuC1f!*m29xZBJ!=`_Fg*d}6r}amX zjiK*-x>HYQ_8K-`AujL#XB9}d#LK8|-`x&Vdl&BK8CZH9(`ubQ1|-MWXkccE_sx5*v>S36)~9!;)r~py800zw0)e7%zrt3a zO%%WBZtE>}||4kK~Qpx8At7ROy?KTj!n-EfY`BV$Xro`-`h!eb^W`~8`mSj#? z$ougGF(c1Q!-RVQJAv-&+q;dTN1NAs&pWqef)*S zZt{U#Xol698;hgIB6@|wUz$A@g-F_%ajeh9vfE+9DmMFDAEaae-yySasj?f7tC?9@Ujlag*!uKJLXSFGK$Aa_0hsQSB$L*W^Y%lSqFIVa z3$3gw^3?HlQq@#nPO{`*-vtQDpa*m}1;4uW`NxY*j&1t{sFCZgUk%asySev_sn@+z zlgVw1Wvd^ahg%9R;PTmbm(p9;BAxH+hG|ZHHI<_mmY<6J8nV^SH2U2rPVO598D(>E zf-9j@rcfd+047)8@b525ZO+*y1Ho;9>$1>$vJiSMb9ObCwosx~ud!BkJsSvCHJ456 zVVc&6`n?czKgbW_CD+2SxsHBS`BDC}n}ai4F&r*B`z^_@F)V7kYtNg#D2^mX40b<# zb*rynI_ts17bWG#Po%pxj)&;qvFr6ID%2az;s7+T%OHj9?7Zc3ssDlW=9D!A02^A~Z8{Nq3@4g*ieC^uhSW z_g*^^5AM&R5TXRstvvd228q-~Xz`cF102Gi40Za-aenQJy8UDKWVG23AQ6~RVFjk1 z52^0?_;PHzaC=|nfpnm=!@759f{@o@8<2%rXo>-Y#2Ht#eas+ z5~k}2{DJbAXLZOO9QCu@eU zU-UXH@i`H^Q9MOLCP62 z9tC0j%Uq`g+;9Fw^d}g4gV!sWEmQZHS7w!)PfXxY+B>1tP3(I>pEEZ>1s-{Y`@hXV zBJQVD<<||i&uNSez$y$pN!XZ*ZD^s$3y@n!e=2gV;kiUH$ih1($na``aF|%x=Uk!sl=5 zo~)YswI;Fjo!xj>qr`bDZ7P{8CF!C|g`Zc1vC?y08v`VAUmSLc1Y@T9Kom|LL9W02 z?rwo+RQYiEotf(s_{ak~a8vn?BzW=HD<(VMBFJ+^E2t3ix6Iq@rNEmCk6V+?&wt09 zqcXhm=qWZd!9V&qzVyG00ATg*%(pTyb{A~H7xb0+} zTLzUi;KgByc*o9EI<@D{>6}HQUlaJJp2j!2Lib*;CX3i>ho|!aCs;RHuDrM6Lj+1}kF^L}eyd^li`%EG@WA zg<27^3T+jraK43tKQnHs*T|xygYV);X~4Fi3?I<7+jqx6lURAkqyQPVtG z@H% z+Ve=AoH&R$9=!^uh_!00oaa3o=RUs8bq6n}gE6Y#^A@Y%St+=%9f#iy+15oYb+UzG zj#B4KIThLJzMGb5;9@;^8!zoX~iwdqW$sW8G0+5*< zEQ1i}_5J?@bRhF!a#Vb9PoOf>=X#`I6qWvC{_Aiv%9tY5&fSoKbkwA&K#*^u3{`y1 z3V?H31YPga2Fa%W#?TR-)OT&xi(%m9A*rlD-TDb&oXA{WV|JlMfD8i0*m;I850H`Z zs1F3u49N53lP`ob(={7=>eqSR5+!NV5-JfZ@feE58dBam9N*9-%Bg+KyVpH9zmDqN z@5|rDNmoWBLTUc$R{bb~56=w>c$OquRUcK1IN(wh|LNiqu_@IApPjGvZ{V!k{`;r2 zjExaP148|F5M=!w)6ct9#RsiE%-3GLo59uI5AQpX-&L|L?={d2`0>MD08UylP5fpT z`7Fk9v`7W2{CX}fvamKFa`i3On%`m1n;I8=Rv_0nk`s{x*|)y-u_#$l9F189tknf! z<bf^4{SnoPqwa{fq)+IM^gU6XmKg^ZcHc9bkm!CcrHaY~N7LoaS^;v0SKsu8hZ}?5 zMfU}Z*@%r7O%E6NrMd927GERo-wWcCFI}{+^oF~~GxLUqa~%deqni68*O~PWtZfbK z9vthjF8KM`RADc5MpXj#kKL5JN=aoJ@5Nr*STDh6E&D=RjN1i556e;E0u)pcP6UXp z*W(j%EV2;Cbg6&WGroM1n|=~b_&R_T64={E#?4~M_grK-$vY5&uKuABRcdVD6&PQ`~=cGTS53T^4jd2-`Xs*E2LEXkB=UCkWpQ82fzE=sJ zFN`dhyZjYF>TwYdOg={4-~;H9;451Mb=KZ~Ae6pxr-O11u9Jl|sS)kzNI|@99G_qN z!nd_G@1)rk&XCQ024|DE7n_u+h#m2?4&j8!5bh~T%@`&D zw1CbDIcF-u9pA53Ivd;d0C~8ERa6F64CA5@(pEZ*^a`Ar#42mJUH}9k;4Z;bR+1b! z4y-&IU*xGm{uF>y)2dF^j`!4Kd7p^7JE$KD8hf&FL=ul!+1ZD&2bbVS-k>B8j6JWb zDz4xzd%d5r1{5#!e8_PJp?^_vORdc02Bcm7=z-3Cm1{#iug)Z9+m?n8mCy3nUgrZX z8aX=F+&4HDYaNjKOo-k}K^d%SNw6?54}JGrxRrM%EYT{xLXla0WnSM7{wg}?a*T}e z4}ZbW&yrw@K>lR!NkUD4JTDg%!x>9;iaxjFqBDkC4t?mRSe}0uBQL7b!doK&E1luE3k0UzO-ngG(1RLC5v?;1;Oox<{F>+rsw%b**8*YLOPiWj~b z9%SX!5_OuWu)pp+R3-&wUhUTI<0&Fp7pRP;Us2;h{$c?IL6*>`3%+7{IX=J7qK5Uk z04ack;cL#?OI$E zIBbx+Fh-OF^jmeJmo3Og2{A=Zbnah|rP;3?->d~-?es@ssK9h-LM z;ewo-Gf!VT{(`16T=mtSXQ^;eX33wc0>G!koSDMR zm)8;fNz+>dGwQsUik;ZMmB}f;%U%Q;% zif8`}kFPYusk_m}g0?T_6st0=w`>`{Rw&F!qRMyQqo^e+xf6=sAdL@ciB&Y61ACK}Wn9d!6SWdxx={Z3i@tMT zm+#2;M_I_vRkl%Ze|C8{-9H&2>ch)a=vZR%%U%sw&!lDkX$f$tKRG*)817hrF>ie zs_Q9>JZP7!1Nn2;1p9a8g1pS1h5-5P{YF7D^jKPE+>P+#%xle2o`cDK4MHn(s4yKYh^F!@wy9!$FSqz|-6gO%ls&dSvyVL#PL zv1|6GL41rFaAI`6%kOTj$`(8oIwo@EA1;89dHo|k8e?~BLlb2~XJwh1_WKOWx<>+^ z=R~Y(u{*-G&Ir3q{K^p`xP3RT-t51Xy#O|!jYQ$}g2&t5{ZzPPzwL=GmB9f$>l*ky zIN5+ps&)%iD)Tq=pr!hT4O!_RpC$u}+ggCW^qAsXtj|cpOw zegBOU?2I<~{*K)z{`xsr@t%rs*uV`*+qhZkoM6}*TE7~lH-f*#QH=3>SbEI0_>N^} z{H?uKUhxe_&Khe011TB`X_vFQWFcIXLi%u<3uqqWa{B(;mrAzY<(QLl`l-I)wpj%- zAI*46(je1gQD%iqb7RVenU~+50GT69T`3tP7b}JLIM$J_Y{A5H;Z>!|cwn_!JEfqL z?C&J$zZUy}bwB3!rRqE5Q#$aibq^288ih_#*3}{WEeb|9g`b+rI_jJ!ATFd zV%B`TOZ_fv5C*xPIy?Id%X0WY&D>nU??ma5O;L+wW|}uk8&8`%W9C<5c;A(Y5`N#1rkHZ!M`OmI{&ME#j@jxdg&f8>H{OY^polfurHl- zEK*&C&A2G0^&Ud)#qY|acJPMCWf@g;!q&5uYzc8?DDC|p_W7K+bc6z5KUC8;@}P8Z zqZ&=Vr&|en>a)jJw*RxW{*GV`IrFMQZ7AHw(sxk8^>d`QgKY|pIqsCdj2KzjNPzNr zWRRE44k%oJ(0f*LrdlY(^85Z`DX++wZW^=u8fmb6r=D~Fb}IYEoD?g)1Ye#T0%%JQf0`-gwG*k#R>$b39~QFd52*<>vK)TBM1LHqT5 zke`xqy{!SZ^%zbAg%Vq^mwv?8ef@r&G`Kzc z(EtSKX0OMaX-k0p>T)@qoSCBpeeg-^OS4C!XfoMjv{e*G($s14?RW-{B)BVfV+icITZ+Z&$=3(bF_`;32yhzCwvbGP}U%^55$@|4?41wqC^i zmW4llJ(dz|@7apwZ{U4DU@hhNey@1&0aoT$Y2RwJF?ZK;9hFow2K7-HSG2h&t&d(+ zAPv9XI4A&3<3cPUdbvB{C5MKd-K90le+Dei{-L9l_1s_f;pf=mqX3#ioX;W9V>&)z`vmj3G}F>RN>td zby0!~(E|0RSNMM|jd=G_S^Fk!Rad(#^uCx+%;XxqTBSf@t>1ZS|G&++&Ga&G!PU5{ z)UIG}vn^-818buf=zm+x#eBg{*lY2YYThgy7XdTHgDPC4?d1zg1L|@#px~r8L0<5N z+&!e3ZKo(1Bmghlhujit+Cnw9p4_}cQW~1Qyjv4x05!4`vmx46THXfZq^gC3>GRU=r zL{U=Y;;&U4xd|AL>424iC!weZB?Rh*y!C`tc`?6GlQyx(u*ZbJi)iWJ`bUIO)|?v7 ziV_|DZSUT_%~4OHcn!9;`oV~D69zr61as*hm&8rV#GWpHbPMG9?^L@Q1qa6>M)UX3 z$_R!3RtF7B*Y`*M`!`d1X%DKV4Bf4XDE@{g*X=nmt9x(1 zPIdZ&!J^k2dKUZ&VQd9(ALe7Za})an$d8YpJ6wQx^EHm(kd(4iLAMlU){?|GC-?p> zrZKjoZoBfMEf;+!x6=f{lz4>*xRA-gYik#|DJ!C-9k;&TpqZ=-W``I zEx%9B1YT8v0hmM_WF#(MGUR1Gdn@*A8sCayt#DqjRVe*4@5 zZ8yCm%n!*0lndo;h?Fi4$++0dpP;?iAgl$!KW=%W+o5U`BIHpS2zsD5!RxFgB|y#% z2cwPfc1-W8mw*S8PBQ!C73T9k6U--hfi-KG6Z1;fwkO=@n7*%mv$m(p4|6+q&FtLA zCBYQMNi@oX0$%dR+BKerU%|YTM%ISNCnNOxJdVNwyuD0uCYT<*8J=<-z`4!&#MnAQcO4~o*V4ctVBI(a#j%DBI}RrdN+;cDM{iQh*fzaLfK7hL@P>6x#g zIe+B>Fbs(_rn_$LY42||hJ{NCR3|w%LT_80=BqZox#`@5VD6(e(dXWQngez!ca zj>4%$HdZKqb`faQ3uPUN`1qpHB2>b$zD(?BXxlvBU`fzsBe{3kad+wDK z#b$Tdw>%MW+0RL@CvwYbFxJ7-!gx;hS4fRlsO}2{xGCp0H($QbID3mQKQnAGeCJq$ z(Z{<_$vp(AH=J^EC-2D@-sLN#A$g|dU2n>|S95O^$f5#q&}m-uRn>l~_&*>rgnb7Y z8l8PM!!98VXnJT^1-}df{ee~f0-P#+?Fo`0x9E43KLYeZ+@E#UPNACf`;M{Km$!0( zk4@IfrlKF1F?H!sx^kW]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%0D>qi?Xd_8+x-3N&;9#NWn$u6b) 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 -// python includes must come first - -#include "sicgl/color.h" - -// declare the type -extern PyTypeObject ColorType; - -typedef struct { - PyObject_HEAD -} ColorObject; diff --git a/include/pysicgl/color_sequence.h b/include/pysicgl/color_sequence.h deleted file mode 100644 index 737a7d0..0000000 --- a/include/pysicgl/color_sequence.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include "sicgl/color_sequence.h" - -// declare the type -extern PyTypeObject ColorSequenceType; - -typedef struct { - PyObject_HEAD PyObject* _colors; - int _type; - sequence_map_fn _interpolation_map_fn; -} ColorSequenceObject; - -int ColorSequence_post_ready_init(); - -int ColorSequence_get( - ColorSequenceObject* self, size_t* len, color_t* colors_out, - size_t colors_out_len); -int ColorSequence_get_interp_map_fn( - size_t interp_type, sequence_map_fn* fn_out); diff --git a/include/pysicgl/drawing/blit.h b/include/pysicgl/drawing/blit.h deleted file mode 100644 index 03a91c7..0000000 --- a/include/pysicgl/drawing/blit.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -PyObject* blit(PyObject* self, PyObject* args); diff --git a/include/pysicgl/drawing/compose.h b/include/pysicgl/drawing/compose.h deleted file mode 100644 index dcf22df..0000000 --- a/include/pysicgl/drawing/compose.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -PyObject* compose(PyObject* self_in, PyObject* args); diff --git a/include/pysicgl/drawing/field.h b/include/pysicgl/drawing/field.h deleted file mode 100644 index bfd469d..0000000 --- a/include/pysicgl/drawing/field.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -PyObject* scalar_field(PyObject* self_in, PyObject* args); diff --git a/include/pysicgl/submodules/color.h b/include/pysicgl/submodules/color.h new file mode 100644 index 0000000..cfd5caf --- /dev/null +++ b/include/pysicgl/submodules/color.h @@ -0,0 +1,7 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyMODINIT_FUNC PyInit_color(void); diff --git a/include/pysicgl/submodules/composition.h b/include/pysicgl/submodules/composition.h new file mode 100644 index 0000000..d39c908 --- /dev/null +++ b/include/pysicgl/submodules/composition.h @@ -0,0 +1,7 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyMODINIT_FUNC PyInit_composition(void); diff --git a/include/pysicgl/submodules/functional.h b/include/pysicgl/submodules/functional.h new file mode 100644 index 0000000..2827734 --- /dev/null +++ b/include/pysicgl/submodules/functional.h @@ -0,0 +1,7 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyMODINIT_FUNC PyInit_functional(void); diff --git a/include/pysicgl/submodules/functional/color.h b/include/pysicgl/submodules/functional/color.h new file mode 100644 index 0000000..bb91214 --- /dev/null +++ b/include/pysicgl/submodules/functional/color.h @@ -0,0 +1,8 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyObject* color_from_rgba(PyObject* self, PyObject* args); +PyObject* color_to_rgba(PyObject* self, PyObject* args); +PyObject* interpolate_color_sequence( + PyObject* self_in, PyObject* args, PyObject* kwds); diff --git a/include/pysicgl/submodules/functional/color_correction.h b/include/pysicgl/submodules/functional/color_correction.h new file mode 100644 index 0000000..318c15c --- /dev/null +++ b/include/pysicgl/submodules/functional/color_correction.h @@ -0,0 +1,5 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyObject* gamma_correct(PyObject* self, PyObject* args); diff --git a/include/pysicgl/drawing/global.h b/include/pysicgl/submodules/functional/drawing/global.h similarity index 91% rename from include/pysicgl/drawing/global.h rename to include/pysicgl/submodules/functional/drawing/global.h index 36a3bcf..b6d2285 100644 --- a/include/pysicgl/drawing/global.h +++ b/include/pysicgl/submodules/functional/drawing/global.h @@ -2,7 +2,7 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) PyObject* global_pixel(PyObject* self_in, PyObject* args); PyObject* global_line(PyObject* self_in, PyObject* args); diff --git a/include/pysicgl/drawing/interface.h b/include/pysicgl/submodules/functional/drawing/interface.h similarity index 75% rename from include/pysicgl/drawing/interface.h rename to include/pysicgl/submodules/functional/drawing/interface.h index 24683ec..9168531 100644 --- a/include/pysicgl/drawing/interface.h +++ b/include/pysicgl/submodules/functional/drawing/interface.h @@ -2,7 +2,10 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) + +PyObject* interface_compose(PyObject* self_in, PyObject* args); +PyObject* interface_blit(PyObject* self_in, PyObject* args); PyObject* interface_fill(PyObject* self_in, PyObject* args); PyObject* interface_pixel(PyObject* self_in, PyObject* args); diff --git a/include/pysicgl/drawing/screen.h b/include/pysicgl/submodules/functional/drawing/screen.h similarity index 92% rename from include/pysicgl/drawing/screen.h rename to include/pysicgl/submodules/functional/drawing/screen.h index c7c6223..478b205 100644 --- a/include/pysicgl/drawing/screen.h +++ b/include/pysicgl/submodules/functional/drawing/screen.h @@ -2,7 +2,7 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) PyObject* screen_fill(PyObject* self_in, PyObject* args); PyObject* screen_pixel(PyObject* self_in, PyObject* args); diff --git a/include/pysicgl/submodules/functional/operations.h b/include/pysicgl/submodules/functional/operations.h new file mode 100644 index 0000000..e3dbd08 --- /dev/null +++ b/include/pysicgl/submodules/functional/operations.h @@ -0,0 +1,8 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyObject* scalar_field(PyObject* self_in, PyObject* args, PyObject* kwds); +PyObject* compose(PyObject* self_in, PyObject* args); +PyObject* blit(PyObject* self_in, PyObject* args); +PyObject* scale(PyObject* self_in, PyObject* args); diff --git a/include/pysicgl/submodules/interpolation.h b/include/pysicgl/submodules/interpolation.h new file mode 100644 index 0000000..330a1f7 --- /dev/null +++ b/include/pysicgl/submodules/interpolation.h @@ -0,0 +1,7 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +PyMODINIT_FUNC PyInit_interpolation(void); diff --git a/include/pysicgl/types/color_sequence.h b/include/pysicgl/types/color_sequence.h new file mode 100644 index 0000000..b7adfad --- /dev/null +++ b/include/pysicgl/types/color_sequence.h @@ -0,0 +1,20 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/color_sequence_interpolator.h" +#include "sicgl/color_sequence.h" + +// declare the type +extern PyTypeObject ColorSequenceType; + +typedef struct { + PyObject_HEAD color_sequence_t sequence; + ColorSequenceInterpolatorObject* interpolator; + + // iterator state + // protected by the GIL + size_t iterator_index; +} ColorSequenceObject; diff --git a/include/pysicgl/types/color_sequence_interpolator.h b/include/pysicgl/types/color_sequence_interpolator.h new file mode 100644 index 0000000..9f578a4 --- /dev/null +++ b/include/pysicgl/types/color_sequence_interpolator.h @@ -0,0 +1,18 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "sicgl/color_sequence.h" + +// declare the type +extern PyTypeObject ColorSequenceInterpolatorType; + +typedef struct { + PyObject_HEAD sequence_map_fn fn; + void* args; +} ColorSequenceInterpolatorObject; + +ColorSequenceInterpolatorObject* new_color_sequence_interpolator_object( + sequence_map_fn fn, void* args); diff --git a/include/pysicgl/types/compositor.h b/include/pysicgl/types/compositor.h new file mode 100644 index 0000000..37e0a31 --- /dev/null +++ b/include/pysicgl/types/compositor.h @@ -0,0 +1,23 @@ +#pragma once + +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include + +#include "sicgl/compose.h" +#include "sicgl/compositors.h" + +// declare the type +extern PyTypeObject CompositorType; + +typedef struct { + PyObject_HEAD + /* Type-specific fields go here. */ + compositor_fn fn; + void* args; +} CompositorObject; + +// public constructors +CompositorObject* new_compositor_object(compositor_fn fn, void* args); diff --git a/include/pysicgl/interface.h b/include/pysicgl/types/interface.h similarity index 76% rename from include/pysicgl/interface.h rename to include/pysicgl/types/interface.h index b6f07b3..f08abb7 100644 --- a/include/pysicgl/interface.h +++ b/include/pysicgl/types/interface.h @@ -2,9 +2,9 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) -#include "pysicgl/screen.h" +#include "pysicgl/types/screen.h" #include "sicgl/interface.h" #include "sicgl/screen.h" @@ -18,8 +18,8 @@ typedef struct { // a ScreenObject which is linked to // the interface screen by reference - ScreenObject* _screen; + ScreenObject* screen; // a buffer backs up the interface memory - Py_buffer _memory_buffer; + Py_buffer memory_buffer; } InterfaceObject; diff --git a/include/pysicgl/field.h b/include/pysicgl/types/scalar_field.h similarity index 51% rename from include/pysicgl/field.h rename to include/pysicgl/types/scalar_field.h index 22ceb51..b8467da 100644 --- a/include/pysicgl/field.h +++ b/include/pysicgl/types/scalar_field.h @@ -2,7 +2,7 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) #include "sicgl/field.h" @@ -10,8 +10,6 @@ extern PyTypeObject ScalarFieldType; typedef struct { - PyObject_HEAD Py_buffer _scalars_buffer; + PyObject_HEAD double* scalars; + size_t length; } ScalarFieldObject; - -int scalar_field_get_scalars( - ScalarFieldObject* self, size_t* len, double** scalars); diff --git a/include/pysicgl/screen.h b/include/pysicgl/types/screen.h similarity index 72% rename from include/pysicgl/screen.h rename to include/pysicgl/types/screen.h index 9baee32..af02cc4 100644 --- a/include/pysicgl/screen.h +++ b/include/pysicgl/types/screen.h @@ -2,7 +2,7 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) #include @@ -18,8 +18,5 @@ typedef struct { screen_t _screen; // a flag to explicitly indicate whether this is an object or reference - bool _is_reference; + bool is_reference; } ScreenObject; - -// publicly accessible constructors -ScreenObject* new_screen_object(screen_t* ref); diff --git a/include/pysicgl/utilities.h b/include/pysicgl/utilities.h deleted file mode 100644 index 07a9da3..0000000 --- a/include/pysicgl/utilities.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include "sicgl/extent.h" - -// int unpack_ext_t_tuple2(PyObject* obj, ext_t* u, ext_t* v); diff --git a/packages/pysicgl/__init__.py b/packages/pysicgl/__init__.py new file mode 100644 index 0000000..6eb8646 --- /dev/null +++ b/packages/pysicgl/__init__.py @@ -0,0 +1 @@ +from ._core import * diff --git a/requirements.dev.txt b/requirements.dev.txt index 5ffbba5..f21434a 100644 --- a/requirements.dev.txt +++ b/requirements.dev.txt @@ -1,3 +1,4 @@ black >= 22.12.0, < 23.0.0 pytest >= 7.2.1, < 8.0.0 +setuptools >= 67.0.0, < 68.0.0 sphinx >= 6.1.3, < 7.0.0 diff --git a/setup.py b/setup.py index 0af6f79..751c63c 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -from distutils.core import setup, Extension +from setuptools import setup, Extension, find_packages from pathlib import Path, PurePath # source files for sicgl @@ -12,19 +12,27 @@ sicgl_sources = list( str(PurePath(sicgl_root_dir, "src", source)) for source in [ + "compositors/alpha.c", + "compositors/bitwise.c", + "compositors/channelwise.c", + "compositors/direct.c", + "domain/global.c", + "domain/interface.c", + "domain/screen.c", + "private/direct.c", + "private/interpolation.c", + "blend.c", + "blenders.c", "blit.c", "color_sequence.c", "compose.c", "field.c", "gamma.c", + "interface.c", "iter.c", "screen.c", "translate.c", - "domain/global.c", - "domain/interface.c", - "domain/screen.c", - "private/direct.c", - "private/interpolation.c", + "unity_color.c", ] ) @@ -38,29 +46,39 @@ pysicgl_sources = list( str(PurePath(pysicgl_root_dir, "src", source)) for source in [ + "submodules/composition/module.c", + "submodules/functional/drawing/global.c", + "submodules/functional/drawing/interface.c", + "submodules/functional/drawing/screen.c", + "submodules/functional/color.c", + "submodules/functional/color_correction.c", + "submodules/functional/module.c", + "submodules/functional/operations.c", + "submodules/interpolation/module.c", + "types/color_sequence/type.c", + "types/color_sequence_interpolator/type.c", + "types/compositor/type.c", + "types/scalar_field/type.c", + "types/interface/type.c", + "types/screen/type.c", "module.c", - "color.c", - "color_sequence.c", - "field.c", - "interface.c", - "screen.c", - "utilities.c", - "drawing/blit.c", - "drawing/compose.c", - "drawing/field.c", - "drawing/interface.c", - "drawing/screen.c", - "drawing/global.c", ] ) -pysicgl = Extension( - "pysicgl", +sicgl_core = Extension( + "pysicgl._core", include_dirs=[*pysicgl_include_dirs, *sicgl_include_dirs], sources=[*pysicgl_sources, *sicgl_sources], + extra_compile_args=[ + "-Werror", + "-Wall", "-Wextra", "-pedantic", + "-Wno-missing-field-initializers", "-Wno-sign-compare", "-Wno-sometimes-uninitialized", + ], ) setup( - ext_modules=[pysicgl], + ext_modules=[sicgl_core], + packages=find_packages(where="packages"), + package_dir={'': 'packages'}, setup_requires=["setuptools_scm"], ) diff --git a/src/color.c b/src/color.c deleted file mode 100644 index e8ecf69..0000000 --- a/src/color.c +++ /dev/null @@ -1,45 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include -#include - -#include "pysicgl/color.h" -#include "sicgl/color.h" - -// methods -static PyObject* get_rgba(PyObject* self, PyObject* input) { - color_t color = PyLong_AsLong(input); - return PyTuple_Pack( - 4, PyLong_FromLong(color_channel_red(color)), - PyLong_FromLong(color_channel_green(color)), - PyLong_FromLong(color_channel_blue(color)), - PyLong_FromLong(color_channel_alpha(color))); -} - -static PyObject* from_rgba(PyObject* self, PyObject* input) { - return PyLong_FromLong(color_from_channels( - PyLong_AsLong(PyTuple_GetItem(input, 0)), - PyLong_AsLong(PyTuple_GetItem(input, 1)), - PyLong_AsLong(PyTuple_GetItem(input, 2)), - PyLong_AsLong(PyTuple_GetItem(input, 3)))); -} - -static PyMethodDef tp_methods[] = { - {"get_rgba", (PyCFunction)get_rgba, METH_O | METH_STATIC, - "return the individual RGBA components of the input color as a 4-tuple"}, - {"from_rgba", (PyCFunction)from_rgba, METH_O | METH_STATIC, - "return the color comprised of the RGBA input 4-tuple"}, - {NULL}, -}; - -PyTypeObject ColorType = { - PyVarObject_HEAD_INIT(NULL, 0).tp_name = "pysicgl.Color", - .tp_doc = PyDoc_STR("sicgl color"), - .tp_basicsize = sizeof(ColorObject), - .tp_itemsize = 0, - .tp_flags = Py_TPFLAGS_DEFAULT, - .tp_new = PyType_GenericNew, - .tp_methods = tp_methods, -}; diff --git a/src/color_sequence.c b/src/color_sequence.c deleted file mode 100644 index 8bc935a..0000000 --- a/src/color_sequence.c +++ /dev/null @@ -1,321 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include - -#include "pysicgl/color_sequence.h" - -// fwd declarations -static Py_ssize_t mp_length(PyObject* self_in); - -// data -/** - * @brief interpolation type names. - * These names each correspond to a particular interpolation style that can - * be used by the color sequence. - */ -typedef struct _interp_type_entry { - char* name; - sequence_map_fn map; -} interp_type_enty_t; -static const interp_type_enty_t interp_types[] = { - {.name = "CONTINUOUS_CIRCULAR", - .map = color_sequence_interpolate_color_continuous_circular}, - {.name = "CONTINUOUS_LINEAR", - .map = color_sequence_interpolate_color_continuous_linear}, - {.name = "DISCRETE_CIRCULAR", - .map = color_sequence_interpolate_color_discrete_circular}, - {.name = "DISCRETE_LINEAR", - .map = color_sequence_interpolate_color_discrete_linear}, -}; -static const size_t num_interp_types = - sizeof(interp_types) / sizeof(interp_type_enty_t); - -// utilities for C consumers -int ColorSequence_get( - ColorSequenceObject* self, size_t* len, color_t* colors_out, - size_t colors_out_len) { - int ret = 0; - if (NULL == self) { - ret = -1; - goto out; - } - - // provide the length of the sequence - size_t length = mp_length((PyObject*)self); - if (NULL != len) { - *len = length; - } - - // fill the color output buffer - if (NULL != colors_out) { - size_t elements_out = colors_out_len; - if (elements_out > length) { - elements_out = length; - } - for (size_t idx = 0; idx < elements_out; idx++) { - colors_out[idx] = PyLong_AsLong(PyList_GetItem(self->_colors, idx)); - } - } - -out: - return ret; -} - -int ColorSequence_get_interp_map_fn( - size_t interp_type, sequence_map_fn* fn_out) { - int ret = 0; - // determine the interpolation function - if (interp_type > num_interp_types) { - ret = -EINVAL; - goto out; - } - if (NULL == fn_out) { - ret = -ENOMEM; - goto out; - } - - // provide the corresponding map function - *fn_out = interp_types[interp_type].map; - -out: - return ret; -} - -// getset -static PyObject* get_colors(PyObject* self_in, void* closure) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - Py_INCREF(self->_colors); - return self->_colors; -} - -static int set_colors(PyObject* self_in, PyObject* value, void* closure) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - if (!PyObject_IsInstance((PyObject*)value, (PyObject*)&PyList_Type)) { - PyErr_SetNone(PyExc_TypeError); - return -1; - } - - if (NULL != self->_colors) { - Py_DECREF(self->_colors); - } - - self->_colors = value; - Py_INCREF(self->_colors); - - return 0; -} - -// methods -static PyObject* interpolate( - PyObject* self_in, PyObject* args, PyObject* kwds) { - int ret = 0; - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - PyObject* samples_obj; - unsigned int interp_type = 0; - char* keywords[] = { - "samples", - "interp_type", - NULL, - }; - if (!PyArg_ParseTupleAndKeywords( - args, kwds, "O|I", keywords, &samples_obj, &interp_type)) { - return NULL; - } - - if (interp_type > num_interp_types) { - PyErr_SetNone(PyExc_ValueError); - return NULL; - } - - // determine color sequence length - size_t len; - ret = ColorSequence_get(self, &len, NULL, 0); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - // allocate space on the stack for the colors - color_t colors[len]; - ret = ColorSequence_get(self, NULL, colors, len); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - // create the color_sequence_t for sicgl - color_sequence_t sequence = { - .colors = colors, - .length = len, - }; - - // determine the interpolation function - sequence_map_fn interp_fn; - ret = ColorSequence_get_interp_map_fn(interp_type, &interp_fn); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - // use this sequences' interpolation method to handle the input - PyObject* result = NULL; - if (PyLong_Check(samples_obj)) { - // input is a single sample, return the interpolated color directly - color_t color; - ret = interp_fn(&sequence, (double)PyLong_AsLong(samples_obj), &color); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - result = PyLong_FromLong(color); - - } else if (PyFloat_Check(samples_obj)) { - // input is a single sample, return the interpolated color directly - color_t color; - ret = interp_fn(&sequence, PyFloat_AsDouble(samples_obj), &color); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - result = PyLong_FromLong(color); - } else if (PyList_Check(samples_obj)) { - // input is a list of samples, return a tuple of interpolated colors - size_t num_samples = PyList_Size(samples_obj); - result = PyTuple_New(num_samples); - for (size_t idx = 0; idx < num_samples; idx++) { - color_t color; - ret = interp_fn( - &sequence, PyFloat_AsDouble(PyList_GetItem(samples_obj, idx)), - &color); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - ret = PyTuple_SetItem(result, idx, PyLong_FromLong(color)); - if (0 != ret) { - return NULL; - } - } - } else if (PyTuple_Check(samples_obj)) { - // input is a tuple of samples, return a tuple of interpolated colors - size_t num_samples = PyTuple_Size(samples_obj); - result = PyTuple_New(num_samples); - for (size_t idx = 0; idx < num_samples; idx++) { - color_t color; - ret = interp_fn( - &sequence, PyFloat_AsDouble(PyTuple_GetItem(samples_obj, idx)), - &color); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - ret = PyTuple_SetItem(result, idx, PyLong_FromLong(color)); - if (0 != ret) { - return NULL; - } - } - } else { - PyErr_SetNone(PyExc_TypeError); - return NULL; - } - - return result; -} - -static Py_ssize_t mp_length(PyObject* self_in) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - return PyList_Size(self->_colors); -} - -static PyObject* mp_subscript(PyObject* self_in, PyObject* key) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - return PyList_GetItem(self->_colors, PyLong_AsLong(key)); -} - -static int mp_ass_subscript(PyObject* self_in, PyObject* key, PyObject* v) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - if (!PyLong_Check(v)) { - PyErr_SetNone(PyExc_TypeError); - return -1; - } - return PyList_SetItem(self->_colors, PyLong_AsLong(key), v); -} - -static void tp_dealloc(PyObject* self_in) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - Py_XDECREF(self->_colors); - Py_TYPE(self)->tp_free(self); -} - -static int tp_init(PyObject* self_in, PyObject* args, PyObject* kwds) { - ColorSequenceObject* self = (ColorSequenceObject*)self_in; - char* keywords[] = { - "colors", - NULL, - }; - PyObject* colors_obj = PyList_New(0); - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O", keywords, &colors_obj)) { - return -1; - } - - int ret = set_colors((PyObject*)self, colors_obj, NULL); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return -1; - } - - return 0; -} - -static PyGetSetDef tp_getset[] = { - {"colors", get_colors, set_colors, "list of colors in this sequence", NULL}, - {NULL}, -}; - -static PyMethodDef tp_methods[] = { - {"interpolate", (PyCFunctionWithKeywords)interpolate, - METH_VARARGS | METH_KEYWORDS, - "interpolate the color sequence at one or more points using the given " - "interpolation type"}, - {NULL}, -}; - -static PyMappingMethods tp_as_mapping = { - .mp_length = mp_length, - .mp_subscript = mp_subscript, - .mp_ass_subscript = mp_ass_subscript, -}; - -PyTypeObject ColorSequenceType = { - PyVarObject_HEAD_INIT(NULL, 0).tp_name = "pysicgl.ColorSequence", - .tp_doc = PyDoc_STR("sicgl color"), - .tp_basicsize = sizeof(ColorSequenceObject), - .tp_itemsize = 0, - .tp_flags = Py_TPFLAGS_DEFAULT, - .tp_new = PyType_GenericNew, - .tp_dealloc = tp_dealloc, - .tp_init = tp_init, - .tp_getset = tp_getset, - .tp_methods = tp_methods, - .tp_as_mapping = &tp_as_mapping, -}; - -// additional initialization for this type -int ColorSequence_post_ready_init() { - int ret = 0; - - // add INTERP constants to class dict - for (size_t idx = 0; idx < num_interp_types; idx++) { - ret = PyDict_SetItem( - ColorSequenceType.tp_dict, - PyUnicode_FromFormat("INTERP_%s", interp_types[idx].name), - PyLong_FromLong(idx)); - if (0 != ret) { - return ret; - } - } - - return ret; -} diff --git a/src/drawing/blit.c b/src/drawing/blit.c deleted file mode 100644 index f2d8b68..0000000 --- a/src/drawing/blit.c +++ /dev/null @@ -1,28 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include "pysicgl/drawing/blit.h" -#include "pysicgl/interface.h" -#include "pysicgl/screen.h" -#include "sicgl/blit.h" - -PyObject* blit(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen; - Py_buffer sprite; - if (!PyArg_ParseTuple(args, "O!y*", &ScreenType, &screen, &sprite)) { - return NULL; - } - - int ret = sicgl_blit(&self->interface, screen->screen, sprite.buf); - - PyBuffer_Release(&sprite); - - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - return Py_None; -} diff --git a/src/drawing/compose.c b/src/drawing/compose.c deleted file mode 100644 index 205ce4d..0000000 --- a/src/drawing/compose.c +++ /dev/null @@ -1,151 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include - -#include "pysicgl/drawing/blit.h" -#include "pysicgl/drawing/compose.h" -#include "pysicgl/interface.h" -#include "pysicgl/screen.h" -#include "sicgl/compose.h" - -static inline color_t clamp_u8(color_t channel) { - if (channel > 255) { - return 255; - } else if (channel < 0) { - return 0; - } else { - return channel; - } -} - -static void compositor_set(color_t* source, color_t* dest, size_t width) { - memcpy(dest, source, width * bytes_per_pixel()); -} - -static void compositor_add_clamped( - color_t* source, color_t* dest, size_t width) { - for (size_t idx = 0; idx < width; idx++) { - dest[idx] = color_from_channels( - clamp_u8(color_channel_red(dest[idx]) + color_channel_red(source[idx])), - clamp_u8( - color_channel_green(dest[idx]) + color_channel_green(source[idx])), - clamp_u8( - color_channel_blue(dest[idx]) + color_channel_blue(source[idx])), - clamp_u8( - color_channel_alpha(dest[idx]) + color_channel_alpha(source[idx]))); - } -} - -static void compositor_subtract_clamped( - color_t* source, color_t* dest, size_t width) { - for (size_t idx = 0; idx < width; idx++) { - dest[idx] = color_from_channels( - clamp_u8(color_channel_red(dest[idx]) - color_channel_red(source[idx])), - clamp_u8( - color_channel_green(dest[idx]) - color_channel_green(source[idx])), - clamp_u8( - color_channel_blue(dest[idx]) - color_channel_blue(source[idx])), - clamp_u8( - color_channel_alpha(dest[idx]) - color_channel_alpha(source[idx]))); - } -} - -static void compositor_multiply_clamped( - color_t* source, color_t* dest, size_t width) { - for (size_t idx = 0; idx < width; idx++) { - dest[idx] = color_from_channels( - clamp_u8(color_channel_red(dest[idx]) * color_channel_red(source[idx])), - clamp_u8( - color_channel_green(dest[idx]) * color_channel_green(source[idx])), - clamp_u8( - color_channel_blue(dest[idx]) * color_channel_blue(source[idx])), - clamp_u8( - color_channel_alpha(dest[idx]) * color_channel_alpha(source[idx]))); - } -} - -static void compositor_AND(color_t* source, color_t* dest, size_t width) { - for (size_t idx = 0; idx < width; idx++) { - dest[idx] = color_from_channels( - color_channel_red(dest[idx]) & color_channel_red(source[idx]), - color_channel_green(dest[idx]) & color_channel_green(source[idx]), - color_channel_blue(dest[idx]) & color_channel_blue(source[idx]), - color_channel_alpha(dest[idx]) & color_channel_alpha(source[idx])); - } -} - -static void compositor_OR(color_t* source, color_t* dest, size_t width) { - for (size_t idx = 0; idx < width; idx++) { - dest[idx] = color_from_channels( - color_channel_red(dest[idx]) | color_channel_red(source[idx]), - color_channel_green(dest[idx]) | color_channel_green(source[idx]), - color_channel_blue(dest[idx]) | color_channel_blue(source[idx]), - color_channel_alpha(dest[idx]) | color_channel_alpha(source[idx])); - } -} - -static void compositor_XOR(color_t* source, color_t* dest, size_t width) { - for (size_t idx = 0; idx < width; idx++) { - dest[idx] = color_from_channels( - color_channel_red(dest[idx]) ^ color_channel_red(source[idx]), - color_channel_green(dest[idx]) ^ color_channel_green(source[idx]), - color_channel_blue(dest[idx]) ^ color_channel_blue(source[idx]), - color_channel_alpha(dest[idx]) ^ color_channel_alpha(source[idx])); - } -} - -PyObject* compose(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen; - Py_buffer sprite; - int mode; - if (!PyArg_ParseTuple(args, "O!y*i", &ScreenType, &screen, &sprite, &mode)) { - return NULL; - } - - compositor_fn compositor = NULL; - switch (mode) { - case 0: - compositor = compositor_set; - break; - - case 1: - compositor = compositor_add_clamped; - break; - - case 2: - compositor = compositor_subtract_clamped; - break; - - case 3: - compositor = compositor_multiply_clamped; - break; - - case 4: - compositor = compositor_AND; - break; - - case 5: - compositor = compositor_OR; - break; - - case 6: - compositor = compositor_XOR; - break; - - default: - PyErr_SetNone(PyExc_ValueError); - return NULL; - break; - } - - int ret = - sicgl_compose(&self->interface, screen->screen, sprite.buf, compositor); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} diff --git a/src/drawing/field.c b/src/drawing/field.c deleted file mode 100644 index 5d66956..0000000 --- a/src/drawing/field.c +++ /dev/null @@ -1,78 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include "pysicgl/color_sequence.h" -#include "pysicgl/drawing/blit.h" -#include "pysicgl/field.h" -#include "pysicgl/interface.h" -#include "pysicgl/screen.h" -#include "sicgl/blit.h" - -PyObject* scalar_field(PyObject* self_in, PyObject* args, PyObject* kwds) { - int ret = 0; - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* field_obj; - ScalarFieldObject* scalar_field_obj; - ColorSequenceObject* color_sequence_obj; - unsigned int interp_type = 0; - double offset = 0.0; - char* keywords[] = { - "field", "scalars", "color_sequence", "interp_type", "offset", NULL, - }; - if (!PyArg_ParseTupleAndKeywords( - args, kwds, "O!O!O!|Id", keywords, &ScreenType, &field_obj, - &ScalarFieldType, &scalar_field_obj, &ColorSequenceType, - &color_sequence_obj, &interp_type, &offset)) { - return NULL; - } - - // determine color sequence length - size_t len; - ret = ColorSequence_get(color_sequence_obj, &len, NULL, 0); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - // allocate space on the stack for the colors - color_t colors[len]; - ret = ColorSequence_get(color_sequence_obj, NULL, colors, len); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - // create the color_sequence_t for sicgl - color_sequence_t sequence = { - .colors = colors, - .length = len, - }; - - // get the scalars - double* scalars; - size_t scalars_length; - ret = scalar_field_get_scalars(scalar_field_obj, &scalars_length, &scalars); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - sequence_map_fn interp_map_fn; - ret = ColorSequence_get_interp_map_fn(interp_type, &interp_map_fn); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - // apply the field - ret = sicgl_scalar_field( - &self->interface, field_obj->screen, scalars, offset, &sequence, - interp_map_fn); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - return Py_None; -} diff --git a/src/drawing/global.c b/src/drawing/global.c deleted file mode 100644 index 6784140..0000000 --- a/src/drawing/global.c +++ /dev/null @@ -1,105 +0,0 @@ -#include "pysicgl/drawing/global.h" - -#include - -#include "pysicgl/interface.h" -#include "sicgl/domain/global.h" - -PyObject* global_pixel(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u, v; - if (!PyArg_ParseTuple(args, "i(ii)", &color, &u, &v)) { - return NULL; - } - - int ret = sicgl_global_pixel(&self->interface, color, u, v); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* global_line(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple(args, "O!i(ii)(ii)", &color, &u0, &v0, &u1, &v1)) { - return NULL; - } - - int ret = sicgl_global_line(&self->interface, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* global_rectangle(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple(args, "O!i(ii)(ii)", &color, &u0, &v0, &u1, &v1)) { - return NULL; - } - - int ret = sicgl_global_rectangle(&self->interface, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* global_rectangle_filled(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple(args, "O!i(ii)(ii)", &color, &u0, &v0, &u1, &v1)) { - return NULL; - } - - int ret = - sicgl_global_rectangle_filled(&self->interface, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* global_circle(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, diameter; - if (!PyArg_ParseTuple(args, "O!i(ii)(ii)", &color, &u0, &v0, &diameter)) { - return NULL; - } - - int ret = - sicgl_global_circle_ellipse(&self->interface, color, u0, v0, diameter); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* global_ellipse(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, semiu, semiv; - if (!PyArg_ParseTuple( - args, "O!i(ii)(ii)", &color, &u0, &v0, &semiu, &semiv)) { - return NULL; - } - - int ret = sicgl_global_ellipse(&self->interface, color, u0, v0, semiu, semiv); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} diff --git a/src/drawing/interface.c b/src/drawing/interface.c deleted file mode 100644 index 8985c3c..0000000 --- a/src/drawing/interface.c +++ /dev/null @@ -1,118 +0,0 @@ -#include "pysicgl/interface.h" - -#include "pysicgl/utilities.h" -#include "sicgl/domain/interface.h" - -PyObject* interface_fill(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - if (!PyArg_ParseTuple(args, "i", &color)) { - return NULL; - } - - int ret = sicgl_interface_fill(&self->interface, color); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* interface_pixel(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u, v; - if (!PyArg_ParseTuple(args, "i(ii)", &color, &u, &v)) { - return NULL; - } - - int ret = sicgl_interface_pixel(&self->interface, color, u, v); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* interface_line(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple(args, "i(ii)(ii)", &color, &u0, &v0, &u1, &v1)) { - return NULL; - } - - int ret = sicgl_interface_line(&self->interface, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* interface_rectangle(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple(args, "i(ii)(ii)", &color, &u0, &v0, &u1, &v1)) { - return NULL; - } - - int ret = sicgl_interface_rectangle(&self->interface, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* interface_rectangle_filled(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple(args, "i(ii)(ii)", &color, &u0, &v0, &u1, &v1)) { - return NULL; - } - - int ret = - sicgl_interface_rectangle_filled(&self->interface, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* interface_circle(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, diameter; - if (!PyArg_ParseTuple(args, "i(ii)i", &color, &u0, &v0, &diameter)) { - return NULL; - } - - int ret = - sicgl_interface_circle_ellipse(&self->interface, color, u0, v0, diameter); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* interface_ellipse(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - int color; - ext_t u0, v0, semiu, semiv; - if (!PyArg_ParseTuple(args, "i(ii)(ii)", &color, &u0, &v0, &semiu, &semiv)) { - return NULL; - } - - int ret = - sicgl_interface_ellipse(&self->interface, color, u0, v0, semiu, semiv); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} diff --git a/src/drawing/screen.c b/src/drawing/screen.c deleted file mode 100644 index e17a25e..0000000 --- a/src/drawing/screen.c +++ /dev/null @@ -1,140 +0,0 @@ -#include "pysicgl/drawing/screen.h" - -#include "pysicgl/interface.h" -#include "pysicgl/screen.h" -#include "pysicgl/utilities.h" -#include "sicgl/domain/screen.h" - -PyObject* screen_fill(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - if (!PyArg_ParseTuple(args, "O!i", &ScreenType, &screen_obj, &color)) { - return NULL; - } - - int ret = sicgl_screen_fill(&self->interface, screen_obj->screen, color); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* screen_pixel(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - ext_t u, v; - if (!PyArg_ParseTuple( - args, "O!i(ii)", &ScreenType, &screen_obj, &color, &u, &v)) { - return NULL; - } - - int ret = - sicgl_screen_pixel(&self->interface, screen_obj->screen, color, u, v); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* screen_line(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple( - args, "O!i(ii)(ii)", &ScreenType, &screen_obj, &color, &u0, &v0, &u1, - &v1)) { - return NULL; - } - - int ret = sicgl_screen_line( - &self->interface, screen_obj->screen, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* screen_rectangle(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple( - args, "O!i(ii)(ii)", &ScreenType, &screen_obj, &color, &u0, &v0, &u1, - &v1)) { - return NULL; - } - - int ret = sicgl_screen_rectangle( - &self->interface, screen_obj->screen, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* screen_rectangle_filled(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - ext_t u0, v0, u1, v1; - if (!PyArg_ParseTuple( - args, "O!i(ii)(ii)", &ScreenType, &screen_obj, &color, &u0, &v0, &u1, - &v1)) { - return NULL; - } - - int ret = sicgl_screen_rectangle_filled( - &self->interface, screen_obj->screen, color, u0, v0, u1, v1); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* screen_circle(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - ext_t u0, v0, diameter; - if (!PyArg_ParseTuple( - args, "O!i(ii)i", &ScreenType, &screen_obj, &color, &u0, &v0, - &diameter)) { - return NULL; - } - - int ret = sicgl_screen_circle_ellipse( - &self->interface, screen_obj->screen, color, u0, v0, diameter); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} - -PyObject* screen_ellipse(PyObject* self_in, PyObject* args) { - InterfaceObject* self = (InterfaceObject*)self_in; - ScreenObject* screen_obj; - int color; - ext_t u0, v0, semiu, semiv; - if (!PyArg_ParseTuple( - args, "O!i(ii)(ii)", &ScreenType, &screen_obj, &color, &u0, &v0, - &semiu, &semiv)) { - return NULL; - } - int ret = sicgl_screen_ellipse( - &self->interface, screen_obj->screen, color, u0, v0, semiu, semiv); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - return Py_None; -} diff --git a/src/field.c b/src/field.c deleted file mode 100644 index 5f3e0eb..0000000 --- a/src/field.c +++ /dev/null @@ -1,197 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -#include -// python includes must come first - -#include -#include - -#include "pysicgl/field.h" - -// utilities for C consumers -int scalar_field_get_scalars( - ScalarFieldObject* self, size_t* len, double** scalars) { - int ret = 0; - - // provide the length of the scalars - if (NULL != len) { - *len = self->_scalars_buffer.len; - } - - // provide the pointer to the scalars - if (NULL != scalars) { - *scalars = (double*)self->_scalars_buffer.buf; - } - -out: - return ret; -} - -// getset -static PyObject* get_pixels(PyObject* self_in, void* closure) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - size_t pixels = 0; - if (NULL == self->_scalars_buffer.obj) { - goto out; - } - - pixels = self->_scalars_buffer.len / sizeof(double); - -out: - return PyLong_FromLong(pixels); -} - -static PyObject* get_memory(PyObject* self_in, void* closure) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - return PyMemoryView_FromBuffer(&self->_scalars_buffer); -} - -static int set_memory(PyObject* self_in, PyObject* value, void* closure) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - if (!PyObject_IsInstance((PyObject*)value, (PyObject*)&PyByteArray_Type)) { - PyErr_SetNone(PyExc_TypeError); - return -1; - } - PyByteArrayObject* bytearray_obj = (PyByteArrayObject*)value; - - // clean up old buffer - if (NULL != self->_scalars_buffer.obj) { - PyBuffer_Release(&self->_scalars_buffer); - } - - // reassign the buffer - int ret = PyObject_GetBuffer( - (PyObject*)bytearray_obj, &self->_scalars_buffer, PyBUF_WRITABLE); - if (0 != ret) { - return -1; - } - - return 0; -} - -// methods -static PyObject* allocate_scalar_memory(PyObject* self, PyObject* scalars_in) { - size_t scalars; - if (PyLong_Check(scalars_in)) { - scalars = PyLong_AsSize_t(scalars_in); - } else { - PyErr_SetNone(PyExc_TypeError); - return NULL; - } - - return PyByteArray_FromObject(PyLong_FromSize_t(scalars * sizeof(double))); -} - -static Py_ssize_t mp_length(PyObject* self_in) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - - size_t len; - int ret = scalar_field_get_scalars(self, &len, NULL); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - return PyLong_FromLong(len); -} - -static PyObject* mp_subscript(PyObject* self_in, PyObject* key) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - size_t len; - double* scalars; - int ret = scalar_field_get_scalars(self, &len, &scalars); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - size_t idx = PyLong_AsSize_t(key); - - if (idx > (len - 1)) { - PyErr_SetNone(PyExc_IndexError); - return NULL; - } - - return PyFloat_FromDouble(scalars[idx]); -} - -static int mp_ass_subscript(PyObject* self_in, PyObject* key, PyObject* v) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - size_t len; - double* scalars; - int ret = scalar_field_get_scalars(self, &len, &scalars); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return -1; - } - size_t idx = PyLong_AsSize_t(key); - - if (idx > (len - 1)) { - PyErr_SetNone(PyExc_IndexError); - return -1; - } - - // set the double here - scalars[idx] = PyFloat_AsDouble(v); - - return 0; -} - -static void tp_dealloc(PyObject* self_in) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - PyBuffer_Release(&self->_scalars_buffer); - Py_TYPE(self)->tp_free(self); -} - -static int tp_init(PyObject* self_in, PyObject* args, PyObject* kwds) { - ScalarFieldObject* self = (ScalarFieldObject*)self_in; - char* keywords[] = { - "memory", - NULL, - }; - PyByteArrayObject* memory_bytearray_obj; - if (!PyArg_ParseTupleAndKeywords( - args, kwds, "Y", keywords, &memory_bytearray_obj)) { - return -1; - } - - // set memory - int ret = set_memory((PyObject*)self, (PyObject*)memory_bytearray_obj, NULL); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return -1; - } - - return 0; -} - -static PyMethodDef tp_methods[] = { - {"allocate_scalar_memory", (PyCFunction)allocate_scalar_memory, - METH_O | METH_STATIC, "allocate memory for the given number of scalars"}, - {NULL}, -}; - -static PyGetSetDef tp_getset[] = { - {"pixels", get_pixels, NULL, "number of scalar values in memory", NULL}, - {"memory", get_memory, set_memory, "scalar memory", NULL}, - {NULL}, -}; - -static PyMappingMethods tp_as_mapping = { - .mp_length = mp_length, - .mp_subscript = mp_subscript, - .mp_ass_subscript = mp_ass_subscript, -}; - -PyTypeObject ScalarFieldType = { - PyVarObject_HEAD_INIT(NULL, 0).tp_name = "pysicgl.ScalarField", - .tp_doc = PyDoc_STR("sicgl ScalarField"), - .tp_basicsize = sizeof(ScalarFieldObject), - .tp_itemsize = 0, - .tp_flags = Py_TPFLAGS_DEFAULT, - .tp_new = PyType_GenericNew, - .tp_dealloc = tp_dealloc, - .tp_init = tp_init, - .tp_methods = tp_methods, - .tp_getset = tp_getset, - .tp_as_mapping = &tp_as_mapping, -}; diff --git a/src/interface.c b/src/interface.c deleted file mode 100644 index 4f3189e..0000000 --- a/src/interface.c +++ /dev/null @@ -1,181 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include -#include - -#include "pysicgl/drawing/blit.h" -#include "pysicgl/drawing/compose.h" -#include "pysicgl/drawing/field.h" -#include "pysicgl/drawing/global.h" -#include "pysicgl/drawing/interface.h" -#include "pysicgl/drawing/screen.h" -#include "pysicgl/interface.h" -#include "pysicgl/screen.h" - -// getset -static PyObject* get_screen(PyObject* self_in, void* closure) { - InterfaceObject* self = (InterfaceObject*)self_in; - // it is important to return a NEW REFERENCE to the object, - // otherwise its reference count will be deleted by the caller - // who is passed the reference and later decrements the refcount - Py_INCREF((PyObject*)self->_screen); - return (PyObject*)self->_screen; -} -static PyObject* get_memory(PyObject* self_in, void* closure) { - InterfaceObject* self = (InterfaceObject*)self_in; - return PyMemoryView_FromBuffer(&self->_memory_buffer); -} - -static int set_screen(PyObject* self_in, PyObject* value, void* closure) { - InterfaceObject* self = (InterfaceObject*)self_in; - if (!PyObject_IsInstance((PyObject*)value, (PyObject*)&ScreenType)) { - PyErr_SetNone(PyExc_TypeError); - return -1; - } - ScreenObject* screen_obj = (ScreenObject*)value; - - if (NULL != self->_screen) { - Py_DECREF((PyObject*)self->_screen); - self->interface.screen = NULL; - } - - self->_screen = screen_obj; - Py_INCREF((PyObject*)self->_screen); - self->interface.screen = self->_screen->screen; - - return 0; -} - -static int set_memory(PyObject* self_in, PyObject* value, void* closure) { - InterfaceObject* self = (InterfaceObject*)self_in; - if (!PyObject_IsInstance((PyObject*)value, (PyObject*)&PyByteArray_Type)) { - PyErr_SetNone(PyExc_TypeError); - return -1; - } - PyByteArrayObject* bytearray_obj = (PyByteArrayObject*)value; - - if (NULL != self->_memory_buffer.obj) { - // clean up the old memory - PyBuffer_Release(&self->_memory_buffer); - self->interface.memory = NULL; - } - - int ret = PyObject_GetBuffer( - (PyObject*)bytearray_obj, &self->_memory_buffer, PyBUF_WRITABLE); - if (0 != ret) { - return -1; - } - self->interface.memory = self->_memory_buffer.buf; - - return 0; -} - -static void tp_dealloc(InterfaceObject* self) { - Py_XDECREF(self->_screen); - PyBuffer_Release(&self->_memory_buffer); - Py_TYPE(self)->tp_free(self); -} - -static int tp_init(PyObject* self_in, PyObject* args, PyObject* kwds) { - InterfaceObject* self = (InterfaceObject*)self_in; - char* keywords[] = { - "screen", - "memory", - NULL, - }; - PyObject* screen_obj; - PyByteArrayObject* memory_bytearray_obj; - if (!PyArg_ParseTupleAndKeywords( - args, kwds, "O!Y", keywords, &ScreenType, &screen_obj, - &memory_bytearray_obj)) { - return -1; - } - - // set screen and memory - int ret = set_screen((PyObject*)self, screen_obj, NULL); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return -1; - } - ret = set_memory((PyObject*)self, (PyObject*)memory_bytearray_obj, NULL); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return -1; - } - - return 0; -} - -static PyMethodDef tp_methods[] = { - {"blit", (PyCFunction)blit, METH_VARARGS, - "blit a sprite onto the interface memory directly"}, - {"compose", (PyCFunction)compose, METH_VARARGS, - "compose a sprite onto the interface memory using a composition method"}, - {"scalar_field", (PyCFunction)scalar_field, METH_VARARGS | METH_KEYWORDS, - "map a scalar field onto the interface through a color sequence"}, - - {"interface_fill", (PyCFunction)interface_fill, METH_VARARGS, - "fill color into interface"}, - {"interface_pixel", (PyCFunction)interface_pixel, METH_VARARGS, - "draw pixel to interface"}, - {"interface_line", (PyCFunction)interface_line, METH_VARARGS, - "draw line to interface"}, - {"interface_rectangle", (PyCFunction)interface_rectangle, METH_VARARGS, - "draw rectangle to interface"}, - {"interface_rectangle_filled", (PyCFunction)interface_rectangle_filled, - METH_VARARGS, "draw filled rectangle to interface"}, - {"interface_circle", (PyCFunction)interface_circle, METH_VARARGS, - "draw circle to interface"}, - {"interface_ellipse", (PyCFunction)interface_ellipse, METH_VARARGS, - "draw ellipse to interface"}, - - {"screen_fill", (PyCFunction)screen_fill, METH_VARARGS, - "fill color into screen"}, - {"screen_pixel", (PyCFunction)screen_pixel, METH_VARARGS, - "draw pixel to screen"}, - {"screen_line", (PyCFunction)screen_line, METH_VARARGS, - "draw line to screen"}, - {"screen_rectangle", (PyCFunction)screen_rectangle, METH_VARARGS, - "draw rectangle to screen"}, - {"screen_rectangle_filled", (PyCFunction)screen_rectangle_filled, - METH_VARARGS, "draw filled rectangle to screen"}, - {"screen_circle", (PyCFunction)screen_circle, METH_VARARGS, - "draw circle to screen"}, - {"screen_ellipse", (PyCFunction)screen_ellipse, METH_VARARGS, - "draw ellipse to screen"}, - - {"global_pixel", (PyCFunction)global_pixel, METH_VARARGS, - "draw pixel to global"}, - {"global_line", (PyCFunction)global_line, METH_VARARGS, - "draw line to global"}, - {"global_rectangle", (PyCFunction)global_rectangle, METH_VARARGS, - "draw rectangle to global"}, - {"global_rectangle_filled", (PyCFunction)global_rectangle_filled, - METH_VARARGS, "draw filled rectangle to global"}, - {"global_circle", (PyCFunction)global_circle, METH_VARARGS, - "draw circle to global"}, - {"global_ellipse", (PyCFunction)global_ellipse, METH_VARARGS, - "draw ellipse to global"}, - {NULL}, -}; - -static PyGetSetDef tp_getset[] = { - {"screen", get_screen, set_screen, "screen definition", NULL}, - {"memory", get_memory, set_memory, "pixel memory", NULL}, - {NULL}, -}; - -PyTypeObject InterfaceType = { - PyVarObject_HEAD_INIT(NULL, 0).tp_name = "pysicgl.Interface", - .tp_doc = PyDoc_STR("sicgl interface"), - .tp_basicsize = sizeof(InterfaceObject), - .tp_itemsize = 0, - .tp_flags = Py_TPFLAGS_DEFAULT, - .tp_new = PyType_GenericNew, - .tp_dealloc = tp_dealloc, - .tp_init = tp_init, - .tp_getset = tp_getset, - .tp_methods = tp_methods, -}; diff --git a/src/module.c b/src/module.c index 0f45f6a..5d274b6 100644 --- a/src/module.c +++ b/src/module.c @@ -1,15 +1,42 @@ #define PY_SSIZE_T_CLEAN #include -// python includes must come first +// python includes first (clang-format) -#include "pysicgl/color.h" -#include "pysicgl/color_sequence.h" -#include "pysicgl/field.h" -#include "pysicgl/interface.h" -#include "pysicgl/screen.h" +#include "pysicgl/submodules/color.h" +#include "pysicgl/submodules/composition.h" +#include "pysicgl/submodules/functional.h" +#include "pysicgl/submodules/interpolation.h" +#include "pysicgl/types/color_sequence.h" +#include "pysicgl/types/color_sequence_interpolator.h" +#include "pysicgl/types/compositor.h" +#include "pysicgl/types/interface.h" +#include "pysicgl/types/scalar_field.h" +#include "pysicgl/types/screen.h" #include "sicgl.h" +/** + * @brief Get the number of bytes per pixel. + * + * @param self + * @param args + * @return PyObject* Number of bytes per pixel. + */ +static PyObject* get_bytes_per_pixel(PyObject* self, PyObject* args) { + (void)self; + (void)args; + return PyLong_FromSize_t(bytes_per_pixel()); +} + +/** + * @brief Allocate memory for a specified number of pixels. + * + * @param self + * @param pixels_in Number of pixels for which to allocate + * memory. + * @return PyObject* Allocated memory as a bytearray. + */ static PyObject* allocate_pixel_memory(PyObject* self, PyObject* pixels_in) { + (void)self; size_t pixels; if (PyLong_Check(pixels_in)) { pixels = PyLong_AsSize_t(pixels_in); @@ -22,32 +49,11 @@ static PyObject* allocate_pixel_memory(PyObject* self, PyObject* pixels_in) { return PyByteArray_FromObject(PyLong_FromSize_t(pixels * bpp)); } -static PyObject* gamma_correct(PyObject* self, PyObject* args) { - PyObject* input_obj; - PyObject* output_obj; - if (!PyArg_ParseTuple( - args, "O!O!", &InterfaceType, &input_obj, &InterfaceType, - &output_obj)) { - return NULL; - } - - InterfaceObject* input = (InterfaceObject*)input_obj; - InterfaceObject* output = (InterfaceObject*)output_obj; - - int ret = sicgl_gamma_correct(&input->interface, &output->interface); - if (0 != ret) { - PyErr_SetNone(PyExc_OSError); - return NULL; - } - - return Py_None; -} - -PyMethodDef pysicgl_funcs[] = { +static PyMethodDef funcs[] = { + {"get_bytes_per_pixel", (PyCFunction)get_bytes_per_pixel, METH_NOARGS, + "Get the number of bytes per pixel."}, {"allocate_pixel_memory", (PyCFunction)allocate_pixel_memory, METH_O, - "Allocate memory for the specified number of pixels"}, - {"gamma_correct", (PyCFunction)gamma_correct, METH_VARARGS, - "perform gamma correction on interface memory"}, + "Allocate memory for the specified number of pixels."}, {NULL}, }; @@ -56,7 +62,7 @@ static PyModuleDef module = { "pysicgl", "sicgl in Python", -1, - pysicgl_funcs, + funcs, NULL, NULL, NULL, @@ -68,14 +74,30 @@ typedef struct _type_entry_t { const char* name; PyTypeObject* type; } type_entry_t; -type_entry_t pysicgl_types[] = { - {"Interface", &InterfaceType}, {"Color", &ColorType}, - {"ColorSequence", &ColorSequenceType}, {"Screen", &ScreenType}, +static type_entry_t pysicgl_types[] = { + {"Interface", &InterfaceType}, + {"ColorSequence", &ColorSequenceType}, + {"ColorSequenceInterpolator", &ColorSequenceInterpolatorType}, + {"Screen", &ScreenType}, {"ScalarField", &ScalarFieldType}, + {"Compositor", &CompositorType}, }; -size_t num_types = sizeof(pysicgl_types) / sizeof(type_entry_t); +static size_t num_types = sizeof(pysicgl_types) / sizeof(type_entry_t); -PyMODINIT_FUNC PyInit_pysicgl(void) { +// collect submodule definitions for the module +typedef struct _submodule_entry_t { + const char* name; + PyObject* (*init)(void); +} submodule_entry_t; +static submodule_entry_t pysicgl_submodules[] = { + {"composition", PyInit_composition}, + {"functional", PyInit_functional}, + {"interpolation", PyInit_interpolation}, +}; +static size_t num_submodules = + sizeof(pysicgl_submodules) / sizeof(submodule_entry_t); + +PyMODINIT_FUNC PyInit__core(void) { // ensure that types are ready for (size_t idx = 0; idx < num_types; idx++) { type_entry_t entry = pysicgl_types[idx]; @@ -84,13 +106,6 @@ PyMODINIT_FUNC PyInit_pysicgl(void) { } } - // run additional initialization for types - int ret = ColorSequence_post_ready_init(); - if (0 != ret) { - PyErr_SetString(PyExc_OSError, "failed ColorSequence post-ready init"); - return NULL; - } - // create the module PyObject* m = PyModule_Create(&module); @@ -105,6 +120,21 @@ PyMODINIT_FUNC PyInit_pysicgl(void) { } } + // create and register submodules + for (size_t idx = 0; idx < num_submodules; idx++) { + submodule_entry_t entry = pysicgl_submodules[idx]; + PyObject* submodule = entry.init(); + if (submodule == NULL) { + Py_DECREF(m); + return NULL; + } + if (PyModule_AddObject(m, entry.name, submodule) < 0) { + Py_DECREF(submodule); + Py_DECREF(m); + return NULL; + } + } + // return the module return m; } diff --git a/src/submodules/composition/module.c b/src/submodules/composition/module.c new file mode 100644 index 0000000..5975422 --- /dev/null +++ b/src/submodules/composition/module.c @@ -0,0 +1,120 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/compositor.h" +#include "sicgl/compositors.h" + +// collect type definitions for the module +typedef struct _type_entry_t { + const char* name; + PyTypeObject* type; +} type_entry_t; +static type_entry_t pysicgl_types[] = { + {"Compositor", &CompositorType}, +}; +static size_t num_types = sizeof(pysicgl_types) / sizeof(type_entry_t); + +// collect compositors for the module +typedef struct _compositor_entry_t { + const char* name; + compositor_fn fn; +} compositor_entry_t; +static compositor_entry_t compositors[] = { + // direct compositors + {"DIRECT_SET", compositor_direct_set}, + {"DIRECT_CLEAR", compositor_direct_clear}, + {"DIRECT_NONE", compositor_direct_none}, + + // bitwise compositors + {"BIT_AND", compositor_bitwise_and}, + {"BIT_OR", compositor_bitwise_or}, + {"BIT_XOR", compositor_bitwise_xor}, + {"BIT_NAND", compositor_bitwise_nand}, + {"BIT_NOR", compositor_bitwise_nor}, + {"BIT_XNOR", compositor_bitwise_xnor}, + // // These bitwise compositors are not implemented yet in sicgl. + // {"BIT_NOT_SOURCE", compositor_bitwise_not_source}, + // {"BIT_NOT_DESTINATION", compositor_bitwise_not_destination}, + + // channelwise compositors + {"CHANNEL_MIN", compositor_channelwise_min}, + {"CHANNEL_MAX", compositor_channelwise_max}, + + {"CHANNEL_SUM", compositor_channelwise_sum}, + {"CHANNEL_DIFF", compositor_channelwise_diff}, + {"CHANNEL_DIFF_REVERSE", compositor_channelwise_diff_reverse}, + {"CHANNEL_MULTIPLY", compositor_channelwise_multiply}, + {"CHANNEL_DIVIDE", compositor_channelwise_divide}, + {"CHANNEL_DIVIDE_REVERSE", compositor_channelwise_divide_reverse}, + + {"CHANNEL_SUM_CLAMPED", compositor_channelwise_sum_clamped}, + {"CHANNEL_DIFF_CLAMPED", compositor_channelwise_diff_clamped}, + {"CHANNEL_DIFF_REVERSE_CLAMPED", + compositor_channelwise_diff_reverse_clamped}, + {"CHANNEL_MULTIPLY_CLAMPED", compositor_channelwise_multiply_clamped}, + {"CHANNEL_DIVIDE_CLAMPED", compositor_channelwise_divide_clamped}, + {"CHANNEL_DIVIDE_REVERSE_CLAMPED", + compositor_channelwise_divide_reverse_clamped}, + + // porter-duff alpha compositing + {"ALPHA_CLEAR", compositor_alpha_clear}, + {"ALPHA_COPY", compositor_alpha_copy}, + {"ALPHA_DESTINATION", compositor_alpha_destination}, + {"ALPHA_SOURCE_OVER", compositor_alpha_source_over}, + {"ALPHA_DESTINATION_OVER", compositor_alpha_destination_over}, + {"ALPHA_SOURCE_IN", compositor_alpha_source_in}, + {"ALPHA_DESTINATION_IN", compositor_alpha_destination_in}, + {"ALPHA_SOURCE_OUT", compositor_alpha_source_out}, + {"ALPHA_DESTINATION_OUT", compositor_alpha_destination_out}, + {"ALPHA_SOURCE_ATOP", compositor_alpha_source_atop}, + {"ALPHA_DESTINATION_ATOP", compositor_alpha_destination_atop}, + {"ALPHA_XOR", compositor_alpha_xor}, + {"ALPHA_LIGHTER", compositor_alpha_lighter}, +}; +static size_t num_compositors = + sizeof(compositors) / sizeof(compositor_entry_t); + +static PyModuleDef module = { + PyModuleDef_HEAD_INIT, + "compositors", + "sicgl compositors", + -1, + NULL, + NULL, + NULL, + NULL, + NULL, +}; + +PyMODINIT_FUNC PyInit_composition(void) { + // ensure that types are ready + for (size_t idx = 0; idx < num_types; idx++) { + type_entry_t entry = pysicgl_types[idx]; + if (PyType_Ready(entry.type) < 0) { + return NULL; + } + } + + // create the module + PyObject* m = PyModule_Create(&module); + + // create and register compositors + for (size_t idx = 0; idx < num_compositors; idx++) { + compositor_entry_t entry = compositors[idx]; + CompositorObject* obj = new_compositor_object(entry.fn, NULL); + if (NULL == obj) { + PyErr_SetString(PyExc_OSError, "failed to create compositor object"); + return NULL; + } + if (PyModule_AddObject(m, entry.name, (PyObject*)obj) < 0) { + Py_DECREF(obj); + Py_DECREF(m); + PyErr_SetString( + PyExc_OSError, "failed to add compositor object to module"); + return NULL; + } + } + + return m; +} diff --git a/src/submodules/functional/color.c b/src/submodules/functional/color.c new file mode 100644 index 0000000..d61183a --- /dev/null +++ b/src/submodules/functional/color.c @@ -0,0 +1,128 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/color_sequence.h" +#include "sicgl/color.h" + +PyObject* color_to_rgba(PyObject* self, PyObject* args) { + (void)self; + PyObject* obj; + if (!PyArg_ParseTuple(args, "O", &obj)) { + return NULL; + } + + color_t color = PyLong_AsLong(obj); + return PyTuple_Pack( + 4, PyLong_FromLong(color_channel_red(color)), + PyLong_FromLong(color_channel_green(color)), + PyLong_FromLong(color_channel_blue(color)), + PyLong_FromLong(color_channel_alpha(color))); +} + +PyObject* color_from_rgba(PyObject* self, PyObject* args) { + (void)self; + PyObject* obj; + if (!PyArg_ParseTuple(args, "O", &obj)) { + return NULL; + } + + return PyLong_FromLong(color_from_channels( + PyLong_AsLong(PyTuple_GetItem(obj, 0)), + PyLong_AsLong(PyTuple_GetItem(obj, 1)), + PyLong_AsLong(PyTuple_GetItem(obj, 2)), + PyLong_AsLong(PyTuple_GetItem(obj, 3)))); +} + +PyObject* interpolate_color_sequence( + PyObject* self_in, PyObject* args, PyObject* kwds) { + (void)self_in; + int ret = 0; + ColorSequenceObject* color_sequence_obj; + PyObject* samples_obj; + char* keywords[] = { + "color_sequence", + "samples", + NULL, + }; + if (!PyArg_ParseTupleAndKeywords( + args, kwds, "O!O", keywords, &ColorSequenceType, &color_sequence_obj, + &samples_obj)) { + return NULL; + } + + // determine the interpolation function + sequence_map_fn interp_fn = color_sequence_obj->interpolator->fn; + + // use this sequences' interpolation method to handle the input + if (PyLong_Check(samples_obj)) { + // input is a single sample, return the interpolated color directly + color_t color; + ret = interp_fn( + &color_sequence_obj->sequence, (double)PyLong_AsLong(samples_obj), + &color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + return PyLong_FromLong(color); + + } else if (PyFloat_Check(samples_obj)) { + // input is a single sample, return the interpolated color directly + color_t color; + ret = interp_fn( + &color_sequence_obj->sequence, PyFloat_AsDouble(samples_obj), &color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + return PyLong_FromLong(color); + + } else if (PyList_Check(samples_obj)) { + // input is a list of samples, return a tuple of interpolated colors + size_t num_samples = PyList_Size(samples_obj); + PyObject* result = PyTuple_New(num_samples); + for (size_t idx = 0; idx < num_samples; idx++) { + color_t color; + ret = interp_fn( + &color_sequence_obj->sequence, + PyFloat_AsDouble(PyList_GetItem(samples_obj, idx)), &color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + ret = PyTuple_SetItem(result, idx, PyLong_FromLong(color)); + if (0 != ret) { + return NULL; + } + } + return result; + + } else if (PyTuple_Check(samples_obj)) { + // input is a tuple of samples, return a tuple of interpolated colors + size_t num_samples = PyTuple_Size(samples_obj); + PyObject* result = PyTuple_New(num_samples); + for (size_t idx = 0; idx < num_samples; idx++) { + color_t color; + ret = interp_fn( + &color_sequence_obj->sequence, + PyFloat_AsDouble(PyTuple_GetItem(samples_obj, idx)), &color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + ret = PyTuple_SetItem(result, idx, PyLong_FromLong(color)); + if (0 != ret) { + return NULL; + } + } + + } else { + PyErr_SetNone(PyExc_TypeError); + return NULL; + } + + // should never get here + PyErr_SetNone(PyExc_NotImplementedError); + return NULL; +} diff --git a/src/submodules/functional/color_correction.c b/src/submodules/functional/color_correction.c new file mode 100644 index 0000000..4c487b7 --- /dev/null +++ b/src/submodules/functional/color_correction.c @@ -0,0 +1,32 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/interface.h" +#include "sicgl/gamma.h" + +/** + * @brief Perform gamma correction on interface memory. + * + * @param self + * @param args + * @return PyObject* None. + */ +PyObject* gamma_correct(PyObject* self, PyObject* args) { + (void)self; + InterfaceObject* input; + InterfaceObject* output; + if (!PyArg_ParseTuple( + args, "O!O!", &InterfaceType, &input, &InterfaceType, &output)) { + return NULL; + } + + int ret = sicgl_gamma_correct(&input->interface, &output->interface); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/src/submodules/functional/drawing/global.c b/src/submodules/functional/drawing/global.c new file mode 100644 index 0000000..9ed7b82 --- /dev/null +++ b/src/submodules/functional/drawing/global.c @@ -0,0 +1,136 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/interface.h" +#include "sicgl/blit.h" +#include "sicgl/domain/global.h" + +PyObject* global_pixel(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u, v; + if (!PyArg_ParseTuple( + args, "O!i(ii)", &InterfaceType, &interface_obj, &color, &u, &v)) { + return NULL; + } + + int ret = sicgl_global_pixel(&interface_obj->interface, color, u, v); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* global_line(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &u1, &v1)) { + return NULL; + } + + int ret = sicgl_global_line(&interface_obj->interface, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* global_rectangle(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &u1, &v1)) { + return NULL; + } + + int ret = + sicgl_global_rectangle(&interface_obj->interface, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* global_rectangle_filled(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &u1, &v1)) { + return NULL; + } + + int ret = sicgl_global_rectangle_filled( + &interface_obj->interface, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* global_circle(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, diameter; + if (!PyArg_ParseTuple( + args, "O!i(ii)i", &InterfaceType, &interface_obj, &color, &u0, &v0, + &diameter)) { + return NULL; + } + + int ret = sicgl_global_circle_ellipse( + &interface_obj->interface, color, u0, v0, diameter); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* global_ellipse(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, semiu, semiv; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &semiu, &semiv)) { + return NULL; + } + + int ret = sicgl_global_ellipse( + &interface_obj->interface, color, u0, v0, semiu, semiv); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/src/submodules/functional/drawing/interface.c b/src/submodules/functional/drawing/interface.c new file mode 100644 index 0000000..aa0c334 --- /dev/null +++ b/src/submodules/functional/drawing/interface.c @@ -0,0 +1,155 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/interface.h" +#include "sicgl/blit.h" +#include "sicgl/domain/interface.h" + +PyObject* interface_fill(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + if (!PyArg_ParseTuple(args, "O!i", &InterfaceType, &interface_obj, &color)) { + return NULL; + } + + int ret = sicgl_interface_fill(&interface_obj->interface, color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* interface_pixel(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u, v; + if (!PyArg_ParseTuple( + args, "O!i(ii)", &InterfaceType, &interface_obj, &color, &u, &v)) { + return NULL; + } + + int ret = sicgl_interface_pixel(&interface_obj->interface, color, u, v); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* interface_line(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &u1, &v1)) { + return NULL; + } + + int ret = + sicgl_interface_line(&interface_obj->interface, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* interface_rectangle(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &u1, &v1)) { + return NULL; + } + + int ret = sicgl_interface_rectangle( + &interface_obj->interface, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* interface_rectangle_filled(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &u1, &v1)) { + return NULL; + } + + int ret = sicgl_interface_rectangle_filled( + &interface_obj->interface, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* interface_circle(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, diameter; + if (!PyArg_ParseTuple( + args, "O!i(ii)i", &InterfaceType, &interface_obj, &color, &u0, &v0, + &diameter)) { + return NULL; + } + + int ret = sicgl_interface_circle_ellipse( + &interface_obj->interface, color, u0, v0, diameter); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* interface_ellipse(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + int color; + ext_t u0, v0, semiu, semiv; + if (!PyArg_ParseTuple( + args, "O!i(ii)(ii)", &InterfaceType, &interface_obj, &color, &u0, &v0, + &semiu, &semiv)) { + return NULL; + } + + int ret = sicgl_interface_ellipse( + &interface_obj->interface, color, u0, v0, semiu, semiv); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/src/submodules/functional/drawing/screen.c b/src/submodules/functional/drawing/screen.c new file mode 100644 index 0000000..0ca8351 --- /dev/null +++ b/src/submodules/functional/drawing/screen.c @@ -0,0 +1,166 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/interface.h" +#include "sicgl/domain/screen.h" + +PyObject* screen_fill(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + if (!PyArg_ParseTuple( + args, "O!O!i", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color)) { + return NULL; + } + + int ret = + sicgl_screen_fill(&interface_obj->interface, screen_obj->screen, color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* screen_pixel(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + ext_t u, v; + if (!PyArg_ParseTuple( + args, "O!O!i(ii)", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color, &u, &v)) { + return NULL; + } + + int ret = sicgl_screen_pixel( + &interface_obj->interface, screen_obj->screen, color, u, v); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* screen_line(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!O!i(ii)(ii)", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color, &u0, &v0, &u1, &v1)) { + return NULL; + } + + int ret = sicgl_screen_line( + &interface_obj->interface, screen_obj->screen, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* screen_rectangle(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!O!i(ii)(ii)", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color, &u0, &v0, &u1, &v1)) { + return NULL; + } + + int ret = sicgl_screen_rectangle( + &interface_obj->interface, screen_obj->screen, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* screen_rectangle_filled(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + ext_t u0, v0, u1, v1; + if (!PyArg_ParseTuple( + args, "O!O!i(ii)(ii)", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color, &u0, &v0, &u1, &v1)) { + return NULL; + } + + int ret = sicgl_screen_rectangle_filled( + &interface_obj->interface, screen_obj->screen, color, u0, v0, u1, v1); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* screen_circle(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + ext_t u0, v0, diameter; + if (!PyArg_ParseTuple( + args, "O!O!i(ii)i", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color, &u0, &v0, &diameter)) { + return NULL; + } + + int ret = sicgl_screen_circle_ellipse( + &interface_obj->interface, screen_obj->screen, color, u0, v0, diameter); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* screen_ellipse(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen_obj; + int color; + ext_t u0, v0, semiu, semiv; + if (!PyArg_ParseTuple( + args, "O!O!i(ii)(ii)", &InterfaceType, &interface_obj, &ScreenType, + &screen_obj, &color, &u0, &v0, &semiu, &semiv)) { + return NULL; + } + int ret = sicgl_screen_ellipse( + &interface_obj->interface, screen_obj->screen, color, u0, v0, semiu, + semiv); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/src/submodules/functional/module.c b/src/submodules/functional/module.c new file mode 100644 index 0000000..675a626 --- /dev/null +++ b/src/submodules/functional/module.c @@ -0,0 +1,170 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/submodules/functional/color.h" +#include "pysicgl/submodules/functional/color_correction.h" +#include "pysicgl/submodules/functional/drawing/global.h" +#include "pysicgl/submodules/functional/drawing/interface.h" +#include "pysicgl/submodules/functional/drawing/screen.h" +#include "pysicgl/submodules/functional/operations.h" +#include "pysicgl/types/interface.h" +#include "sicgl/gamma.h" + +/** + * @brief Get the pixel color at the specified offset. + * + * @param self + * @param args + * - memorv_obj: The memory buffer bytearray. + * - offset_obj: The pixel offset into the buffer. + * @return PyObject* the pixel color as an integer. + */ +static PyObject* get_pixel_at_offset(PyObject* self, PyObject* args) { + (void)self; + InterfaceObject* interface_obj; + int offset; + if (!PyArg_ParseTuple(args, "O!i", &InterfaceType, &interface_obj, &offset)) { + return NULL; + } + + color_t color; + int ret = sicgl_interface_get_pixel_offset( + &interface_obj->interface, offset, &color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + return PyLong_FromLong(color); +} + +/** + * @brief Get the pixel color at specified coordinates. + * + * @param self + * @param args + * - interface_obj: The interface. + * - coordinates_obj: The coordinates tuple (u, v). + */ +static PyObject* get_pixel_at_coordinates(PyObject* self, PyObject* args) { + (void)self; + InterfaceObject* interface_obj; + ext_t u; + ext_t v; + if (!PyArg_ParseTuple( + args, "O!(ii)", &InterfaceType, &interface_obj, &u, &v)) { + return NULL; + } + + color_t color; + int ret = sicgl_interface_get_pixel(&interface_obj->interface, u, v, &color); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + return PyLong_FromLong(color); +} + +static PyMethodDef funcs[] = { + + // utilities + {"get_pixel_at_offset", (PyCFunction)get_pixel_at_offset, METH_VARARGS, + "Get the pixel color at the specified offset."}, + {"get_pixel_at_coordinates", (PyCFunction)get_pixel_at_coordinates, + METH_VARARGS, "Get the pixel color at the specified coordinates."}, + + // color utilities + {"color_from_rgba", (PyCFunction)color_from_rgba, METH_VARARGS, + "Return the color comprised of the RGBA input 4-tuple."}, + {"color_to_rgba", (PyCFunction)color_to_rgba, METH_VARARGS, + "Return the individual RGBA components of the input color as a 4-tuple."}, + {"interpolate_color_sequence", (PyCFunction)interpolate_color_sequence, + METH_VARARGS | METH_KEYWORDS, + "Interpolate the color sequence at one or more points using the given " + "interpolation type."}, + + // color correction + {"gamma_correct", (PyCFunction)gamma_correct, METH_VARARGS, + "Perform gamma correction on interface memory."}, + + // advanced operations + {"blit", (PyCFunction)blit, METH_VARARGS, + "blit a sprite onto the interface memory directly"}, + {"compose", (PyCFunction)compose, METH_VARARGS, + "compose a sprite onto the interface memory using a composition method"}, + {"scalar_field", (PyCFunction)scalar_field, METH_VARARGS | METH_KEYWORDS, + "map a scalar field onto the interface through a color sequence"}, + {"scale", (PyCFunction)scale, METH_VARARGS, + "scale the interface memory by a scalar factor"}, + + // interface relative drawing + + {"interface_fill", (PyCFunction)interface_fill, METH_VARARGS, + "fill color into interface"}, + {"interface_pixel", (PyCFunction)interface_pixel, METH_VARARGS, + "draw pixel to interface"}, + {"interface_line", (PyCFunction)interface_line, METH_VARARGS, + "draw line to interface"}, + {"interface_rectangle", (PyCFunction)interface_rectangle, METH_VARARGS, + "draw rectangle to interface"}, + {"interface_rectangle_filled", (PyCFunction)interface_rectangle_filled, + METH_VARARGS, "draw filled rectangle to interface"}, + {"interface_circle", (PyCFunction)interface_circle, METH_VARARGS, + "draw circle to interface"}, + {"interface_ellipse", (PyCFunction)interface_ellipse, METH_VARARGS, + "draw ellipse to interface"}, + + // screen relative drawing + {"screen_fill", (PyCFunction)screen_fill, METH_VARARGS, + "fill color into screen"}, + {"screen_pixel", (PyCFunction)screen_pixel, METH_VARARGS, + "draw pixel to screen"}, + {"screen_line", (PyCFunction)screen_line, METH_VARARGS, + "draw line to screen"}, + {"screen_rectangle", (PyCFunction)screen_rectangle, METH_VARARGS, + "draw rectangle to screen"}, + {"screen_rectangle_filled", (PyCFunction)screen_rectangle_filled, + METH_VARARGS, "draw filled rectangle to screen"}, + {"screen_circle", (PyCFunction)screen_circle, METH_VARARGS, + "draw circle to screen"}, + {"screen_ellipse", (PyCFunction)screen_ellipse, METH_VARARGS, + "draw ellipse to screen"}, + + // global drawing + {"global_pixel", (PyCFunction)global_pixel, METH_VARARGS, + "Draw a pixel in global coordinates. Output clipped to interface."}, + {"global_line", (PyCFunction)global_line, METH_VARARGS, + "Draw a line in global coordinates. Output clipped to interface."}, + {"global_rectangle", (PyCFunction)global_rectangle, METH_VARARGS, + "Draw a rectangle in global coordinates. Output clipped to interface."}, + {"global_rectangle_filled", (PyCFunction)global_rectangle_filled, + METH_VARARGS, + "Draw a filled rectangle in global coordinates. Output clipped to " + "interface."}, + {"global_circle", (PyCFunction)global_circle, METH_VARARGS, + "Draw a circle in global coordinates. Output clipped to interface."}, + {"global_ellipse", (PyCFunction)global_ellipse, METH_VARARGS, + "Draw an ellipse in global coordinates. Output clipped to interface."}, + + {NULL}, +}; + +static PyModuleDef module = { + PyModuleDef_HEAD_INIT, + "functional", + "sicgl functional interface", + -1, + funcs, + NULL, + NULL, + NULL, + NULL, +}; + +PyMODINIT_FUNC PyInit_functional(void) { + PyObject* m = PyModule_Create(&module); + + return m; +} diff --git a/src/submodules/functional/operations.c b/src/submodules/functional/operations.c new file mode 100644 index 0000000..272c60c --- /dev/null +++ b/src/submodules/functional/operations.c @@ -0,0 +1,148 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/color_sequence.h" +#include "pysicgl/types/color_sequence_interpolator.h" +#include "pysicgl/types/compositor.h" +#include "pysicgl/types/interface.h" +#include "pysicgl/types/scalar_field.h" +#include "sicgl/blit.h" +#include "sicgl/compose.h" +#include "sicgl/gamma.h" + +static inline color_t clamp_u8(color_t channel) { + if (channel > 255) { + return 255; + } else if (channel < 0) { + return 0; + } else { + return channel; + } +} + +static inline color_t color_scale(color_t color, double scale) { + // scales only the color components, alpha channel is untouched + return color_from_channels( + clamp_u8((color_t)(color_channel_red(color) * scale)), + clamp_u8((color_t)(color_channel_green(color) * scale)), + clamp_u8((color_t)(color_channel_blue(color) * scale)), + color_channel_alpha(color)); +} + +PyObject* scalar_field(PyObject* self_in, PyObject* args, PyObject* kwds) { + (void)self_in; + int ret = 0; + InterfaceObject* interface_obj; + ScreenObject* field_obj; + ScalarFieldObject* scalar_field_obj; + ColorSequenceObject* color_sequence_obj; + double offset = 0.0; + char* keywords[] = { + "interface", "screen", "scalar_field", "color_sequence", "offset", NULL, + }; + if (!PyArg_ParseTupleAndKeywords( + args, kwds, "O!O!O!O!|d", keywords, &InterfaceType, &interface_obj, + &ScreenType, &field_obj, &ScalarFieldType, &scalar_field_obj, + &ColorSequenceType, &color_sequence_obj, &offset)) { + return NULL; + } + + Py_INCREF(color_sequence_obj); + Py_INCREF(scalar_field_obj); + + // check length of scalars is sufficient for the field + uint32_t pixels; + ret = screen_get_num_pixels(field_obj->screen, &pixels); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + size_t scalars = scalar_field_obj->length; + if (pixels > scalars) { + PyErr_SetString(PyExc_ValueError, "scalars buffer is too small"); + return NULL; + } + + ColorSequenceInterpolatorObject* interpolator_obj = + color_sequence_obj->interpolator; + ret = sicgl_scalar_field( + &interface_obj->interface, field_obj->screen, scalar_field_obj->scalars, + offset, &color_sequence_obj->sequence, interpolator_obj->fn); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_DECREF(scalar_field_obj); + Py_DECREF(color_sequence_obj); + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* compose(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen; + Py_buffer sprite; + CompositorObject* compositor; + if (!PyArg_ParseTuple( + args, "O!O!y*O!", &InterfaceType, &interface_obj, &ScreenType, + &screen, &sprite, &CompositorType, &compositor)) { + return NULL; + } + + int ret = sicgl_compose( + &interface_obj->interface, screen->screen, sprite.buf, compositor->fn, + compositor->args); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* blit(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + ScreenObject* screen; + Py_buffer sprite; + if (!PyArg_ParseTuple( + args, "O!O!y*", &InterfaceType, &interface_obj, &ScreenType, &screen, + &sprite)) { + return NULL; + } + + int ret = sicgl_blit(&interface_obj->interface, screen->screen, sprite.buf); + + PyBuffer_Release(&sprite); + + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return NULL; + } + + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* scale(PyObject* self_in, PyObject* args) { + (void)self_in; + InterfaceObject* interface_obj; + double fraction; + if (!PyArg_ParseTuple( + args, "O!d", &InterfaceType, &interface_obj, &fraction)) { + return NULL; + } + color_t* memory = interface_obj->interface.memory; + for (ext_t idx = 0; idx < interface_obj->interface.length; idx++) { + memory[idx] = color_scale(memory[idx], fraction); + } + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/src/submodules/interpolation/module.c b/src/submodules/interpolation/module.c new file mode 100644 index 0000000..8d10f00 --- /dev/null +++ b/src/submodules/interpolation/module.c @@ -0,0 +1,61 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/color_sequence_interpolator.h" +#include "sicgl/color_sequence.h" + +static PyModuleDef module = { + PyModuleDef_HEAD_INIT, + "interpolation", + "sicgl interpolation module", + -1, + NULL, + NULL, + NULL, + NULL, + NULL, +}; + +// collect interpolators for the module +typedef struct _interpolator_entry_t { + char* name; + sequence_map_fn fn; +} interpolator_entry_t; +static const interpolator_entry_t interpolators[] = { + {.name = "CONTINUOUS_CIRCULAR", + .fn = color_sequence_interpolate_color_continuous_circular}, + {.name = "CONTINUOUS_LINEAR", + .fn = color_sequence_interpolate_color_continuous_linear}, + {.name = "DISCRETE_CIRCULAR", + .fn = color_sequence_interpolate_color_discrete_circular}, + {.name = "DISCRETE_LINEAR", + .fn = color_sequence_interpolate_color_discrete_linear}, +}; +static const size_t num_interpolators = + sizeof(interpolators) / sizeof(interpolator_entry_t); + +PyMODINIT_FUNC PyInit_interpolation(void) { + PyObject* m = PyModule_Create(&module); + + // create and register interpolators + PyType_Ready(&ColorSequenceInterpolatorType); + for (size_t idx = 0; idx < num_interpolators; idx++) { + interpolator_entry_t entry = interpolators[idx]; + ColorSequenceInterpolatorObject* obj = + new_color_sequence_interpolator_object(entry.fn, NULL); + if (NULL == obj) { + PyErr_SetString(PyExc_OSError, "failed to create interpolator object"); + return NULL; + } + if (PyModule_AddObject(m, entry.name, (PyObject*)obj) < 0) { + Py_DECREF(obj); + Py_DECREF(m); + PyErr_SetString( + PyExc_OSError, "failed to add interpolator object to module"); + return NULL; + } + } + + return m; +} diff --git a/src/types/color_sequence/type.c b/src/types/color_sequence/type.c new file mode 100644 index 0000000..b979811 --- /dev/null +++ b/src/types/color_sequence/type.c @@ -0,0 +1,194 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include + +#include "pysicgl/submodules/color.h" +#include "pysicgl/types/color_sequence.h" +#include "pysicgl/types/color_sequence_interpolator.h" + +// fwd declarations +static Py_ssize_t mp_length(PyObject* self_in); + +// utilities for C consumers +//////////////////////////// + +/** + * @brief Deallocate the color sequence. + * + * @param self + * @return int + */ +static int deallocate_sequence(ColorSequenceObject* self) { + int ret = 0; + if (NULL == self) { + ret = -1; + goto out; + } + + PyMem_Free(self->sequence.colors); + self->sequence.colors = NULL; + self->sequence.length = 0; + +out: + return ret; +} + +/** + * @brief Allocate memory for the color sequence. + * + * @param self + * @param len + * @return int + */ +static int allocate_sequence(ColorSequenceObject* self, size_t len) { + int ret = 0; + if (NULL == self) { + ret = -1; + goto out; + } + + self->sequence.colors = PyMem_Malloc(len * sizeof(color_t)); + if (NULL == self->sequence.colors) { + ret = -ENOMEM; + goto out; + } + self->sequence.length = len; + +out: + return ret; +} + +// methods +////////// + +static PyObject* get_colors(PyObject* self_in, void* closure) { + (void)closure; + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + PyObject* colors = PyList_New(self->sequence.length); + for (size_t idx = 0; idx < self->sequence.length; idx++) { + PyList_SetItem(colors, idx, PyLong_FromLong(self->sequence.colors[idx])); + } + return colors; +} + +static PyObject* get_interpolator(PyObject* self_in, void* closure) { + (void)closure; + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + Py_INCREF((PyObject*)self->interpolator); + return (PyObject*)self->interpolator; +} + +static Py_ssize_t mp_length(PyObject* self_in) { + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + return self->sequence.length; +} + +static PyObject* mp_subscript(PyObject* self_in, PyObject* key) { + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + return PyLong_FromLong(self->sequence.colors[PyLong_AsLong(key)]); +} + +static PyObject* tp_iter(PyObject* self_in) { + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + self->iterator_index = 0; + Py_INCREF(self); + return self_in; +} + +static PyObject* tp_iternext(PyObject* self_in) { + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + if (self->iterator_index < self->sequence.length) { + PyObject* item = + PyLong_FromLong(self->sequence.colors[self->iterator_index]); + self->iterator_index++; + return item; + } else { + // No more items. Raise StopIteration + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } +} + +static void tp_dealloc(PyObject* self_in) { + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + Py_XDECREF(self->interpolator); + deallocate_sequence(self); + Py_TYPE(self)->tp_free(self); +} + +static int tp_init(PyObject* self_in, PyObject* args, PyObject* kwds) { + int ret = 0; + ColorSequenceObject* self = (ColorSequenceObject*)self_in; + PyObject* colors_obj; + ColorSequenceInterpolatorObject* interpolator_obj; + char* keywords[] = { + "colors", + "interpolator", + NULL, + }; + if (!PyArg_ParseTupleAndKeywords( + args, kwds, "OO!", keywords, &colors_obj, + &ColorSequenceInterpolatorType, &interpolator_obj)) { + return -1; + } + + // set the interpolator + self->interpolator = interpolator_obj; + Py_INCREF(self->interpolator); + + // ensure that the colors object is a list + if (!PyList_Check(colors_obj)) { + PyErr_SetNone(PyExc_TypeError); + return -1; + } + + // size of the sequence + size_t len = PyList_Size(colors_obj); + + // allocate memory for the sequence + ret = allocate_sequence(self, len); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return -1; + } + + // copy the colors into the sequence + for (size_t idx = 0; idx < len; idx++) { + self->sequence.colors[idx] = PyLong_AsLong(PyList_GetItem(colors_obj, idx)); + } + + return ret; +} + +static PyMethodDef tp_methods[] = { + {NULL}, +}; + +static PyMappingMethods tp_as_mapping = { + .mp_length = mp_length, + .mp_subscript = mp_subscript, +}; + +static PyGetSetDef tp_getset[] = { + {"colors", get_colors, NULL, "colors", NULL}, + {"interpolator", get_interpolator, NULL, "interpolator", NULL}, + {NULL}, +}; + +PyTypeObject ColorSequenceType = { + PyVarObject_HEAD_INIT(NULL, 0).tp_name = "_sicgl_core.ColorSequence", + .tp_doc = PyDoc_STR("sicgl color"), + .tp_basicsize = sizeof(ColorSequenceObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_dealloc = tp_dealloc, + .tp_init = tp_init, + .tp_getset = tp_getset, + .tp_methods = tp_methods, + .tp_as_mapping = &tp_as_mapping, + .tp_iter = tp_iter, + .tp_iternext = tp_iternext, +}; diff --git a/src/types/color_sequence_interpolator/type.c b/src/types/color_sequence_interpolator/type.c new file mode 100644 index 0000000..c0b3740 --- /dev/null +++ b/src/types/color_sequence_interpolator/type.c @@ -0,0 +1,27 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include "pysicgl/types/color_sequence_interpolator.h" + +ColorSequenceInterpolatorObject* new_color_sequence_interpolator_object( + sequence_map_fn fn, void* args) { + ColorSequenceInterpolatorObject* self = + (ColorSequenceInterpolatorObject*)(ColorSequenceInterpolatorType.tp_alloc( + &ColorSequenceInterpolatorType, 0)); + if (self != NULL) { + self->fn = fn; + self->args = args; + } + + return self; +} + +PyTypeObject ColorSequenceInterpolatorType = { + PyVarObject_HEAD_INIT(NULL, 0).tp_name = + "_sicgl_core.ColorSequenceInterpolator", + .tp_doc = PyDoc_STR("sicgl color sequence interpolator"), + .tp_basicsize = sizeof(ColorSequenceInterpolatorObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, +}; diff --git a/src/types/compositor/type.c b/src/types/compositor/type.c new file mode 100644 index 0000000..dd25b24 --- /dev/null +++ b/src/types/compositor/type.c @@ -0,0 +1,33 @@ +#define PY_SSIZE_T_CLEAN +#include +#include +// python includes first (clang-format) + +#include +#include + +#include "pysicgl/types/compositor.h" + +/** + * @brief Creates a new compositor object. + * + * @return CompositorObject* pointer to the new compositor object. + */ +CompositorObject* new_compositor_object(compositor_fn fn, void* args) { + CompositorObject* self = + (CompositorObject*)(CompositorType.tp_alloc(&CompositorType, 0)); + if (self != NULL) { + self->fn = fn; + self->args = args; + } + + return self; +} + +PyTypeObject CompositorType = { + PyVarObject_HEAD_INIT(NULL, 0).tp_name = "_sicgl_core.Compositor", + .tp_doc = PyDoc_STR("sicgl compositor"), + .tp_basicsize = sizeof(CompositorObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, +}; diff --git a/src/types/interface/type.c b/src/types/interface/type.c new file mode 100644 index 0000000..da1e21b --- /dev/null +++ b/src/types/interface/type.c @@ -0,0 +1,279 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include +#include + +#include "pysicgl/types/color_sequence.h" +#include "pysicgl/types/color_sequence_interpolator.h" +#include "pysicgl/types/compositor.h" +#include "pysicgl/types/interface.h" +#include "pysicgl/types/scalar_field.h" +#include "sicgl/blit.h" +#include "sicgl/domain/interface.h" +#include "sicgl/gamma.h" + +// utilities for C consumers +//////////////////////////// + +/** + * @brief Removes the screen object from the interface. + * + * @param self + * @return int + */ +int Interface_remove_screen(InterfaceObject* self) { + int ret = 0; + if (NULL == self) { + ret = -ENOMEM; + goto out; + } + + if (NULL != self->screen) { + Py_DECREF((PyObject*)self->screen); + self->interface.screen = NULL; + } + +out: + return ret; +} + +/** + * @brief Sets the screen object. + * + * @param self + * @param screen_obj + * @return int + */ +int Interface_set_screen(InterfaceObject* self, ScreenObject* screen_obj) { + int ret = 0; + if (NULL == self) { + ret = -ENOMEM; + goto out; + } + + self->screen = screen_obj; + Py_INCREF((PyObject*)self->screen); + self->interface.screen = self->screen->screen; + +out: + return ret; +} + +/** + * @brief Removes the memory object from the interface. + * + * @param self + * @return int + */ +int Interface_remove_memory(InterfaceObject* self) { + int ret = 0; + if (NULL == self) { + ret = -ENOMEM; + goto out; + } + + if (NULL != self->memory_buffer.obj) { + PyBuffer_Release(&self->memory_buffer); + self->interface.memory = NULL; + self->interface.length = 0; + } + +out: + return ret; +} + +/** + * @brief Sets the memory object. + * + * @param self + * @param bytearray_obj + * @return int + */ +int Interface_set_memory( + InterfaceObject* self, PyByteArrayObject* bytearray_obj) { + int ret = 0; + if (NULL == self) { + ret = -ENOMEM; + goto out; + } + + size_t bpp = bytes_per_pixel(); + + ret = PyObject_GetBuffer( + (PyObject*)bytearray_obj, &self->memory_buffer, PyBUF_WRITABLE); + if (0 != ret) { + goto out; + } + self->interface.memory = self->memory_buffer.buf; + self->interface.length = self->memory_buffer.len / bpp; + +out: + return ret; +} + +// getset +///////// + +/** + * @brief Get a new reference to the screen object. + * + * @param self_in + * @param closure + * @return PyObject* + * + * @note This function returns a new reference to the + * screen object. + */ +static PyObject* get_screen(PyObject* self_in, void* closure) { + (void)closure; + InterfaceObject* self = (InterfaceObject*)self_in; + // it is important to return a NEW REFERENCE to the object, + // otherwise its reference count will be deleted by the caller + // who is passed the reference and later decrements the refcount + Py_INCREF((PyObject*)self->screen); + return (PyObject*)self->screen; +} + +/** + * @brief Get a memoryview of the memory buffer. + * + * @param self_in + * @param closure + * @return PyObject* + * + * @note This function returns a new reference to the + * memoryview of the memory buffer. + */ +static PyObject* get_memory(PyObject* self_in, void* closure) { + (void)closure; + InterfaceObject* self = (InterfaceObject*)self_in; + return PyMemoryView_FromBuffer(&self->memory_buffer); +} + +/** + * @brief Set the screen object. + * + * @param self_in + * @param value + * @param closure + * @return int + * + * @note This function steals a reference to the screen + * object and releases any existing screen object. + */ +static int set_screen(PyObject* self_in, PyObject* value, void* closure) { + (void)closure; + int ret = 0; + InterfaceObject* self = (InterfaceObject*)self_in; + if (!PyObject_IsInstance((PyObject*)value, (PyObject*)&ScreenType)) { + PyErr_SetNone(PyExc_TypeError); + return -1; + } + + ret = Interface_remove_screen(self); + if (0 != ret) { + ret = -1; + goto out; + } + ret = Interface_set_screen(self, (ScreenObject*)value); + if (0 != ret) { + ret = -1; + goto out; + } + +out: + return ret; +} + +/** + * @brief Set the memory object. + * + * @param self_in + * @param value + * @param closure + * @return int + * + * @note This function relies on PyObject_GetBuffer and + * PyBuffer_Release to handle the memory buffer reference + * count. + */ +static int set_memory(PyObject* self_in, PyObject* value, void* closure) { + (void)closure; + int ret = 0; + InterfaceObject* self = (InterfaceObject*)self_in; + if (!PyObject_IsInstance((PyObject*)value, (PyObject*)&PyByteArray_Type)) { + PyErr_SetNone(PyExc_TypeError); + return -1; + } + + ret = Interface_remove_memory(self); + if (0 != ret) { + ret = -1; + goto out; + } + ret = Interface_set_memory(self, (PyByteArrayObject*)value); + if (0 != ret) { + ret = -1; + goto out; + } + +out: + return ret; +} + +static void tp_dealloc(PyObject* self_in) { + InterfaceObject* self = (InterfaceObject*)self_in; + Interface_remove_memory(self); + Interface_remove_screen(self); + Py_TYPE(self)->tp_free(self); +} + +static int tp_init(PyObject* self_in, PyObject* args, PyObject* kwds) { + InterfaceObject* self = (InterfaceObject*)self_in; + char* keywords[] = { + "screen", + "memory", + NULL, + }; + PyObject* screen_obj; + PyByteArrayObject* memory_bytearray_obj; + if (!PyArg_ParseTupleAndKeywords( + args, kwds, "O!Y", keywords, &ScreenType, &screen_obj, + &memory_bytearray_obj)) { + return -1; + } + + // set screen and memory + int ret = set_screen((PyObject*)self, screen_obj, NULL); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return -1; + } + ret = set_memory((PyObject*)self, (PyObject*)memory_bytearray_obj, NULL); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return -1; + } + + return 0; +} + +static PyGetSetDef tp_getset[] = { + {"screen", get_screen, set_screen, "screen definition", NULL}, + {"memory", get_memory, set_memory, "pixel memory", NULL}, + {NULL}, +}; + +PyTypeObject InterfaceType = { + PyVarObject_HEAD_INIT(NULL, 0).tp_name = "_sicgl_core.Interface", + .tp_doc = PyDoc_STR("sicgl interface"), + .tp_basicsize = sizeof(InterfaceObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_dealloc = tp_dealloc, + .tp_init = tp_init, + .tp_getset = tp_getset, +}; diff --git a/src/types/scalar_field/type.c b/src/types/scalar_field/type.c new file mode 100644 index 0000000..334dd75 --- /dev/null +++ b/src/types/scalar_field/type.c @@ -0,0 +1,159 @@ +#define PY_SSIZE_T_CLEAN +#include +// python includes first (clang-format) + +#include +#include +#include + +#include "pysicgl/types/scalar_field.h" + +/** + * @brief Deallocate the scalars memory. + * + * @param self + * @return int + */ +static int deallocate_scalars(ScalarFieldObject* self) { + int ret = 0; + if (NULL == self) { + ret = -1; + goto out; + } + + PyMem_Free(self->scalars); + self->scalars = NULL; + self->length = 0; + +out: + return ret; +} + +/** + * @brief Allocate memory for the scalars. + * + * @param self + * @param len + * @return int + */ +static int allocate_scalars(ScalarFieldObject* self, size_t len) { + int ret = 0; + if (NULL == self) { + ret = -1; + goto out; + } + + self->scalars = PyMem_Malloc(len * sizeof(double)); + if (NULL == self->scalars) { + ret = -ENOMEM; + goto out; + } + self->length = len; + +out: + return ret; +} + +// methods +////////// + +static Py_ssize_t mp_length(PyObject* self_in) { + ScalarFieldObject* self = (ScalarFieldObject*)self_in; + return self->length; +} + +static PyObject* mp_subscript(PyObject* self_in, PyObject* key) { + ScalarFieldObject* self = (ScalarFieldObject*)self_in; + size_t idx = PyLong_AsSize_t(key); + if (idx >= self->length) { + PyErr_SetNone(PyExc_IndexError); + return NULL; + } + return PyFloat_FromDouble(self->scalars[idx]); +} + +static void tp_dealloc(PyObject* self_in) { + ScalarFieldObject* self = (ScalarFieldObject*)self_in; + int ret = deallocate_scalars(self); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return; + } + Py_TYPE(self)->tp_free(self); +} + +static int tp_init(PyObject* self_in, PyObject* args, PyObject* kwds) { + ScalarFieldObject* self = (ScalarFieldObject*)self_in; + char* keywords[] = { + "scalars", + NULL, + }; + PyObject* scalars_obj; + if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", keywords, &scalars_obj)) { + return -1; + } + + if (PyList_Check(scalars_obj)) { + size_t len = PyList_Size(scalars_obj); + + // allocate memory for the sequence + int ret = allocate_scalars(self, len); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return -1; + } + + // copy the colors into the sequence + for (size_t idx = 0; idx < len; idx++) { + PyObject* item = PyList_GetItem(scalars_obj, idx); + if (!PyFloat_Check(item)) { + PyErr_SetNone(PyExc_TypeError); + return -1; + } + self->scalars[idx] = PyFloat_AsDouble(item); + } + + } else if (PyTuple_Check(scalars_obj)) { + size_t len = PyTuple_Size(scalars_obj); + + // allocate memory for the sequence + int ret = allocate_scalars(self, len); + if (0 != ret) { + PyErr_SetNone(PyExc_OSError); + return -1; + } + + // copy the colors into the sequence + for (size_t idx = 0; idx < len; idx++) { + PyObject* item = PyTuple_GetItem(scalars_obj, idx); + if (!PyFloat_Check(item)) { + PyErr_SetNone(PyExc_TypeError); + return -1; + } + self->scalars[idx] = PyFloat_AsDouble(item); + } + + } else { + PyErr_SetNone(PyExc_TypeError); + return -1; + } + + return 0; +} + +static PyMappingMethods tp_as_mapping = { + .mp_length = mp_length, + .mp_subscript = mp_subscript, +}; + +PyTypeObject ScalarFieldType = { + PyVarObject_HEAD_INIT(NULL, 0).tp_name = "_sicgl_core.ScalarField", + .tp_doc = PyDoc_STR("sicgl ScalarField"), + .tp_basicsize = sizeof(ScalarFieldObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_new = PyType_GenericNew, + .tp_dealloc = tp_dealloc, + .tp_init = tp_init, + .tp_as_mapping = &tp_as_mapping, +}; diff --git a/src/screen.c b/src/types/screen/type.c similarity index 92% rename from src/screen.c rename to src/types/screen/type.c index 873caa7..56c2833 100644 --- a/src/screen.c +++ b/src/types/screen/type.c @@ -1,50 +1,57 @@ #define PY_SSIZE_T_CLEAN #include #include -// python includes must come first +// python includes first (clang-format) #include #include -#include "pysicgl/screen.h" -#include "pysicgl/utilities.h" +#include "pysicgl/types/screen.h" // fwd declarations static PyObject* tp_new(PyTypeObject* type, PyObject* args, PyObject* kwds); // getset static PyObject* get_width(PyObject* self_in, void* closure) { + (void)closure; return PyLong_FromLong(((ScreenObject*)self_in)->screen->width); } static PyObject* get_height(PyObject* self_in, void* closure) { + (void)closure; return PyLong_FromLong(((ScreenObject*)self_in)->screen->height); } static PyObject* get_pixels(PyObject* self_in, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; return PyLong_FromLong(self->screen->width * self->screen->height); } static PyObject* get_corners(PyObject* self_in, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; return Py_BuildValue( "(ii)(ii)", self->screen->u0, self->screen->v0, self->screen->u1, self->screen->v1); } static PyObject* get_global_corners(PyObject* self_in, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; return Py_BuildValue( "(ii)(ii)", self->screen->_gu0, self->screen->_gv0, self->screen->_gu1, self->screen->_gv1); } static PyObject* get_extent(PyObject* self_in, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; return Py_BuildValue("(ii)", self->screen->width, self->screen->height); } static PyObject* get_location(PyObject* self_in, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; return Py_BuildValue("(ii)", self->screen->lu, self->screen->lv); } static int set_extent(PyObject* self_in, PyObject* val, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; ext_t width, height; if (!PyArg_ParseTuple(val, "(ii)", &width, &height)) { @@ -61,6 +68,7 @@ static int set_extent(PyObject* self_in, PyObject* val, void* closure) { } static int set_location(PyObject* self_in, PyObject* val, void* closure) { + (void)closure; ScreenObject* self = (ScreenObject*)self_in; ext_t lu, lv; @@ -79,6 +87,7 @@ static int set_location(PyObject* self_in, PyObject* val, void* closure) { // methods static PyObject* intersect(PyObject* self, PyObject* args) { + (void)self; PyObject* _s0; PyObject* _s1; if (!PyArg_ParseTuple(args, "O!O!", &ScreenType, &_s0, &ScreenType, &_s1)) { @@ -101,12 +110,15 @@ static PyObject* intersect(PyObject* self, PyObject* args) { } static PyObject* normalize(PyObject* self_in, PyObject* args) { + (void)args; ScreenObject* self = (ScreenObject*)self_in; int ret = screen_normalize(self->screen); if (0 != ret) { PyErr_SetNone(PyExc_OSError); return NULL; } + + Py_INCREF(Py_None); return Py_None; } @@ -128,6 +140,7 @@ static PyObject* set_corners(PyObject* self_in, PyObject* args) { return NULL; } + Py_INCREF(Py_None); return Py_None; } @@ -139,15 +152,15 @@ static PyObject* set_corners(PyObject* self_in, PyObject* args) { * @param ref * @return PyObject* */ -ScreenObject* new_screen_object(screen_t* ref) { +static ScreenObject* new_screen_object(screen_t* ref) { ScreenObject* self = (ScreenObject*)(ScreenType.tp_alloc(&ScreenType, 0)); if (self != NULL) { if (NULL == ref) { self->screen = &self->_screen; - self->_is_reference = false; + self->is_reference = false; } else { self->screen = ref; - self->_is_reference = true; + self->is_reference = true; } int ret = screen_normalize(self->screen); if (0 != ret) { @@ -170,6 +183,9 @@ ScreenObject* new_screen_object(screen_t* ref) { * @return PyObject* */ static PyObject* tp_new(PyTypeObject* type, PyObject* args, PyObject* kwds) { + (void)type; + (void)args; + (void)kwds; ScreenObject* self = new_screen_object(NULL); return (PyObject*)self; } @@ -237,7 +253,7 @@ static PyGetSetDef tp_getset[] = { }; PyTypeObject ScreenType = { - PyVarObject_HEAD_INIT(NULL, 0).tp_name = "pysicgl.Screen", + PyVarObject_HEAD_INIT(NULL, 0).tp_name = "_sicgl_core.Screen", .tp_doc = PyDoc_STR("sicgl screen"), .tp_basicsize = sizeof(ScreenObject), .tp_itemsize = 0, diff --git a/src/utilities.c b/src/utilities.c deleted file mode 100644 index 772cef1..0000000 --- a/src/utilities.c +++ /dev/null @@ -1,39 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#include -// python includes must come first - -#include - -#include "pysicgl/utilities.h" - -/** - * @brief Unpack a Python Tuple object with two elements into ext_t outputs. - * - * @param obj - * @param u - * @param v - * @return int - */ -int unpack_ext_t_tuple2(PyObject* obj, ext_t* u, ext_t* v) { - int ret = 0; - - if (NULL == u) { - ret = -ENOMEM; - goto out; - } - - if (!PyTuple_Check(obj)) { - ret = -EINVAL; - goto out; - } - if (2 != PyTuple_Size(obj)) { - ret = -EINVAL; - goto out; - } - - *u = PyLong_AsLong(PyTuple_GetItem(obj, 0)); - *v = PyLong_AsLong(PyTuple_GetItem(obj, 1)); - -out: - return ret; -} diff --git a/tests/test_color_sequence.py b/tests/test_color_sequence.py new file mode 100644 index 0000000..c922922 --- /dev/null +++ b/tests/test_color_sequence.py @@ -0,0 +1,61 @@ +import pytest +import pysicgl + + +DEFAULT_COLORS = [2] +DEFAULT_INTERPOLATOR = pysicgl.interpolation.CONTINUOUS_CIRCULAR + + +def test_initialization(): + sequence = pysicgl.ColorSequence( + colors=DEFAULT_COLORS, interpolator=DEFAULT_INTERPOLATOR + ) + + +@pytest.mark.skip(reason="Not implemented") +def test_has_len(): + sequence = pysicgl.ColorSequence( + colors=DEFAULT_COLORS, interpolator=DEFAULT_INTERPOLATOR + ) + assert hasattr(sequence, "__len__") + + +def test_len(): + sequence = pysicgl.ColorSequence( + colors=DEFAULT_COLORS, interpolator=DEFAULT_INTERPOLATOR + ) + assert len(sequence) == len(DEFAULT_COLORS) + + +def test_subscr(): + sequence = pysicgl.ColorSequence( + colors=DEFAULT_COLORS, interpolator=DEFAULT_INTERPOLATOR + ) + for idx in range(len(DEFAULT_COLORS)): + assert sequence[idx] == DEFAULT_COLORS[idx] + + +@pytest.mark.skip(reason="Not implemented") +def test_length(): + sequence = pysicgl.ColorSequence( + colors=DEFAULT_COLORS, interpolator=DEFAULT_INTERPOLATOR + ) + assert len(sequence) == 0 + + sequence.colors = ((0, 0, 0, 0),) + assert len(sequence) == 1 + + sequence.colors = ((0, 0, 0, 0), (0, 0, 0, 0)) + assert len(sequence) == 2 + + +def test_iterator(): + sequence = pysicgl.ColorSequence( + colors=DEFAULT_COLORS, interpolator=DEFAULT_INTERPOLATOR + ) + assert hasattr(sequence, "__iter__") + assert iter(sequence) is sequence + assert len(list(sequence)) == len(DEFAULT_COLORS) + + for color in sequence: + assert color == DEFAULT_COLORS[0] diff --git a/tests/test_compositor.py b/tests/test_compositor.py new file mode 100644 index 0000000..20b2eb5 --- /dev/null +++ b/tests/test_compositor.py @@ -0,0 +1,50 @@ +import pysicgl + + +def test_builtin_compositors(): + expected_compositors = ( + "DIRECT_SET", + "DIRECT_CLEAR", + "DIRECT_NONE", + "BIT_AND", + "BIT_OR", + "BIT_XOR", + "BIT_NAND", + "BIT_NOR", + "BIT_XNOR", + # # These bitwise compositors are not implemented yet in sicgl. + # "BIT_NOT_SOURCE", + # "BIT_NOT_DESTINATION", + "CHANNEL_MIN", + "CHANNEL_MAX", + "CHANNEL_SUM", + "CHANNEL_DIFF", + "CHANNEL_DIFF_REVERSE", + "CHANNEL_MULTIPLY", + "CHANNEL_DIVIDE", + "CHANNEL_DIVIDE_REVERSE", + "CHANNEL_SUM_CLAMPED", + "CHANNEL_DIFF_CLAMPED", + "CHANNEL_DIFF_REVERSE_CLAMPED", + "CHANNEL_MULTIPLY_CLAMPED", + "CHANNEL_DIVIDE_CLAMPED", + "CHANNEL_DIVIDE_REVERSE_CLAMPED", + "ALPHA_CLEAR", + "ALPHA_COPY", + "ALPHA_DESTINATION", + "ALPHA_SOURCE_OVER", + "ALPHA_DESTINATION_OVER", + "ALPHA_SOURCE_IN", + "ALPHA_DESTINATION_IN", + "ALPHA_SOURCE_OUT", + "ALPHA_DESTINATION_OUT", + "ALPHA_SOURCE_ATOP", + "ALPHA_DESTINATION_ATOP", + "ALPHA_XOR", + "ALPHA_LIGHTER", + ) + + for compositor_name in expected_compositors: + assert hasattr(pysicgl.composition, compositor_name) + compositor = getattr(pysicgl.composition, compositor_name) + assert isinstance(compositor, pysicgl.Compositor) diff --git a/tests/test_functional.py b/tests/test_functional.py new file mode 100644 index 0000000..aaf8137 --- /dev/null +++ b/tests/test_functional.py @@ -0,0 +1,18 @@ +import pytest +import pysicgl + + +def test_module_exists(): + assert hasattr(pysicgl, "functional") + + +def test_has_gamma_correct(): + assert hasattr(pysicgl.functional, "gamma_correct") + + +def test_has_get_pixel_at_offset(): + assert hasattr(pysicgl.functional, "get_pixel_at_offset") + + +def test_has_get_pixel_at_coordinates(): + assert hasattr(pysicgl.functional, "get_pixel_at_coordinates") diff --git a/tests/test_interface.py b/tests/test_interface.py new file mode 100644 index 0000000..530191e --- /dev/null +++ b/tests/test_interface.py @@ -0,0 +1,12 @@ +import pytest +import pysicgl + + +@pytest.fixture +def interface(): + WIDTH = 1 + HEIGHT = 1 + display_screen = pysicgl.Screen((WIDTH, HEIGHT)) + display_memory = pysicgl.allocate_pixel_memory(display_screen.pixels) + _interface = pysicgl.Interface(display_screen, display_memory) + return _interface diff --git a/tests/test_module.py b/tests/test_module.py new file mode 100644 index 0000000..79ad063 --- /dev/null +++ b/tests/test_module.py @@ -0,0 +1,296 @@ +import pytest +import pysicgl + + +def test_allocate_pixel_memory(): + NUM_PIXELS = 1 + bpp = pysicgl.get_bytes_per_pixel() + memory = pysicgl.allocate_pixel_memory(NUM_PIXELS) + assert len(memory) == NUM_PIXELS * 4 + + +def test_gamma_correction(): + # create a screen definition with extent (WIDTH, HEIGHT) + WIDTH = 1 + HEIGHT = 1 + display_screen = pysicgl.Screen((WIDTH, HEIGHT)) + display_memory = pysicgl.allocate_pixel_memory(display_screen.pixels) + display = pysicgl.Interface(display_screen, display_memory) + + output_memory = pysicgl.allocate_pixel_memory(display_screen.pixels) + output = pysicgl.Interface(display_screen, display_memory) + + # expected gamma table + GAMMA_TABLE = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 9, + 9, + 9, + 10, + 10, + 10, + 11, + 11, + 11, + 12, + 12, + 13, + 13, + 13, + 14, + 14, + 15, + 15, + 16, + 16, + 17, + 17, + 18, + 18, + 19, + 19, + 20, + 20, + 21, + 21, + 22, + 22, + 23, + 24, + 24, + 25, + 25, + 26, + 27, + 27, + 28, + 29, + 29, + 30, + 31, + 32, + 32, + 33, + 34, + 35, + 35, + 36, + 37, + 38, + 39, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 50, + 51, + 52, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 66, + 67, + 68, + 69, + 70, + 72, + 73, + 74, + 75, + 77, + 78, + 79, + 81, + 82, + 83, + 85, + 86, + 87, + 89, + 90, + 92, + 93, + 95, + 96, + 98, + 99, + 101, + 102, + 104, + 105, + 107, + 109, + 110, + 112, + 114, + 115, + 117, + 119, + 120, + 122, + 124, + 126, + 127, + 129, + 131, + 133, + 135, + 137, + 138, + 140, + 142, + 144, + 146, + 148, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 167, + 169, + 171, + 173, + 175, + 177, + 180, + 182, + 184, + 186, + 189, + 191, + 193, + 196, + 198, + 200, + 203, + 205, + 208, + 210, + 213, + 215, + 218, + 220, + 223, + 225, + 228, + 231, + 233, + 236, + 239, + 241, + 244, + 247, + 249, + 252, + 255, + ] + + # test gamma correction for all values + for idx in range(len(GAMMA_TABLE)): + color = pysicgl.functional.color_from_rgba((idx, idx, idx, idx)) + pysicgl.functional.interface_pixel(display, color, (0, 0)) + + pysicgl.functional.gamma_correct(display, output) + + # check that the gamma correction was applied + pixel = pysicgl.functional.get_pixel_at_coordinates(output, (0, 0)) + r, g, b, a = pysicgl.functional.color_to_rgba(pixel) + assert r == GAMMA_TABLE[idx] + assert g == GAMMA_TABLE[idx] + assert b == GAMMA_TABLE[idx] + assert a == idx diff --git a/tests/test_screen.py b/tests/test_screen.py index 0f5a789..8118756 100644 --- a/tests/test_screen.py +++ b/tests/test_screen.py @@ -1,5 +1,5 @@ -import pytest import pysicgl +from tests.testutils import vec_add def test_init_extent(): @@ -12,8 +12,6 @@ def test_init_extent(): def test_init_normalization(): - from testutils import vec_add - extent = (20, 20) location = (1, 1) diff --git a/third-party/sicgl b/third-party/sicgl index 8530898..9960b49 160000 --- a/third-party/sicgl +++ b/third-party/sicgl @@ -1 +1 @@ -Subproject commit 853089889f8145690b13c700e1fe3d60c5021d8c +Subproject commit 9960b494d0dd9ce38dd47ac8d35199999551f178