From 7aa1b3d7f5ca0f2bd246b1b742b65dae30749900 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Fri, 27 Dec 2024 10:13:16 -0600 Subject: [PATCH] add isp_tsp spreadsheet --- example/macaw.cpp | 15 +++--- holly/isp_tsp.hpp | 2 +- regs/isp_tsp.csv | 126 ++++++++++++++++++++++++++++++++++++++++++++++ regs/isp_tsp.ods | Bin 0 -> 16674 bytes regs/ta_bits.csv | 30 +++++------ regs/ta_bits.ods | Bin 18337 -> 18654 bytes 6 files changed, 151 insertions(+), 22 deletions(-) create mode 100644 regs/isp_tsp.csv create mode 100644 regs/isp_tsp.ods diff --git a/example/macaw.cpp b/example/macaw.cpp index 0661ecd..e0c7391 100644 --- a/example/macaw.cpp +++ b/example/macaw.cpp @@ -2,16 +2,19 @@ #include "align.hpp" -#include "holly/texture_memory_alloc.hpp" #include "holly/holly.hpp" -#include "holly/core.hpp" #include "holly/core_bits.hpp" -#include "holly/ta_fifo_polygon_converter.hpp" -#include "holly/ta_parameter.hpp" +#include "holly/isp_tsp.hpp" +#include "holly/ta_bits.hpp" + #include "holly/ta_global_parameter.hpp" #include "holly/ta_vertex_parameter.hpp" -#include "holly/ta_bits.hpp" -#include "holly/isp_tsp.hpp" + +#include "holly/ta_fifo_polygon_converter.hpp" +#include "holly/ta_parameter.hpp" +#include "holly/core.hpp" + +#include "holly/texture_memory_alloc.hpp" #include "holly/region_array.hpp" #include "holly/background.hpp" #include "holly/video_output.hpp" diff --git a/holly/isp_tsp.hpp b/holly/isp_tsp.hpp index 1a5b669..20712a6 100644 --- a/holly/isp_tsp.hpp +++ b/holly/isp_tsp.hpp @@ -17,7 +17,7 @@ namespace isp_tsp_instruction_word { namespace volume_instruction { constexpr uint32_t normal_polygon = 0 << 29; constexpr uint32_t inside_last_polygon = 1 << 29; - constexpr uint32_t outside_last_polygon = 1 << 29; + constexpr uint32_t outside_last_polygon = 2 << 29; } namespace culling_mode { diff --git a/regs/isp_tsp.csv b/regs/isp_tsp.csv new file mode 100644 index 0000000..0859693 --- /dev/null +++ b/regs/isp_tsp.csv @@ -0,0 +1,126 @@ +"register_name","enum_name","bits","bit_name","value","mask","description" +"isp_tsp_instruction_word","depth_compare_mode","31-29","never",0,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","less",1,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","equal",2,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","less_or_equal",3,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","greater",4,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","greater_or_equal",5,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","not_equal",6,, +"isp_tsp_instruction_word","depth_compare_mode","31-29","always",7,, +,,,,,, +"isp_tsp_instruction_word","volume_instruction","31-29","normal_polygon",0,, +"isp_tsp_instruction_word","volume_instruction","31-29","inside_last_polygon",1,, +"isp_tsp_instruction_word","volume_instruction","31-29","outside_last_polygon",2,, +,,,,,, +"isp_tsp_instruction_word","culling_mode","28-27","no_culling",0,, +"isp_tsp_instruction_word","culling_mode","28-27","cull_if_small",1,, +"isp_tsp_instruction_word","culling_mode","28-27","cull_if_negative",2,, +"isp_tsp_instruction_word","culling_mode","28-27","cull_if_positive",3,, +,,,,,, +"isp_tsp_instruction_word",,26,"z_write_disable",1,, +"isp_tsp_instruction_word",,25,"texture",1,, +"isp_tsp_instruction_word",,24,"offset",1,, +"isp_tsp_instruction_word",,23,"gouraud_shading",1,, +"isp_tsp_instruction_word",,22,"16bit_uv",1,, +"isp_tsp_instruction_word",,21,"cache_bypass",1,, +"isp_tsp_instruction_word",,20,"dcalc_ctrl",1,, +,,,,,, +"tsp_instruction_word","src_alpha_instr","31-29","zero",0,, +"tsp_instruction_word","src_alpha_instr","31-29","one",1,, +"tsp_instruction_word","src_alpha_instr","31-29","other_color",2,, +"tsp_instruction_word","src_alpha_instr","31-29","inverse_other_color",3,, +"tsp_instruction_word","src_alpha_instr","31-29","src_alpha",4,, +"tsp_instruction_word","src_alpha_instr","31-29","inverse_src_alpha",5,, +"tsp_instruction_word","src_alpha_instr","31-29","dst_alpha",6,, +"tsp_instruction_word","src_alpha_instr","31-29","inverse_dst_alpha",7,, +,,,,,, +"tsp_instruction_word","dst_alpha_instr","28-26","zero",0,, +"tsp_instruction_word","dst_alpha_instr","28-26","one",1,, +"tsp_instruction_word","dst_alpha_instr","28-26","other_color",2,, +"tsp_instruction_word","dst_alpha_instr","28-26","inverse_other_color",3,, +"tsp_instruction_word","dst_alpha_instr","28-26","src_alpha",4,, +"tsp_instruction_word","dst_alpha_instr","28-26","inverse_src_alpha",5,, +"tsp_instruction_word","dst_alpha_instr","28-26","dst_alpha",6,, +"tsp_instruction_word","dst_alpha_instr","28-26","inverse_dst_alpha",7,, +,,,,,, +"tsp_instruction_word","src_select",25,"primary_accumulation_buffer",0,, +"tsp_instruction_word","src_select",25,"secondary_accumulation_buffer",1,, +,,,,,, +"tsp_instruction_word","dst_select",24,"primary_accumulation_buffer",0,, +"tsp_instruction_word","dst_select",24,"secondary_accumulation_buffer",1,, +,,,,,, +"tsp_instruction_word","fog_control","23-22","look_up_table","0b00",, +"tsp_instruction_word","fog_control","23-22","per_vertex","0b01",, +"tsp_instruction_word","fog_control","23-22","no_fog","0b10",, +"tsp_instruction_word","fog_control","23-22","look_up_table_mode_2","0b11",, +,,,,,, +"tsp_instruction_word",,21,"color_clamp",1,, +,,,,,, +"tsp_instruction_word",,20,"use_alpha",1,, +,,,,,, +"tsp_instruction_word",,19,"ignore_texture_alpha",1,, +,,,,,, +"tsp_instruction_word","flip_uv","18-17","none",0,, +"tsp_instruction_word","flip_uv","18-17","v",1,, +"tsp_instruction_word","flip_uv","18-17","u",2,, +"tsp_instruction_word","flip_uv","18-17","uv",3,, +,,,,,, +"tsp_instruction_word","clamp_uv","16-15","none",0,, +"tsp_instruction_word","clamp_uv","16-15","v",1,, +"tsp_instruction_word","clamp_uv","16-15","u",2,, +"tsp_instruction_word","clamp_uv","16-15","uv",3,, +,,,,,, +"tsp_instruction_word","filter_mode","14-13","point_sampled","0b00",, +"tsp_instruction_word","filter_mode","14-13","bilinear_filter","0b01",, +"tsp_instruction_word","filter_mode","14-13","trilinear_pass_a","0b10",, +"tsp_instruction_word","filter_mode","14-13","trilinear_pass_b","0b11",, +,,,,,, +"tsp_instruction_word",,12,"super_sample_texture",1,, +,,,,,, +"tsp_instruction_word",,"11-8","mip_map_d_adjust",,"0b1111", +,,,,,, +"tsp_instruction_word","texture_shading_instruction","7-6","decal",0,, +"tsp_instruction_word","texture_shading_instruction","7-6","modulate",1,, +"tsp_instruction_word","texture_shading_instruction","7-6","decal_alpha",2,, +"tsp_instruction_word","texture_shading_instruction","7-6","modulate_alpha",3,, +,,,,,, +"tsp_instruction_word","texture_u_size","5-3",8,0,, +"tsp_instruction_word","texture_u_size","5-3",16,1,, +"tsp_instruction_word","texture_u_size","5-3",32,2,, +"tsp_instruction_word","texture_u_size","5-3",64,3,, +"tsp_instruction_word","texture_u_size","5-3",128,4,, +"tsp_instruction_word","texture_u_size","5-3",256,5,, +"tsp_instruction_word","texture_u_size","5-3",512,6,, +"tsp_instruction_word","texture_u_size","5-3",1024,7,, +,,,,,, +"tsp_instruction_word","texture_v_size","2-0",8,0,, +"tsp_instruction_word","texture_v_size","2-0",16,1,, +"tsp_instruction_word","texture_v_size","2-0",32,2,, +"tsp_instruction_word","texture_v_size","2-0",64,3,, +"tsp_instruction_word","texture_v_size","2-0",128,4,, +"tsp_instruction_word","texture_v_size","2-0",256,5,, +"tsp_instruction_word","texture_v_size","2-0",512,6,, +"tsp_instruction_word","texture_v_size","2-0",1024,7,, +,,,,,, +"texture_control_word",,31,"mip_mapped",1,, +,,,,,, +"texture_control_word",,30,"vq_compressed",1,, +,,,,,, +"tsp_instruction_word","pixel_format","29-27",1555,0,, +"tsp_instruction_word","pixel_format","29-27",565,1,, +"tsp_instruction_word","pixel_format","29-27",4444,2,, +"tsp_instruction_word","pixel_format","29-27","yuv422",3,, +"tsp_instruction_word","pixel_format","29-27","bump_map",4,, +"tsp_instruction_word","pixel_format","29-27","4bpp_palette",5,, +"tsp_instruction_word","pixel_format","29-27","8bpp_palette",6,, +,,,,,, +"tsp_instruction_word","scan_order",26,"twiddled",0,, +"tsp_instruction_word","scan_order",26,"non_twiddled",1,, +,,,,,, +"tsp_instruction_word",,"26-21","palette_selector4",,"0x3f", +,,,,,, +"tsp_instruction_word",,"26-25","palette_selector8",,"0x3", +,,,,,, +"tsp_instruction_word",,25,"stride_select",,, +,,,,,, +"tsp_instruction_word",,"20-0","texture_address",,"0x1fffff", diff --git a/regs/isp_tsp.ods b/regs/isp_tsp.ods new file mode 100644 index 0000000000000000000000000000000000000000..ccf73e1d4ce7277d3c7f8c918c93f7f460e50ff1 GIT binary patch literal 16674 zcmb`u1yo$g7B)&k10CE61b2cZf#BA-y95ux-5U4Co#0LrBuH=z9s+~_0Xn!7EHnnfu;b>lLdPbxzg(>eQ}NTTbn*s(=h2L_z{0A!T@G>4w_zM{yt_A>IEF zw~*|u?ajenPUa>~PIlI&CSYqv2TpefGY&@+S8G=eM<;U!Ge=W5dvgachpUr|xrv#p zmAN@s^)HwRn12^CL`}lc!NS_o&E+>V*B6{%M@Ks+69;oU&VQz(`WrfHdlO4@S59$j zu)T?s>;E7o{~KZ_7e`AMb63|lCNBSj^6wtk$6L z6>I`_`+s=KzZ>nIssDR!e@Asct^ZB+cf2$)H8r<0N35sg@3R8}fxo>@2sZq?U?OVv zCJxpX=B{847c+~Yq#=jkXSgBzLZRlv(_)+`C@#zc%{FD zhr?5TjKC~jH~P_Dy=M@-P~{VyslnJQHUG+_Oi)hNmXB&1+uB&2`sfWKqkZ@bYPY{KDbZx^dE=rH#T zx9yA-z@rmI$gWRI!zzX?Tx1m_Am$LJ=%C5NZLO-gcI$TnHWE25rWoGYVJlrZ_2vGK zaV{;`DkZ0=2GABLvTv8dX?5h2Xg!pP3EcW|lnFJeQI9b^q54k?BmlhX!x1LPuxkTd+>&( zcP_E{h7OpwN=(*1CQ!i9f|Gt+qD+pdC1k>^vy*XstNyl{uitCfMVS|+`5kjIVP2sD zOtVnv=giX$+guogt-hZq8T+Q!bmFo`=fbsbbU)@UQ&=RYGp)aKR7`_$2JJFNWsQvO z*k)tU$M4|4G)B4Blj10SVcvEw_bmRxqEoJbH{_6r5rNOTgtfRd!cxa&MH}?kX>$E%CD$xMNpY;Ng{mE8 zf}fE4jN`2K9{mvQyz9=y^1u9*#zY3l52y0mD#D8kUH|^->z$+7R=Ox7rt1YpBwJE) zZ#>~)g6J3K&(~_6@!Va99J{M?-0`~27jE%KHJ+4gp|X_W-6!6Dt&~gZjgN0{_w!pU zAGP6i=Nv;WMEDtZW29G?-@xgDK4?Wu1uPUzvq^!uLvIcao_*Wflk)PUwe>mgtm^bX zO63#Re(W0b2B)*|*OE#D2{v=|`6DmO^rgi|SKI;_b;;ES^4f5tOdmGI5C_+_(e*G@ zsqJFz+Vy%o{6PXYp(p++ymbK`w=GE{hokHjfi;?xMPTD>`2>X>8_O5p0y>2<9ORxT ze+ZPHEs%r=FolO!j-<9&&{=wcC<-~(kg&aS@CQoE+W%tF-Go9OljKr6BS$8AquWUDd`wEJohHjs!+7AHR?khl>e6OwzWqzv}!(6egVwQ+uD>!r|Bug_25 z9~xov$X*%-n!zKM<*i9%f6s7?++I|2q>jDLw#uDpT8tG;zP||0pzi6JvNg4lx~>k= z+7fD|HSafkjMK5>8|({M?!E~Xy98mP3Ownxg9qZ8$Tew$d+PEjR*f)PtqgeMZ zfc!+dxgH5v@V&YybP0#VTJs7`NJVWk6KP(m=3AOy>|80I?w4C0mb7zzfC<-GjaDae zN1?SQuSaXs`tVxN_FOYU<6XnPd)USmF{F`}z4PEFUfG7}>}C52wtIZ$8|y3_=3mG@ z1!pb9T1+HAX)2nByYu*z6wej1FJ$Y_m5!I}5IV(F;t(e34Ct*ljrTHOlPKgr{nDWm z>u$81Y#Pl-8-rUjP>P~Z)3NxFV#>$kdEzRgg*JqEdKOFWfqW#NXUQn?dSx)xuMntx zzRKGymzyFLOBRefA?k1VN9aTGDks*8U-y(D>6sChqQg%=;J4eOu9N9UghWrTaGTrw zV(7~@{5dMqV{8 z-rqkd>}c$}>-b8E_w;?gmaYg^bh%1*_lmv-aIkDI=EaffK^**h zhCu(G8whW6H((z^DKgw`;lgb#o+GghmUnq)o>e>}=KC6K^C~~njbTH#G9h3B@$q&45q*WXx5;dG<)EBCa zaGlr!+l-RlZ@BUkD%;pNuq!>~2n__nEM&o_(Olc9X$dXv4Ik7&wdYj0CSyprj$B;1F1quKLYGS`R{z3w}M z*j&e$^B~gDb^RaBoI+!dAF2hq1~?Hbd^3S%hUo3i7buXVN$8fo^xzVXydqESR<-npDrQZ4gcK?V(TJtRuPYLlI3q z14Du>k;dsOelU-FjTuOU=B`DQ# z!*QTMn^Q$@8>hzuUgb4{es`GfcV&1z{&2nu=<&EgF;?#xo_D#J7)j-t(lfog^<8;T zXwAg0M-(BW`wp2Ob>k{hg)-w`S0g1nISPN~s*~PtY_BnYgNMX?%SPBYo`N&?qKjwR zgnBwc;%&~>PGfoCTJsh01-joa%G_tgJT1+XAhm~Fs?c`+SwXK{-GQ2ZbIaE^Pj#E9 zj%VA~r|?Ohn@?+Xs-sRLpGyA(&?{#0J!z89IQ>>TcMHfW)%o}ugwE$sCCS%KMtysX z`#vl+X1PKl@S|`9R>n$4n*p%W^F%f`YPn(2wK#QQZ&Kx;_raP`Am%Wi>h%Q+sv|k` z-hLyv)x}rEgKD|wwqEUJML$`N1E-o zNv+>o4fSzp0Xw1)KZalj{W@(>{O6un)s;(*Uw5)z4LYB&Gy`88qQ+cfT6NaPYraxT z<9y5Mn4Ds*74K8NUVvPa43Sb7YYng(yoeLvMHZriwuXZ(!{*k?$*L>S13kKYv&_he z4XZlzi#Tus>YtFb*KNs2#jgmBeQv%bq@4FdYSpT?Z>NLrUeXbsUk19DTg9JT?>OHO zp&tBtu&ez&cZ;Gzpdz5&rYgrrtkuVAE-trOXX$rBe&Is*+rO30wQcuLUkUSih5lx>K^gkk+oX&_HfTg@)XIE109EC?W=acz-$D57=O6(R4d-kQ4xK7hiA^n1GJjEp0Tr(bHVH5cZr{!v-kIof40iw zraC;>9|=8M(B#VGdI|6_4#Nm+^>I>JqiPpxyGF+N80cYnSgF3kW2i)S?jp=K`*7Is zlUJ^^ZZeSA<^kLYNjQTkGK(4#T6)y;I*1tRK)RLTTyj zNyb{xLD0Nv=^i-;`kLw4X)vHVq z@dynj6z*`toB~x*NA@S>o2kpxbRh94dBB&K4y+59HVdjfG;VQUO0Hr1R&s7}#jm-n zM!C@$RIub;M9@Frb53&9Eq~b?#iAr0kQKmK!B{w}%eLf+~r=7M& zG*N-gT~r5dJ7=pH9F4;HA%xBH0k}R)%6nm@GruOBk?;YDVwbRY{-DI*<97}e_63x+ z*B`3aDhA)Uh&g3#X=LS#m^X7&(opOQ)==z7dWKOqE_&QGCR)$?XTpvx!)8XKdYaT{m|qx`K*?B zDd}O-;B(aUwI>f^>~T#EKRO^um7y=-%pO0lS$K{e9Uj<9pAARyzPO@VoES86vi~9@ zL2_CYK|0l5+&~*j`pR@HXf^{&RjUF5c(bE_imsZVp;`fvr)MuDk8IRR0yL$EYJ#F3 zqZQdjyz77dw276Gx89IHw2le>;$1(cAK{v{rt`}%P(~GqBkXl4D!$qgA5p@R;l-{s zvRa?m%w`6Af#z${1~R4kOt#(C0rePp1y8T$@>dSLj~Csg?GzeJcQyA)SjV;ZWjhU@ zZg_aQd6f;el4;uvA^)-wxp$(Lf60M9i}VN1o}CVSJoq1g^Y z{eV%Em9q`MY0hg_z^_+=)H}_Y%flZ*8qUV%sw}aQaLHV$tqBg4!?!Fb-il{yMSOh^ z+9(#qlB*=c!AefES-alF0&2_Lnu6xBm6i>d3$Cpnb}|;eUu}4>$#?TKoP8YkT=yey z_b`_xG{Z~s00nnvQLgcCpF9|uU_F(ayY|l6rFUS>r>A=3A!O%qP3Yby;qHOo;6E~5PyD7*`c9Pzb-(U<9v*$*uRriM2<*+*02OpGMsUmoke2JJO4X;k6a|IAfBG>Kirk)!=~ zr@3%u$!iA&>1`nyUB~k>S(9bUU|Z{ zjmDAsiHM}A5P{%ayUH{%OVQTd^Y_-~ssVk?`=37a%wcWbY|BlzEOEz=PCs-?2BcP> zp)ynY+!5d`-t`2Zi6S>y@ff%~jyJJ_~o ztm+ABtQd_kUy-D{?<`=zC2_WCM~9KjD=2pBy_%y??!xIiTbE8_01J{>^`h|SbEDClMrR3SfMGy zOWaS@B>ocntqK2pWEzESXH4K_eC5n79NQ>@L|N3(Y#e zxi(MFs-cFW-n}d=KpOfoyW6UpVt>bV`pFSP%!7bl!P`+4!k-cFBASQGYOw#Sj0VbsvM{X(`+j+~!W3>1_uBw>@LPwcs z;fs`Ckt8_YTP`lZZSD%rO0VWvlo^Erl_Nm-LEKklG5HMM@r?=#k5rZU>}8X8sK*RE z=%d9v6k%PD*Sz&NHn)@+**fcR4MeiNxJ*}+3*HuQf@Vd;UfOf3C@YiAjGd@U`Wjf( zxDM6!R&;mc#9m)IySX=1yeZePh^n{^c$3*UWjJTzcfGf{#deYB=RjTCIHSMN_<2}J zy_stxK}2teb@t46M0m=V?T5jGCnh@;RGH?AIL+KfX9x9%Twlur9bdnhrw&-n&maOd z&F(IFgm8j(9a-iiV$=rhxx?zI97;-KY0*6m z6(W9?b2mVrc*i}~UDJsYSy~xEQgp>YJ;g6l!%}sXz&`MZmGp|cR*C((5wz@jVA?g5 z(9dEw>mN3dSWR}Wx170PfhEYcdK~xhBrN{r77AIgTI{DKyaK#@!p>R>vHc8L9yKnh zEEz5PPsOkOuB47vqki0Cj)@X3VLmaHe4yxUSb$#wCx1b0D$WN9Z7yo#!AoEKl#DX? zLYIIMEM>x9t&*?&2`kMhbhNO9l00H7KN)vvWqNtW4>F=V5V6H)976Qx7G>Nhy!w6mmR~(c*j?3Fe?a8lh6g>&8lX6sjk>@_ z=elvbIsCK|Ahn7b+T=-+!1}Egkn`t=(z4U=Nh_J zGSIzC)8uX2uZbv=;wnc1iJ`~mgH|!(SE^)I<$2I5uFu9vr=N2JA*+_ws}?L-?gup; zjija_62(|{E@jvc_@Cvl>>FjvJ%%tkq-bvqX-_oT5_D7>ED2U?(D7r|Slzxz^%vDTn;+-=t$yfS*&(M9w98I(uHTV9O83rlC}G0@mPM|5VR_r* z9N&)=f_&Oj^C~fPf`RMX1K&5*eUf5weaT@>TL!WS+G#WSu`T)8@yWW)>0VN}VA*a*U}Ae0(x8GCDds zR#sMSZf+qVAqfcyd3kwtb#;AxeN$6YTU%RKS63e&pWxu&=;-LAq@=8@tb&4q^78V! zy1LfZ*6!}^fq{YX@$tF2xz*Lx?d@%Zez?88MT~QIcbAqnl81yuPAMk|()66&&53+d zPK_%CTJ6{uyuLH;AXQX+qe!MPW;wgeZjVfBgqFO@{zA@rwMQ0`mr}nin{UrRWIz|% zm;#1zJ72i2)E7?k3f?*um4J1XqJ$Z&cL_^3Pit|M1jF;5^l{v%4!}<6#_NxixX8_Z zlBe&|yFAsITXpXnZGmnSWwL( zo7EwQjmPwyu>ngk=|$B1Gu~S3tGr}xQ?l#QqJGRAsoL;7KCVJA-gb!;82)ff z<0#W+>(()v=f$q6^7-49{o>YK!J7ixDkmM8-Z>d$gJwf~^{h$!7-j=+tR{mtGeuHZ zwft!WEk2@Ig_r(nejGPyF|C%S5=-3k$7Lf9|hY@KXBh1e5g#)2x<~ceQ&qLK(xcv z>(_P5`ct-hM>n&MMtkmwD4TWQ(xsy4<7~HO&*GFq&))EoHDxa{h2ByFdjFBAhFH|Eai1$MIJ$N%rD`@Ta`bObKYrscx#(|5LDP=Y4$-obCmBUd!<)B ztTmTcbVn+euY|?J-ZDeJU^fxKGbLm78L)b6!%YcbY@UFlFnU($`&7-rmX_ z<^9>?BEOQx{ebgdgt;8ZmF@}8vboxXQph{Ld$My2);nDTp7R^zLbF5He^PV`yI&`h zmOAg9H}Fkf*+2$!*MHSG#HgRotidRUNFCl0((##TmzgGKnkKv3_#DYFRD3&BE<6Hb zIeLdN_vClD8;l%fOQVLltFA^HjDk_}1(+je`rGxPk(gvlV>1CvAgA#mk;asd()?PV|ZZe%&w)v*`ttp&e~rW+oruQ4abh}2qzzg z`6_kaT=gj2G4te0Chkd&y6@ifCPZySSLW6yD{$$&<(x?BJj<8RX?tqDH{YD9v&x>A zZoDn%nx0a1nN^Nz#yj*1O!2Jdb5VimuK5$(pX2H_y=}h+8>0lnPmV)5$9VV8C&$hh zCTTNISJR4*qZ5C5iG6Vj&nIz=9lbs%Dl784(wENO@7KC7qf+3|4LD zY^iqt25_zpeU_e~MZwevgpLtYn^|7_{=iY4uU($*e)_Ck<81dKjUb6TivFh# z0-CXT95Z|UnTo>5O=73K`Q}Cq1w8Fs(gFD?x>C#h&AjgFdUm16NP8)9VmSu^KMPRZ z5j~eZ-)5|BR~il5ki2%>x)K_|t;J%o*=Fmp*pnXxpD+m$2nQ-qM5wL36TatHDj9pT zIb?T}Zc5V{4Oq>i}_tdFGXrd5JaMoUb!p3ztAURDMmqsdhD`!P4&19BH?$&*?MOoAsi>2cuA z*O*r8dUE*{?WHF5rd*-g2C^;b-+$$=!=8MQWt2Re8DY)8Xa*k_IjKH6E8I4c zi#kLm&19nRU}OP2l|?<|Cgj+EHmZqBA=r^xj={dxgvmg}Of2smH~NK*-8#*pfWCsi z=L5d~hZDWgS8`;T5_4EjhhO7AH4K(0Y8Kn!)FB zZ4)Ea{^8)cPi48D>L~7D#ol@KQJYr#u;34|86~yZuXZe^iQJ?I*A(jfa_FM^jay}r z0WqUw$g`)Kyn-^N_4zn5aqQz6QEm*@j~cL}z8NtJ<&i#-7n**T^ek@RJkU@bMVng= zJvjQCp&KeXhlT`21{-u$;*RQ7@J3z8TXb>tFi(f~K87*srSIwq`P#ai-gmwAY#}>0 z6ZsIQZiuQ!xSfB@Eh@~Xk?SzAtp25RHLK=_!^)Nu%8M*=!H$vDPt`PVU&+JD)Fvlk zXPnY<5Ba_6bcaiEzK`fs-V8$6CQuFGo@b^ySu)nW*RY>X%g^v}I>=*~S6Jrb=~o2g z1&1P`oFqa~%NV)BI|0uW`{orC2~ej$ohj8#u=eb_zoFnL0PmbPV;=XQg_;sypvFYB zB&Bb2s<3l^z?3*&Iw=*S`oTiAT?vvO` zq9$1SIN{MIcm(v25!2JhvKZk-5sgwB?;!~DC9hI^k~ERc1g73p`l2(|yiP@{ptX!m zLM1|h@|5hPxiG(M)VLO&w3j{12Ot4 z2B1K6hy`Y5ov=eVl!3E#G5`uAYO6a+$gm@Wk_=$Md-4%TLT=Yd64s3Z(Po7A)Jo7O zghE~IP8lGTleAWIi@2a}vkMx?Fb6J}TLy-rf@&WIt<%8+JI6waJaTctU>uN4tT=2q z0{SxF#yApMzE5lAhzAzB1=Gya@#Q?03agB4LCbX2(mqK30o<; z!G}yT0{q@xP602!DNND9zmm_oKh9E%(+psTIE+u;5rB?3aqEdh#bC~XeS9)7%heCN zA0%PDSP&7nC=XhzC;O4TTg(f%AX^#0E{bf*$u1rk?F#+SLoyY&-iHMA-WA~Ii4U?> zeuJ3nIv!}rLMR?Oh63;tisKNbg9Fj0CR~AJ;I?RJ!4*&-mkz%65QK3J=YS|L1wyIJ za3MyK&|W&8b{hv?30Nc7eD{R$WPx8KbmQ8G6ttQIwZuI>lN~35RQ3w<-1y*vm4KO^ zEOPRZxW|s-u$w6$nTW%-2aVNX4e)Z)ocAlr4I6}KpB66CCJy7}u-YC)+0|8{v)bSX z_-#V`c_EGd0MM!na=Za-GZAB!Z*7hSE=G2$LSwa$h6@&yfXM{yHA5SSfOXprthPfb?eyLIlR$%Udg+N0G8GnT8+l>m7)FU>~4GVxhR~mL3 zTXW3<5GETu3xl?1UpbK-%IxFKJjJ^~Ryj0UPZ9|%4I1!RDLnLj8G5wANw4Ln{P_A3TDRU!|(1j&Jb z-WmYEb;xN&g&`~e2Ncf%r^MrC0<@DtD$|HpA{t#mcftVnwNP`9q)@(FAxP@4&#y#i z;QMSn2vTv_5Cen<28xBpj`tVs{18Tx<5OTJ!r}e*O+*hmT<&HlVm|Y9M)Ha3 zv;f2k;&Ri#7w-EIKyLT%3Dyv#zx8qqyocpL3=u#8O2R<&>=IrnqGw^aAM>6mi^BI^ zY2bIijn9F=xbJn0`hQUXH@tZNe+-wHOwS<4^0tuv{#`><2=LfiYX>Xb9^PCIR!L z)l22M;^-GQ5@8SEVG2@KW2M+nG`R49bJsP;7}Z!-#T#CQq!zJ_JG_*+FS1__wE1=^rMatv)Y97HTx*HP;x#PMIgHzH@l8_z&uz^G; z?HSaCQje?}@Q(<2r507q*ImW;B(8vXeydX5@#R8SY_^D4h?HvrLcR%sAFo|8JE!$ zDb5u8lz4K0k=RmbX1c#OXE@ZD}4Gx)nvqWwPv$C7i;pnN^frKSR`mZO3KVJid zbXnvVoGgqV>Ti zkL>L1A>{A#X)|s?pD7M_I4KTeERF~%$x8J+C<^U~ui^TT419tLYf}3fn(gVGHz&FI zeMhJz>WMSws$kCQ6$e~KR!Ymr<0?X3{(j#9FYEBY9ku}W4oR3XXHN}dBqv_|$;tYq zHGo}HtwsT0hzBtWhIWSo_1Js5hAz9r$rqc5S3XL@x{86bE4dN*<_KTsN)oo`L%ib2 z1&I^I0QFT-TkUEAcF$Syj^9e|;(#1miH~)FdWWMP)Nqa&9EiIY)47E$C?E)`ixITP zNekZ-1d{0m30rXjFB3XE*x?ueL;EOb9YVKR)5LK>{LR@B!pc$aUQ`v`1wq%zK~;tk zrU>1jLv3}aEcYkDchiTEQ?{T^B9No+IupsUGTyPEvCKIa(0iH!;=if~3&00Cek87^ z2DD%3!F~nMz=fNkO@vXFr8*bplxvMOsY9y{_Kvwv2o1{mn z|83R}eC^i)tssekS>;^H$$4}Tb7P`3K5~0!-25oHF!h_ME`4YyDtxpy+Ve6e;$uXN z74Vx_F7b2%!vEA00*`(02-2nZ*FmGXnn;Pn$OnB)(@crRjerK)a7}4Y}m?g`1OfN8R zL3q_031|Cc|EfYCV~ooL#WZ%9kbo4+Ho42gBH7<3 zdC!~O%Jlf4j9J+2`heb=*F} zoCQoFc0nycsZt!5Ft|fyI@K&w!7+|uu6rjj_YOdGFc{PQ#c=KqP9FWA!rx-lozn$G zhTF?5J~)7RC2pLJG1H_ssoEy)BuT)Q9B*b5Hc#4gksGw<9ankW_k@-fE z1dM})Z(4CThlJ412qlFu6|f7Z%1sJ}0Np(e1%jr8{N5zdphf8Qd&43C3vwHLZ*;Uu zAxx25H2?)ZCAqKn>_io%m@>n)25f?%Kx*#oT z^`}^7lHMFf+>2CeIhw-rU)izVucEtN)4x#xgZ6bsRXl&|Vc7zGw0DycrxHoOaHd2^ z1FvAX37NvXO^xduL{Nnkwgylv%OsW%p)`KwT%kJ_K!_c=B zw5iP-4Tf+dcQP9IpxKm4S@kP?Mp;gimL+Oy9qKS_C*AepmUQ~{c}H`id5cdwrJP?H zP{IM0(yF!F0|JR&@3pPd>>u;g@=p^D=SosaQVi$11b7cjbbCnf440N64UK6f74iAl zqxDAVY=!v%cBFXXUGcEj#d) zu4|pxFu>JU#kR-<#jw{#b#mb>^Aha$RlJboA3_M=mPOTPA ziVjMPfC8B522CVkyCG2aLYl+3k}O<>tMc@h`EIjS83UhAO~e`b?2_Q4Q=znKkh_O= ziInsJ!qXvAPLzCNF6FlIsKUW^@m#!Pc24tOqqROii}IN&Mic#~^E^v^R*E|FS64Ha zB8Tv$WGsN*ET#}2T$PlnC*2{?w33d|&7W=|L@)fxYs&P??gS~5>&1odoDcB`syGGw z1=-B9@#=eOkftCGaX_-qV+}__&BBoKmA(7P!RS)42>GNnGcWI?_Ai(t`HIVp8`Y>vIU`1!##6d!g9#c|kA&dpO8D2td?)m~@v6k4 ziwy;DxW}`^khjcD_4fJ(2PYB%~@z zS{tS0+p@iR|1uRW!|4}DA$$H<5TlPq^HQ)`gkM;mg?k)ji$?=5@D71iF(CA{O&l~! zil?0t)Q3>Cbk^=0z!vrdrSLgAIJOA0zbK?KuCO^nR?{!%yHP?39mGO~*6P~tdIRrx zBa3FA#_ARcREG!h8KHyQ4m!YZJFYgBl1AcUcU0DXtz0WxopJ?v6<4cMTiMIe1QMWo$qLmsqS6 zgPp&3x$2CC`en9sQkN#^6!NFb9`Vyn13}>d$e{AU1L08vJP6~*Gu=dV_1JgEeGG=N zPzD-!m4(XBoW&2HYCrDo?IL8oMt|1#AlzdmZ+uWN=KcKren2|JU|lE>j-KiWs1yiz zi4Q8k&^vO(JFdmZT%xra6syi?Z8UjUFOfH~+mwf>!pd}Ab9v(Lx;D!id z-8-U`gbgZRfl z`$iCWC*oL3i0>as2%SN{=?WBh6$~YD2m^ws2xzPzKKEAUCI&)pI*R&uqd~N}=v_b~ z1c=F`AU-Uex?bDkadY%^^`qQK1N?R&xz&$o;6y+H-!(`sJpmPA|#}-G>nVnSQ8B~W4z-E4DS#3$_<`I?}rRAl8t~Oi^KG3;SgMIhW~aj|7Dl` z$-zu4?BuyY&VD*PhMO~}h&VGul9N)FtQ3C@`R61(B1A7GDNPW&oU%0Mzmpvi5t0>2 zAct8#ambkR#XXO9lecE9b)2BSy>3k|ZZ2636AK zkQy9aab$lvwv#JOEwFtOY=!28kM+dnWQ%>V9FLMekpjF&`i?C#Am$EV{>b@UKal1* zB8iR-aqO(B@ZcdK(my9E->=Uf<@dDZ|D^h(2NKeKZtovO6H)zNiOGK*{SP`Mr2Ew5 zKS~Uu`ky%em8ksBVE5^@f0TYi^*_P>nz;PWNPnFkGJ=i&h4iOH=6}YyKhgiAAcBJb z3+Io-=6^={>(e;@4a%Pro&Oo$8r&8L7Bskf;3b!Lb@$#( z{ng#mGWE|)&2-n77YA5N0HCWX!NB4|K_Nmx)wpEnCZMar{-)q#0N39PC0Iok8TH>* zU@QP7I0u0HkHvcc_8$QY!1EWAu*moK03|qG8Z{vn@y~d=;D7a$;1yZ)zrrFSBK|db zgCVpq;Ez`(3>^q#q+WIy8533(14%EJZ7PEbOp?s1OpJ>s2r};2r>Vk#bDcuBcDK^e z^zsoq*e5cms9d5>$HWc9(q@|dFnzmP;u-8vfl=h=tq%RUF<&_7{2a@d3{8FZVo;&1 zWxwQ>KGtddRw0LOfj12+@jLw3^5S_z(DN%j+yc)iA#2d*D*bt94T`)SBcKm74$B>L zs!H9iUS!mKnTt19B6M)5+MHRsD(PqIs;{SZBQ|Qdo_=q} z>sTqP%F-;Sj`-R6OdmWlo0v)>LV}kuqCFwxn$fj9#VmBLa{QTS7|QkS!$jsu$#;=v zCo=&69UstPIf5JT%(A}c&>|TZsm)8ZSojq5;leLl))Da$+|VWA*-p*xku}4GPG0j< zk!d`CZth z5tGr!(B{!+GxoEu9p7daFj)0!WOz0^#caYuj-!Ps_~NWo0~P@0EQYE+g#4JmAfVQF z4`U?b$5-Xzs!9lm$}@L^r2r@>6&NU}Kga0rodkQpv4Ch0AT%Xb^-HW1iAuCz7mmP6 z5NOR;`bG-qK>weLou=VgX;APu5S^|`!*8A;NmSnr`C}Ti8vvpi z0>c>w{2)dVa~XfHTPxoRD_uCf@RL&X69kU)kh)p z39v(pUa{CTS$E(~|kN*)T&HYd6W30qTU zT$B1HXC51KyyKyo2lWwV3($fpuScgYw~VKO5p?0T1eBRsk{B)H*@ z=-5XEeZ#=MM>Mjuj_OJK6o;AkmL88f!oqFhdjE2!p`Lr3Xkkz$cl8=hRnF6IW~r@V zg5i67ao*tYqZX>jQU-i_&{7*45v$>-1xwv}Q$IZ9ErN0617IL8-uw_#`iH=54EHN# zc2F7p466~FkOE3~8f-SsjzgnA@I*S&f}lH3&(ZSZQ7dO>cab?6vUSt_Og2XH{qk1} z19CH|nyd*Vnf>*lcRCm$^;j&zsY!S{e0HVM$|dcsKP=qJCfDmOrAnsgldKzj$yJh( z_Xd(MbKQCXMKe%pZjqY==8<7ec4jVZii_J$|53gMltT;D)CQL71`BenzPG36T- zlEI)?Hs&VMP`r6MP#qe0Ktfvf{a1n zDB_HmnFWfp~9bYO(Llkeopq^sHi|7(p1#zISt1b`h@`Je3Pd=o%Y@y@Wi=5M@TA@{J`!^(cag&8daW0{{5In!8k zO|UH+!g%Gu5c#ZeR~sffRW-aVY5Qbv6@p@I)XdKri!Ym;xRh?0Piv<=M@v$Isa$MO z9eu7Z_vX2C01!-kF6azcs9(;6uWer?-CoJ!X*EL#(7fz{wM`fl-ynods}TexJ25Q7 zlJ)zd;@63u+a&fQyXTK^d9U_sZWW+?$B4p4Fw4BU3mAQ6d6zeAQpebdCXoh#)6(mw zI?5hU5}}6ZG7_qV(Yb4G;CU!{2W^VrL%L7%GrvupYW}FY-Aspyrpq3bm)JR1_+T@# z5ws&2pFJx}(9NRJF!0SpDo`9`IM%$An?LGI>6LHe2FRjR=>xLlk?*`SgwfE9?*y7i z^)~fjXIIdE-Kz{6ypi1*aM##3IGOIPO@<|Xg+Z4)>^|Ziqr!+pH*0fuSS;7>@$s(L z7|e*{7y695`g$x5Dm0KEso%(V^&^&e?ZEqZjm^in)M#}x47}~!Prb0 zA5|%_Un93Z>q7ZT2P1MYs>YfYg{8afSy3qWY*+DuLH=)Z2#s&<_^HR@MS}I5hnYnkI%XD2YQ9o3qEt~v@P9}aYH_j~y zc8BwB2q}%qRZUA54jC>1k|+YPG!$X(oxBuLpxR|P38TIbb_H-@G2JVTm?!uH6d$^? z3Y5~H$H1fM(!vy$8;|6!k%F~5bSAb{p(}iCIyl&i>2*? ziS24_%7!z$n~_>ZcNVM9p8lOacitpZ*6KeB z5OYoidYfS8y5Qs1t4u*a>s9mzm9W92>G|j}MacoI(1l)XEaAq}eEd_~W&4mO546_O z&%Pn@859UJpy;hoz2oxzmY$9Cg;p{#45kp=bGei!=aB_)EGNJ>Svj(_`JyWPW2#85 z?Tw8FVw#Q8L_SbjQFYl04~M!D+qIz271XS{5;5$o=Ppo_w@inGTNqVXHCbGww@nzFOD z)G-r>>pNav^FG@`NKMe`Vn~fy7jh?W=x@^HHu#H_M6Hi*uFMNXJ}@2q>T4CXKD`jF zLY=^t<_)drTZjrn6stqN3YpX5*JWucdQetMb-$TK}hgWaLYx0w}>K zWVO{y$LSAIGlE-N4$|RVi|c;uaUHrXnGAj&n>r9b+6#PlZ_3uvmrmkPr_UBb(}#aC zl}&igSR1))`q(A@Y>sy7Umg}kzI=b@+?RtAFy}Peb zEV+&kk=mVaXD~fpDGDd@1V|2M@3;%-SI<(u3&ig_VQfy_3DQ3{uE)kuO!bnub=}v( z)01q~lWzm;4i7O_&vQq{VnH4~g-UeK7o{wnJM=Dge8b#3c=_WV6Cz4N8q0IW83XYd za&M`|2orsv2c7J`bM@wS!cS3#kpSTdJ1Ww<%Oybr1-gml9$Yy!Lu+D0<$Xxy)MXCra+{ z#KP}&e&v!8q2t|(N8UvpC>9EdXD5;C*JTkG>_<0n%AVP#B0a^z*1#%tD)FTqJviN>F26*h!8;^d<*u6q4mPMY{V*mc%3 z!8DRs27@%q794xzTNs2~avXafbXAA@DK``cLwA*+3C+exE#g_d8bLI0Us(_9#~UpbOPGuxhFGVxR>cF&$Zo8`9 zPsIuoqxM`UK9#8VE4e$)RhsQiO^c+R&ZWibR%7%%o^BQvUW;N#rN%=(8%cxQZ<6#Vk0AqY-=pR&gac7 z2+r?r3LlLiAyc24%92DMUz}gJ~esy%1N7PoAqkm9wPISPVq`|Figlp0@uSY7{eZLb&{-$9IZ3&aP02-K>ucp}+8=Rt zcu%pV)f3mt?^CAqN|k5e9bmT8N>F!fiQd2&N2~XL;!tBeh=0HJP5UgWdFWV$qbuj$ z196+mGGK`j+#pit={DfUSn7;`Q&-cDI9Kw?WfK%JA}CrcTxsCC19ckOf>~r&x4w!^ zdRv^FqDjjnj5Z%xIn|_zvY%oY+9l_$aGGi?l@w}-evDKWF&f5kr@Grv`UD+}P!kF) zmXn=$?MLZ6Uu3%G+NC#@)o(bWaKY&x*5@BKx#=OW?LqIf=iwQ?e)^Ftj;SXQnLvqK zL=n`?Ri0UvSiouALiv!UzU1TG48b{%$TxhFP;?IH&_8lwilPl;B_`NTq$|QE9t-73 zYsYQc;|NkaYEMJBr~pk?un2Hp6Hx>%emr}6Z&kj|U=DH_kj`g)t@d&;uf*OkPC2-^ z6kPi@XH~qQ&3PnjCz>f&9;b*Q^247!!ZT zuryd{Zp#*_IUd6pLn$DP5_ArBL*viXZf>!@7_Ou?7tv!uzudPzJ33G3jJ~3a)U4rI z&HzD;$JuYDlZ$3)b*U@vU+M(%I@gFtJVe`Y-?~P|* zb)~--rjz}uupNLa*t?g#JAdbEaQc9lgR!3xd+Wuwe|hx9FLvI#{gopXiI|LdC${iP z$0P)wvFPBGv*i7bDro4-X?GeGVM{DdxYu7ey3F& z1!76Mx3>=0QdVi+XKu<=HEA-u@o1o$Paawp8Z9t$oxR}Gt^S*n5#c=)0*$!!6DBWK z^hV`mD;6wz;`55^u$izXg+LQ*wzt;u#ut_W#X+H_)Qs1XwrAJV`n_L#n@HXS4Lr#h z%RckuX5fWS_>tH7EgbTlZ;YF<8*qH-4ySbVN zJ~3IB24Ui*^lEoDw*M5uJ`fkOer#AdH8en@f~mw+>zv~VR-c*Tb!{RSN)fStJ}~Gw zV*BdY9I9HNlbV{k=kGEVjT@t2BV!C-zZMx@g=qq>Pn$|PdLwzwlM?#Oy2^(!Bi*rE zQ@qeP`ff~*xg0+SYk_#Xw#gsFEc6I{v(Tr z1h(2ASlP4WKaFi6i*RWvV4OWcZ+-dW$km-o7|fJ%(B|68{N?c3506ODG5Ao2Xl|u( z-b~GM%G|h9>ggnT;`CXrW4`P6bDG#KQ$m0M1+`EA|IaD-6rUWV?~*S>3KGxB-#YwM zJ!jM`P$g_5dpy9zufGN@V~K`Dk0kr}Lj~%%k6KnW5EiPfE@^*o3| z!x~VAPMb_8gpCLBep#WR>d&wrU#!SrtUH>(zV~#}&2S;-JG>T%?HU+bN6ea!v(T+B zQQ=oYqGCtEIf`y@b&^hed$4ppc5ro25M5RDhDiU#zbJi6&#oXW=B_HLiDhXqZ_+e= zf7irMn95xjhlM}Km$1vGDy8N0n0(B-GdNd@ibMY0ipVyoLRI97v!Y;`b1nY}Z z(oVb`aeD4WewD!DC%#J5iSctuB=vgmeq`ic?i>RKll%b^th8@G8|3t?uXu|Xl~)l5 zMBNH(8KB$JOp~ZeChVW4a7qtwIDZe7m$1(H;2tFw7Ej^V4K0ji`7svp@(VB^OvIid z)d%dDK;Z&P=t>RNHaHQN6qONMgv#!*-Gt}G9|#*+~?6iPL>S9%Bpyj*$vwd`EMNeh!3B3@`7&C^-yh6hNX- z684-;jk01($Fzwuv*66oajXMTGv!HslpvY<#^rTfLEHB=U{%hb(OlIS4qft1 zSV&-VJ1k5Jv9B>O4jV}Zc=Vmd0bg$xU5w8}VUQyno-k~MuL%R1s5YMQ(3q(pSCZ~S zMXk2DtuH&#QS+t?%8lXX_3-%Ax-zgK7Ym4nQ(doug0DxjhNC4A%M=wTQJI#rzn`dO8hCbZEGeuE z1ytKs?K!=yw{BC>*J_(M^K(Bg<^}U^Pb76+m@8)6<~BS0^#38Fc9LZC&l+q53xt^lBZ%E7M2%h1>d!Za>`1==H{|f9h(D3xI zt@xLB`l4^+=a52G95ASEb@k}FveukWuHP)7Ywq%WC9%%0K7x-Vr(XuG^{F~zXEHN( zcBn%P>0=v2FGf#v>lQOcJj93i9YDiJ2qc1LSsV7I2*elASF?P4JTup597OpEdEe4( z+k_p4k!t9Tba1ZP_^nh1nt4%8K_=NmqDqR}nDvK>9s*pI?knm$)s{`CJa%HdZ@yH- zOyX5J4#akI&|UQM4S$-h4Q4J9N~1SKImabiqMEjnVvl)&GsTG(?kd(ESB_G;~Wk{}%w^lm0LM zLM2NK4wc3Qqd_Bsb7YbKz$3o~0g(xg1h{6V&g`m60BBsOe=r>I2WetJH#izVf&PDr zUvAKMP~aMwKhym-gk}SPDFEdEZwZhghPDEL$z+)RO!(U}7mxrXXZqie|0?>RDE=)# zK>*+>Y1Tj9zoLPMWLf?Qx3YXlzagf-&;u~vYu0zarGFQeDE|}a!>>g%cXV*IbZ}+! zwEyt;-~J6X{QC+0U3dP|T)=IwiS&L4|M%LX{$ucq>&5?7sam?azIU*8`FHfc_Xg~r zPy9>^1@-$Q{2$LYQZSnw9p&%vclrTToWF1o7FZ}Ky#Fyel>$#l5`d%RFyYN*erx^% DEC>$e delta 6655 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 Y^jyDEN&GLJ8Yy_SA}bn;%x~`h00FKx_y7O^