From 04e42955656c06ae82fc8298743fe1d13c8fa97e Mon Sep 17 00:00:00 2001 From: DullSaurcer Date: Sun, 5 Feb 2023 16:50:42 -0800 Subject: [PATCH] Bug fixes to the reaction system and general improvments. --- 1.4/Assemblies/CombatAI.dll | Bin 280576 -> 284160 bytes Source/Rule56/Comps/ThingComp_CombatAI.cs | 326 ++++++++++++------ Source/Rule56/CoverPositionFinder.cs | 31 +- .../Patches/CastPositionFinder_Patch.cs | 7 +- Source/Rule56/Patches/PathFinder_Patch.cs | 39 --- 5 files changed, 234 insertions(+), 169 deletions(-) diff --git a/1.4/Assemblies/CombatAI.dll b/1.4/Assemblies/CombatAI.dll index 6fb68044755f68f637e1590012b9f8c3b8a78f10..8a578a99053f9c4c3351f4d64b2ada6e00778cd4 100644 GIT binary patch delta 113345 zcmce<2Yg(`wFkU&clT~lv36J5Rd1H;YwfPwi{v7?V2m*~%|?=qZ929L*Oo%Px>`{} zC^iHxaOoWqnkfo6p~OJw0b;tT3A_YI0>(*zkO1QQpEGxhgyH4A?|q+sKh2#v=gc{0 zX3q4o13wK7+!6Ze+0mH=fjeBz-)>iZZJsj0<=X$kYp(EC9_Mi#Y>WAxS=K2c7TkZS z$K|R8<^I+cA}$WJo)q)c-L;AyC#tQPOS;u7n}-o?c`T`m#w8*^Q*ps_cc zP~PS@tdttF{_QUT zb%`sij_^J;H-JGN26E9f@L}G=vfLZVPkfBEr$*L_bvo44f25xs`yk^}JX%#!I z_ae=euM=~FT>TzINQx%KC`TgHA@z>Ic=3L2@hj_;SiIm}Q1p)m!at-wFnCYwLPb10 zIKRAAh-a++iaP&`;N7U0e;xc;#S|61->xeQzsd4E=5EAQ+~D|@<*Q#?|1k-x63BsF zgfOOnt71%rYXkxH86R8c)VGUIt!L{;i;t~c^_vPQO2}he0u6n}C)RPJ%Tu2KWLyeB zr#2d~Vw0za72p6h$)NzTum8IAfmpZXV7Qw@gLD=!o+g7V=^|T|8sbT)DKDOagf?L@P)O{)Sim3hT}iV;=dYvZR!>7qGR1C-5aO`5Y1z( zw+33a<^YdR14mnjwVs!Q*qBAs%sekdY`P^MU1A=b`EkY9!=-YvTL9X&UJI6+Ifmg9j0^s{Aw>zHCb!s zHHc%akLT6E1r%<4zE-y`&7qyxfWzkD9M&=II?I~h{zKB7%m7~xNwc=jZ-jtZ3$ntD z1wSZ^8Ki~%*Mc7u=45b2*w6wJwt26tu;1?WgTk0WTG-@;KPb#8vy8B%3rX193$wy1 z_WnU(%)k*gc*fpk0>*sxqM%pYV*Px-L#O@?B_G^@##7PeQ{!|GOjN%YPXAEaM807I z-c2Sl$Ob%QwJx1L`&)oR-j=7SzcDCa{2j*H@=JuZZJ<*P7mA`WSvp2VMf*EN|0P9_ z_)M4E+Pbt%d}}?ube+hvCM|0b`GXslJw;|W<$!T;S0B&}^cMKP9o%+6NTiNdTrM<6 zq27Ox!f3n&n4|G7q)#6OjN>6*?eoE_JrAA6K6RGo>YCi6;f5pOE#n5B++HnVQ?Jf#1mh&dMS6Gcu-1vauocbMk|T z`~_c7fZBGVzi4@Riju))toD(YWn&~1nc#CxfT2z!i~6TyQ6Uh(qN?fBM*+v8q7>1w zs2p%HfgP(Nl7wG12$pMFdr8~M#FDlZ1{E?t12rQAFo=n2kbjtIh1_IX3y3-=POfR? zpmI!$*$*?VkTrfq!|^Ok3eVb88F5$p=rgi>7{zMklus$s8I+bU~SM~5}oajE#)THIN^xEZKMk2#J$UULk6 z3O!~$f4ydczp6Q&zA-Z{KTY@q)h3v|*EI|6%nUO7udRP~RyQ#_x2X}KN3!!WH_#LL z>|x|FCLbZzVhb(<%^C(I| zbYiaqYqpZBs=;E(ss=I6+6_FZv}e3#ZCcd~+Ur)8u|j<|GFAH%oIHnH+}g3~_(Do{ zvd94?tR;s|E2R8M7C4|L>!*h{i-ffu?s#k0p-phhRxhZbBqS37V>G@z6`IfzkV%+S z0FTwTdI_XIv$`E_aLqVbB$x~p$GyfC(84{r)svXuGbpnR(#@m2O&b0MPO{X2|8+P# z;q%4JI?G(sP|bNfjNLw-L~ACWwy&v#+_%?Mi8|}wYxaeI;o4dCU&}_!IEk|R67V)I zg<}#gMb$n+t+TeTttfRHWHHf+VK*mC20P5L*6V87Z(upxaQcp--TB;8z>Qm!|`aP7OmBb;q4(r;mV_SyvvHXKh{QbMR-5 zz?WKoSog~RzanGSjop95MC0rYYjXvcX45*&fpa1=@S^U9@^panfYX|WSVi5G)^Kh* zGq^{N>&mCq0@c9e9Sa8_jt$N}{vuH|5ydj33N)y_%?fN5GwFE01S%fuW4%1#1}@+4 z((GzQf|pE(&iVN5WEK830| zmA*r&Z}9UIutu|Uu=bR>O5t?U`(7H<6!?wlmTr`a>DJjswU}Z3%vdDy26r111SZXO z=2aNk{@RSKDq!}C*@~EMgW~6@Zes?%=4?2sPxkIJ$*&p&(l0{R85W$RI~o_IxzLN# z(CW1STNC@ErP(N#rjfC=>&;o#n*Nw596YK2cOo?(Y!%}P6xYlfP+E%dIJ~N{0N~C% zUvgX+!}_@hcsioB--1B97OY+}2^4nq?S)U{67SmO@uj}l337GX&%bH4TAz(Ea;J_*$qYc7tLNu5-KDE@4r;M5>?~q{CVe?KSx9X+JU{F#4p4~nr1&O9r$i7P0g1UOBDk?#%bMQsIR~ z-!kj$AKzBGKY;Oqu<#kn;4>*07BO>~wfL+Jg%l%<#X@3bF0~#%>$C=DlIP2+LeW%% z;%V1NRhC)nezHL9XKnq-PvA~F`wX}boNb8x2B)2)DdJ#j&3VzHgAf5(*!mVJhVIE@9&C-X8mx{j)4=kAEm@YY z=d%2A%T+(bav$sS^E*efoqHkr)eEMU9t>$x*36%BJ|Z_!y$-UTz2N72W*UW_$6qwt zdg`YezRPrZF2jq5G2D9L4>G)SB(rf==hz(WcI7gI(v-1(&*s9v_pGeU)T!3)i#Ltr zuU~RdgHuA;lBV)d4JwdyNiVlPxMYbq$eMiV7PyaII>qPESYKb-B$iua?L)^fn|yyl z^~ahQ#5X9$AIQXSL^o2A2X^TQx7p2z@P@q!jP||k47k6$ECqMjBYXi+KXj`LGQISLWBn!ulq=8UX3*Rn|&d#9znzFOXjPIqL9~E1#p6(#ejyqiV?v2 zm>#ue-nd?r4Bm3%H(oT?H{Ci5?t8bER^$tpNLFACy?;FD6b%dMaUH1--kfh0-?ltV zsxvr9x<$El)tyOEW<7gng;;BSaAz$bzO9QY4u^PNAUq77A+-uh z^m^R1KzO*deru&zWBp|7bl+Maea4!>C$_#R#QMSO?zZVORku#4TQfmj_+;$GuqO2o-RU4}Zf0I@@l|EXC>-j~#Yh&r=oz|7Vs$I%Bf+~Hq zZq^elU>q`A!&D~7#h@io7K%amc0E*}aqD&pwzVDVmnFKQUWeG)z(k*+IzF5^2>vMBL}FyOQ0LAIjmFQSVTS z)EXMbF@s!9$Rj1v`WlUHoJyU7 z5+70%WZ4*P1aIj75d_5gB{(@8T^o* zj$uhq=_9XklJ(XjV^qiMd$g+f1VBToaS}eWKf~e}{6Dg0Jeru_4T#nVvC&Auj4EIh zgFvAI9V3}wq%ay81tEZh)li{!5!K4Epw>KS1tUcv%)oW)XOFgP!$|sjkp)bWLtGpx zCgM?##l$9S>|^nwEFTAT_+xWANYQR+*Mo1@^qHYT8f^vvNF#a)F|{5o0z9E2N(gx* z0X`=qr0+{{B8esks~8)sFCUvbRfFacZ`g~Je2SLUBwkL;?!dGap+I7K*xN@O8kb@W zJJ3e_tO<{ok0u$7i(?%J$14!s%Thv~P7q=6OyfH9Wb5|dlx-ljXWRu~C=?yS#_k&I zT~WrdI7T81fowUCKK@orQC(qG`~Oz4;~pO;x-I+h`ms{Z|6P)+o{0Z|S=MFDaz+Ds zalh7#CN@GFi)@Z$rdK{u)}CX6{u%ev_(+p0)2L8rOvd(az&=c!4sfLFGUh_nJ zL;g^}q%sKkRg+qekiXDtZjc_INqGSh)ug-wDqwQW_ZRw2s#^+n_z$FdYm2jgkO~@x&#W)kR*nvLqrHg&X zQsmyb)+aA*m~a;SVWGo(f{BDLHW9~5&H$xq5W*Mh)L~G;csK(cJm=+K2_GTd#ujUz zSNlhAfnTnji~)!OgH-X#+{U>GBu3$D{pD4y{l^rla2xd1p?NTo?*vfB!KPS~jL>o= z+DgSZA4;_1tc5(tQb0@&eC?D~#8N*E{6QZ@jPr^um>aWBTrAfDVqS{qs-qlBt*Lfs&LPIdq{8JY z5gC_T$M1}#GV$eD{RA+f%~s=b(3n>-A(L=nmuFa0ux3`VWXNQWm@|NoYsp^Y4s1C$ zCY3S8=9R=q9y{npekRsA)MsPt=1Hz{LR7lRWvW5c32eKtU}BhP%?Z>b^%N{1ImYJz zFR~WBQMcd<&;=6R4oq5OPJm4^8Bn7p5ys~`C{EV2bikhQl&G^_cq7n3M5;k%qMP*1*The!Ld|17jl;D*ofwf^hQ+mB|FkNCl7#4C+7J46FZ1~O zQB*h#cJJWo&-PNp+15>8)Q-AX!kz$mquYGkdijeB#GrM=Kj%%ok3e*K=@;+}spnBS zKZe9L4iHA0fkB$q0;g$C%~0=V$>xEj~^!=ciPwZMH@cv`o)IS^Pu7}4YmaW#tYd{X~6hhHdGccc4R~40prDNs3Ksz zlnqq|jF+>as(|rICZxR&J@h}o@y9yy{fhC0u%8Kt&&0>}uY=;6ik+b3EO;HBA@%yK z>O1X|^29sPd3nB=hR^1FF{O}JV@xmFB&8;}D z4tHV$EnwG;7h|CIKte27NNjw}X0l&#YdG;pdqqU<7_PNinaB;C>d^yf!y+#ww6@Vs9`LR0*ifBx!;fyTKbO-E5$BU>4Y}+|rY*IwNy?BzSD#}A_w{`}S=t*EbAm2V|l31Rf z52%I}VH^<8vv*Dsqe1@lBr#5S>@kx?;$XtZ3lw)uABDciASQXL&!a6wcj47uf;uoiw@el%i9EY{ia4av2SSwBP z$3gJDBslB{uB5nb6T1f#DYEV47O}xIAH^g4u4;IO)F|=Vh74^SAdI#ziXzdXxch5| z)5VDHmrPe{kDVh{6xBFlG!R0}ID5++VToG1u1y>{zMPS6b2K3ha`o9rVPdunMD;lc zVe%&vRAK+3O-vA#_Mh6sF-xit7oDz&1wM}-$1@+M;>Jwci7%4ULv zgzMP&RdL?EnpDLU4_4Slrp^_2i3+S>=TekqDeAZFn1>!+ zY}&SUflx&o7NI327O9bcSog;nL(Uh%Xv>g){aBICr5Q&w=(v%`_Z!uF|xmZkCItgNvXE)u8Vc2YVF~VC&db!Q{^zoP&q0>3Bx%9yr#3Fo~P6Y8( zNsQHLB1RWa#MA7ueMNj>oOn(~-;d)|=W)(sZQY~4fy5;+na=^e4bYgdQfv}Ie5@}z zadZZ6pS!O>TDHAHA90~wy`Sh37i~LbKcr7s_H9drwdPiES2V0H1kL-%+xrC=n%Dq@ z_iGfciJd=q|4GmXnf7ydm73b#F9~!5KuyOh##VgwUw}S|c?bvOEZ-hjCTfaF2w$X# zPMpZ6o)qIYdvKYUoVp*F&f2>%L!TH_w3A?2a^_D5MBT1=sB83x&f{MsRWS;o=m|j@ z)R7P=3Ty2rO`x@QLQ0o!>hQUe-W0}3r#5W`i+@NK6wx`}c@vNxa3xUhdo=gH1wKBV z>UO;(Wn;Jh-xN`%iq=N>HV6?WP&)M0|A?qk`xea75#vN8q?Ni(#h|oDb+rACYJ31y z`wA?R8Q7(}1s8=B@U7`-_ScrkQG!qG8gD%FLNrilM0@Piu0l67x2S%$aLa zrh=Sf9j$2Jd^g=hu+%AuK?FM8LkeYl8g}GLoOL;p3L%{%SGju6F%>EDuaF_R)W+TQ~&ilAabfons7%k?PQ zTFEpyzUPpMRLn<;)f=!!Q^dCTVj;2`q!!x8V zLZ#~!AZi>SjJBNG7>xFEY4#x+g=q+*tpJU72pq+rio!;oK&etd>tHyn(*EW^5f%^F zMF)xU6lY`YrO3GPsLE8QG#u^;>gXYZ@u^OsNTS`jL=7}qVxl4^+R4Z}hU5sZsh)%* zeI!1rOB*5yQQgCdN6xuXQuZAOiLxq|QFG+@m5$6`fUvWs3pZ*?%zN$k4-&Id&m+HU zX7TEPQ#wTC)P-r#nwElM7*t@@EZ90TkBot9Kj93FCxXG;1kp{Ejq}v5Nzq)}Bk1XX zPQm6qE-k@$942ZC4Eh@Y(mIiq$ygdrV4N|R;Dl((g=1_IWbzC=dl(bPY?k`?fM~y; z$hwGYg9AAkNsy4R1NqD@S}v-%z#I`q0MXLRUqSX``RfE6LJ~NU5m1qm+V*K!x-9S~ zMq_kFLa6d!zJ)PPu(Rgm2{dSfx2Af$62n#pwOJa@E2*^Of|e!Z(Z2yG(U?h73W>$t zrXVh5ao!pj@dTq7+u=jxUlDnc%sFfWXt?5`jz~L(Il+jRn~Mlq5H2BFPK@|Mo<0n7 zg4$)o1bZSfL{|}L{hp6ir|70Y!;kif7w4iwK05mq?2h>T#Y65$AQ}nE)g#)PPfT`% zuo+;W6hy|j+NWaoWw>?JKmS~Q`;Z$=Ph3PJc}R_oQgA+9h*UIprG3r{k(WZZ!qq-P zNhzE`dmZ6It(ZciLZe!O2!}@T(sj!aWWkR?T96Ozz|V;-3XS5fBN7UQ5~D*Qy@X;% zLXq;RzEGqUC&jSk2bmk^Y0o1Mv2W@N6*;L)g|Ra- z9P!5@!FO%|hd}E9@$oo9wHuL1I!1rN#JEr(8Hz;$=@_A+h#Fskt)1|+{fEKkfp8A? zOr_e|PAZyIGguboaI4NyF3e2wbD1D-Fq90ozB%;mx9=8)3x}eALzAkb=M26b^1{wE zjLw3IQT-T#1rvTHhW16>%K z#Z;o^@i>DNE)J=^7?B1|U4}g7M(N2%X1UtCoYJ2NCFHT9m4IK@u2mood>iL#5RP3Q zj)ZL+d_%?Il49*O7w)yRP=6XKf#Fe(w48;IQj^Du_E&;KsD!ge!?-pWiH4%m9J^qS zNq1RXl$#i^qWvdzxeCQ}46SnkPMyjj2}LW4qp{*}Y$#RocjR9v7LA5Whe{45e<|o| z!6ANxKe<+^$(Nec0iqp)6xJMhXw8uwQLP?;2(~!BUv8)@E#>=#q-66eIZryY)1+Rz zDbRW!&cj3_<&u4W1eK@uF%)1-n@&wig(FtBS_NaWy2opb(NL^0ISd%o8UXCwiu{d~ zhD)`($n?0?rSc~(97}JcG*yKBk;+gd3hwE-^UuTxE);0N-9eX9I?{MX*iO|@33@*f zu9DiBW56w31Ye)Uf>(5 z3Ri0hcv{wwf~Yjoc(BBco{9#%JoMF)AW0quCIf8}tnlVWs9HZ2OJb3laH>W-jrxaX z5O!)<$;GiJgpSE@2XyX(ybqe3H=uqu{Z&^9<4cs;fDxtc@NIh5lP(3VP+GHxGPb3L2wM^QatdTjx zvxga2;&J&~zksXMM5P%>!_R3uoD_{r(CEpb&b$k8L*q;uZevzP!$H}MSECtc;M__S2wI1`&_*RuIB%m-FGQIBBA5nMxLx*J zt1*qi6@FL?4H@M~hwgVdBWap7VemfdSt611&+X*xy9o#lC&pBawVsH&DW70o{F>x;s0`sKmj#}suTxu%c4+@v7c@m&g5YfL$V8%SlPxbs#OZ9Kid~R1u5m2FQACbyJWi|N%yZ<}#siW@QkK?joDq&k zl>;0P2FTg*jeX@>QJL~M72gx~()a}xA7`6gA#Xr-Kv-IVO04Y|oDv4}DJ^@a5EjkSZcOcbid!z*=wmzqZp%jy zv}Oo=(q7VP)58N;)T8vuH9H@#)aCnI)^Qs`gLv#yQx3&q+RVA&QxIrb3S1y&&O#_q zTZER|#6mE<3Bb)c@a9y85t9r%|7cN<)%@{Ci~SlqQ3xvc4dsWHb>w7wO^`Q_0NSe9 z*B>n!7jzM+WUJ$-V9><2C~ZF+Nb6H;vA{NLp6{#4*A4^FnJ1J*@u#)f!DB>uDXp}5 zU7w+SeFE)M??H}19BQ{7BPOI)5nF@YmfJwmyBuiRtv&(}MQcaeuv*is@<#LmnL&*!Tv4B>DIc7gLZF86P7E`v#Wj(_1vL3cLR`3=Em9mB@UtC)a zCqi%i9AXa~E6U`u;yj>-1eP$c5a4Z@hBEgXq$M>(!H7SU&WqJ7vVM$INxDPo!6ca^ zG)D4GA_?WQEPXy;k-Qmr-oO>g(-%+($6YxSBYa#KrTe#s%T z-C=KECnmRL%0=Iccw(0;q^?awM@9{3C<~nEZuv&RbP_8rw5o!IMSJ3UY*X%SpVlqv z>~-r!kyvCu*DcB-528+l3iW*uOB;=pkDzr^_`UU_I2|{JNC(h5C9j#b?Z!fdT(^`P z1#@nKyj-QI^tHW-JLfCbKq)e>u|`IPM`l zoEY8sFaZ3jfZH__`e6wxBsm$^WJn(((wLn*UgR&pHm0N(t_7ffI!jNi6UB;#!-wb) z5;8q+2rPtAwymyQ=rtM*516C+Tx5=X%j z(WN~?0e9~+w8Zl${IYw)8o3M0r&!`AVt3f3qe}`V7jk`P(SKaPywgq_7%FQ%v(V$;t6bV9%4VLi;58A zRlO7Ncgq0ovOm#9W3zLs`4-eCIvKPSEh8Tja&API_PoTHGKFqO@3h-Diu(9U@E9O| zw0-?JrD~GGPrDho5EX2igLKpDZ8(hlxV>egDD8eyhMpi&zK;rzTQ5L1YF8ucu|;ms zt7&c>od+8Dr!)SJk>uAB`Te-;$|Q4{T>9s;{|UQjlZYlrpd;XVC&n{5F{D2oo`jCG4bhp9H{dGtDX%8^Sj zmN%mfgbF`n=i?nnETSWZjNnI#ciNBkis-^aQ6vQ_U&!}6kH--RJzX%6T$UTBBpU6t zsblfLV2J^^ah8F|uKJNEE6G4+&_Qr)X)GbszCh(?Pz2cs$m9$pzHhFSzz<1z=ttN? z%S5Cta!ghz*|HzGoBI(C(;jKlMg6Oh6osp!z6RbzC>OF8kTFfo4AKunplM#M3)Ar4 z!{HyGs7?3xAAwK*k#NpmH(4#wj-uHWhZ)lt>lh#ktsEemPYwoQ?!LR4;*QW6GdrC>R;MbM=a1^ux(^d`|CN%RC| z6v&UYe|sX%Hoa?qdZHLF*4s5FiD}V4prr9opm8OQG~eTZ$9&)JK1o!C99$0g@{>g6 zXaZ~9V2u2#iFGM`6fGBEyl?M3N!09(x(D(~F{!c)^hnit1mU@vkDK%_N8ld8 zMSGt?s?bBC0m1oQHAjh$5W!L6FDVk_j3hRL`Af{4C{TC)icg-JP}NxT@vI-gdwZZ1 zULhG$_d|=y2Z799fCvJ+Q+t0zsXKun{U?(5B=Twp;~UjES7W{^V3q-cEbvH&cagIv3+IqQm8J=FI_|-~vcr0xm}yT5S#;A$E=JQm@=9|(!defKP}&^I z!fS$NmhgBGmhFL%;Mk)hLTwd_gP*t229PIO2bth$OW|vWc%4k#^91zr3!I@@^gw zZ~ouN^N_k$&9stBPZxP5oUbcKN~=9x%-ZKuvNlXAJ((&~?I!DwXToo~jWftrA4IR9 zWZ$*aFmnhdV{ZLSAOW{;K3&wLP_C{vswMJ?MA~ppjLr!-V^2e&g6GZnA0v8Vp<=iJ zaR_@d!$7&+KMCuM9-xi0SdfKDDgcXc3f0R(vlG;KQCs$hni)hpBRM5x-$ zRH<|23wOeXD0(y%EX6jRC-)g)5I$InG7GNt_dB<6QO z(1}C(N`$JPjimEJqTBUu5gIA1Zig_vrwr4+vL~J?O2s+$;xomJR2q6NVl*c6$AsNO zB{)A@5x_%a=K$9GW3;S!n1RtGIGIPIj`=|Q;}O8H!5{2Kite7fviAnyakW#!>?4R( zFwQ<+qErkVah5l{+q;0tW;t>jhX%Skn_hDY8G|xUB9ar34RIpkXo)AhDFu}ffk8mJ zJ*Rgnaj%MPtbaqMEM*6vpNB*!MiJsE*_RC+Q@NHpwQe${Fz}8kVTbsYjX_!zqUEfQOD+LAeOQPXIfAO^z5aR<9bhuwqj5K*@EF} zpDB|Or7X@I19 zil?wJ8Lf$k=17Q_86^m^HWv~n$eFnitd)6swgQrQ7bQuMU+2;^5aiuln(+ileFl(r zEJQV(k3kM41cON;#)tRaVGFcIXL_F$5`|9se@ zegPTeLbtXKk`g|*{!^vZtIQ8m3H!3aWk~WF)YLKZQfId`qXTWoQ7crS$6dQ#PLAbB`1Wcc`?G!jKJKvC@!jCuT$6V zNn+3Ck`eTmN_qk_z3O^G)&x4ewu)3wkEuH-;4u%S4-VjW(RY;n&AFmJwUS|KuMI9{ zCj|_0d&;M}Hqw6i>|xH5w%*G?s9#Q^C7}kwLa%-WL26y7i(B{>;vvk6TpfekH1Q-5 zD+WWaM1&?+jOwtT9)qPB9oBOk;r4y!iJG?6h^}TO(hP+0BiLZFN6Dq-RMl0hxLjD9 z2CEJ`vRTy6roj1*DXZ~?W!hZk6ijH?j|pKIjjT6^{uF+I#Yec&0&i(M7RY`Mce zYYXlU9%BD;i>Se8r~G`mMNF>cR3MRDKvK8sz)hw)s$FmId%j4f)=+|O0GtgM18z6xlBI*3d>ve>q)?#Nc~KjLwQ_A64pUUU%eYu68ou# z*`W)u-*uv`T__st6D}0x{L&1j)|46aa^gvp6mlp)`tYMJ6!;MZ$f3Z=6gb(w;X+a0 zL^;9lSPrzw$6@dsqhu%FDxpbvoJ{$YZM!ZM-D1kAh~W0>KSyq7EW1@Pj2tlPO$xz8 zv2!LOWpA-CJ-QW9%yWQHYTA3TgBvtAQy|?m{)7S^lO7*XJn~-6xzdl3xiGQm1UPRn z)5cKHJevVAEr{GPf9wP%P~Z$FFp&c1rQ^*-oU)RoM%F!CnNmrC}3#P~2UR&(;k`S}rmJzXZY zflwc_8HYDD2-Im}mX$%6@N0L1O}BZC8>cVR5&E+58*|91037mb2`pJ^cYuL;9RYB? z24&cLFsuj%EI6~Ntdm_%HlEJuzZ@W+qZ&zayeVSu_*t>*vl)jx^cd6(I*f2f+oRzM zg&IHQJFIgA>*xa1J&4+qq;709Wi-~0KtzZ09%TzII5s?K8yUk>`pC<_*Q4}NQrX+t z?Z7Xkahrsbx3jyKuJG$e3s)*FP%@;bY@h#YhPnKxE8wmityI>G$xJi$xe}^M(N}Rs zb7oLOk%&4uLjnCXXr1sx*T>P>jId;V1DDtp6bD7l45%g2Z?_M-Ow^`0yD-m2DP9e5 zdIt|TDdo~~V}VKVfQ})PvrK&yMqBT2$Hv^K4U@-?mI2|2VBjFsYH0;98l3SB(wZY) z)$c%?n5VSKhT<$Jpkqdb9+4ILG1(Tb#^ApC0N6WFrka9Mjuy<2cl<84+b+je{b}|w zmy2F7!ET;_G zw5|B|+i!WhCr5Stc5rI@gtxmm1Bi(Z*#W27FgDwzSBQGrvGo|2+wE6~;&Io&KNqLu zkp~2pZ2;9MFRU;ZWSdvud<#cqU8wZkKDV@8Ntk26@-c6R0mDZaFjUI&qNdKRAHW8Y zg`N*+q637~eoR>g&vn%7P4Tm(=f~^#t5#@tb3|^ja3=^PE45atE*Riuxlxnfm~@Yc z``mtw+It7d2Dls{YP_Z_aiCWs;MPxsu@%tcf;a$*-8&^5_qa_e%&;e5Qu&8HKJ#>Z zomd$o#(kx&_Vz2WFL?)H-MqzT-kJ6DZ*iD66TqWk5h-r|jQn2dzm@!j4&rtWcr`43 z#Lb^`K$U^p5TLG+WYCxR^O*qRD|h&7wf&F=9*B8eyHU))r~2X6aIlQJ&%Rsildlpr zt+yb85kLi}n_c*e?@ga}5aQk=kpZtMFwlBEd`2r)GTquC5@El1m1vmyo%nPA!>DCe zyYBVof%+hOzpHVvbs4G4I?#~V>v|7*{DE|49SjUJJc%lh<7k&m0BKIpH3^kqUuJX}@=^s7#Qtk}@lD`4Z4k#*LpV zbkpT&oUF6QT_>uhrDNa)+$_^Q$H0L>?9;A?oxAJ_*NJG9>Iq337Wd~;p~LK7UneS} zY4)pzv9~|H4muxUd#@J_8Iq1+I!ltHhLhkFbvChUp7U_E{h+&&IiQ38OJU#=Gv_YYg7@1wf^iSP`rS~0 zPv!OB1D|;pv5J{Qz?K0JV% zZq)D^_X2N{0=!+0+kPs|&ITzK&LLz1a)pr&uoDW?*wnco9ry(W(n~VcZjP6eANK?8 zytvtt(z0B=%uvRzz6c9FI7N8GMdx?mpzjXYrDbzxTM`hW$2f)1EG zfe#LtQ1SYKK59No%M)ETR}1q|B8r)md^QT14@8u&U@3xQ<6tIH zF#{b0!AbYvP7||}n!tQmQKOOckP)RuCUSK~AADw%4g zjhN)_IUkFf`n_o5Kye*WypCvlCV*0r33;w#QGg$ja{3^mIaf?HEENO?g4mXqU|!_H z%`}|B!OgU3m^jdTv%%J|u(#hP{JvixDk$w2ZWGgH;t(MA$)l!@6+s+p!YMzs_dXEh z`{Z*AG<>dYk9+ai-ELx6ov3g+PVK$lZo6GvDhBP>ZWnVx#FXD@JPJ5G5Ojjwc!!u@ zw+&!!G4X=$FX2z*)3|fWJYQ!=FkYhQ+w61h5EE;OOx_Q}f~MME#A(R_H`s69A!_ro zfQ`2IPEk8E3!sa-c*$D(6&QUdI<%HUY3%`^A(`Z^y;D3=6F@k9QD-##iE=zshOfK> z-e9+F6;sRTQm!P58V_dt!M=yKZP_YnMfhRBqC@Vc-e1ErPz>Ged+ru18nz>tsPpTO z;Oo<#qLl+Yoc$<4^ZJR*uRmtT@4@AmhwW8&<8i`=?c44ahyIV^ExkvqPK^W0*g!dD znlT3cmQxknkh=kM2m=cRo|bL|6=N)6*0Pr()Wf7)&A8l60qJ7Zf}(RlNP70l10(Yr zIqGlHQQJ#6j0kr8Ua^;W+}?DrSR|gXAGlXEjHc^HGjX;Ma*5?IOD$tXHCqhgt)?b> z)gYcJ8)IKEh}Ye2v41rvR#lR!1EnDACx?|7sGwN5@@`N3g?O+YC-cb4PJ=ySWZ`qY zjl}#F6{8nt5_uW*6ua;~Q91*M64ku^Segs08V|rD!2)QZ;}YPeLqjUYmx! z`aY3Z*aw1sQkQ>Gl8*i1JfqwmgdgLM%#VT|Pky}Dg5Lx^1(CF;z{>GHZSS~GR338~ zD!cX!CF~8V<-BpRn92Zu{Zw|zdG4hsl!5J&MH6e8nAl$nIDY5_v66l_BUd!J-Af(# zZvodL7`1ir0fx4Y6&O4&yI-6lp0l61Uo_+M<^4iSJrBCl$ykYbjv^d{*|10Nq9G04 z3B(yd%E@ymCn=1xVHCcQ!mAbelv6FD&@0HeD6s-7I88k}&cN@~XlN>fJ@+DA#l_k~ z@DIF6DXRw)oJ;_fjNNEIv`rM*cWo1`(_VlA`tRTb_MC z1k8)TB;Uca9E+TUX+6y$$|?J25Xb%)VLQ*;vp4V%V@{}u^S!|m6J%9#1wvN#Ai@I z{-k6T2nulfZ#=$%+Rsp{NGug^*pEJhiNG7c^FT{=z3+9oKBWx7Mk{9s z`ZwpCV<$C9PXMnP1T@}6EaNRWysKXmoO3I1z1U>Md-u1)8t_Io(dlo4#JqvnG^18v z5JHjP0kEcAe-|GgF0EZl=@ItYhedH&7T+ZCcwTpp=qYJ5wp`P(TR8UbNvl7Qb3Qsy z?LGJsi$;pCOh?B)YC3uldw4q@Z2gP<$L*r2{CdtL z`E%h{QwIH&GAI%>ueY^F#9k$zAXtT$OeqKWqH9?-(ti3QV*IT0rr{Q1KA$KF`B*9Z za0VuCL2VVKKcG|Gn(CTa9683ZqwIpiCy$7!qn;nm!Jhc2m|bygw%DlDaBL#|Ec3PY zIgg413x=!m(W7ZqLc>%Um7|J$R_XgxIq0#pDp?M;{g`NpzKmXR;H}(2=wf$2o_u~x zR3Gsv64!roTGyN48B%W{U3UY~I6xTvZ}5)6p(Nw)@Nl#4)+>3hhyi&pK(~(0L>)m> zC28zqeghNR1^Eeop)b}LJP>PO1HVUDS`W5~JT2(pU4`;T!5RnN1FmHyApPXyUEG!> znII2+??c%n8zr6rm;(lr#W{dWQMX&7%y!f9c!o&~d0 zuoDga#D)2#KC-WS90wo>z)@0vgirq5SwDFb6Zq3lvH3^iIXKGAzr4;v8<~@sM|iph z{*q=RdwD7z$@Nb_=rt&(F&vI**piA5yhG$SU{skhu(RPwXfmmFQgV4e#Y#kSD!Pwf z;KH+Kja-O{#{PFfk}U2SJKeRhrwvZ;Pf_v%1Z9+dDS|B0z}p!ZHRhhD9o_#KSrx`_ z_PtMt1r1~ut=K?v^^;;PeQBS5GKMHE$5HS-{xyUYI-B6kxeNfMejB>~^x%Mp0tJMx z%fvqk@iAF)7}wIAOYbMx5V~(pY|Ce9A1llKtxhu+l#_|*oQog2U>SRB~m zEwr0JH}F>|9Ut=@Vol#7VPbuUK)y~6egUr0OobKqrhm?A!u_*LK57gd-%ouLV z`duho*WWM*>E|XzH1(6o;Bp+rv+OV&V=b0YGcq%x%xSW7sBV>zom^o z##XGxpZtu-Pf}r$2}R>Ujmwx?nHCJiUHzW`rI$iW_x`MM|0ni6&xlwZ!|wrEbPkRV zNjiCrk*xwpeE<9mc8Ogo&E-hp=m2R@h@a~*zD8D;b=3|ap8VMd0x;&Akr)CnhRO-~ zIM7bHInXYD8;pQ%#arm52frBPPq zZLVaTIDbGt1GPaKI4wPB)No+wvOvPz`|FKpInD!Wnp9fgIDKB%x(;c~icb5B`Tl;=WqO{i|4xyOVvn@?mDElit)|K*j!_wpDG~Cnn}j+wfr{tnbGrhh zLA)ZDs+?cMsA=lzW~3AUYQ(2;7NWUa)4aIuhdX~EFX>O_-SRVl*|b}(PW!?sb*SWZ z%*Deh&bmAgs<4`q7v>AO5F8Ct&EMrhdI_>47lN~7s`;XXQ28o4X=T2Y3%QokX}-*$ zWNzBcR{#sC`o*Yue9XUg?)5y62^E`0&-Zr)`lUciw|kG=W@ z(ct%jWmU6ivTE;$bxy=^x~aN&fWI#&JN|;EQBG{{Lsf7lwmW)}dEbF*Di~o4$ME4R zM?2^>kt%}uxBdGC5fRBDXo;IVaE-6w=mF5mF#pCyBmabkL-38=xv^OIvXJ&z>hS%XW?uOK(t)x9d~rmvkUn@89v{BRnBlTo zF^I${f`eNy>b5`aK$g|`NvQk{2OMn+B81bZ9y6c7ZZppw{}MU_oR)^FMR1LRthW$e zup%&ybnpxO>WvsE3r>AT@V$x=;z;zkezHL6i{NXJfOwu0$U{IzqIZI-k+d(7G{q>U z7^9R_ZwN}`nm&c`d^E%H5H^4N?*)+OL-)Wlq+)4M?LC)n@C^_~`w?0#WE$N=q-}wJ z5o0X?B0UVI!8m@FTZ_QQtD~?I1d9<&ek4~VV0abw{x6G)Q546mmjLI+I;vt%cu5r7 z=f8{>vPvKa*CyB{zb;TIV5ht1c52VSP~@){Agf|PCU6{-63;(-fZG-D8izqH|D1k0j{@DoOo3G1sLJT2wdDn;aECiC4JbQANPvT#+DJ?TxxNio~v2lFpR1{ z3ccgr{+NC8DdPUUdm4lK~ zs+HO$ui`{#1pqO93(4;zWTW;5hIk;!pVz6q!uQ~aL@~mdi_!=L6OD<*$kv`J(~HUTPDL?~by-?jIqbRCThYOlatFoDWDjdz4kRxye~ug5v%1_FqYmr$fwGc0AZ9fA6YRD z0VHVAJkDmb2|)+iy8-Doao`m{E)%!6zb0a-dT`*1nEvSnRL;?RfHiyv)<=9AHRpG5 zcF*n5PNs#&A+>QNX;aT{X^_1Pwu8IXd?FTWdIl-&H)Kki>_cA{<0sb5pmY0#=%Z9< zFvy_xG;9j#X>X_7RII#)?Jrb_p1K+K!>@~W5x0k4$JKAbfpDOW@md*7N;X|c?8Kd7 z*1-+|43HQ|L97551pnNEY}(G1nK_a|ir44M!pHKkI*_y<-6_T%I1!>dn_j?$7I+fl zfgOyDVI0`lnG@$zs52ioW!%ThFBgm+$KBSy60JHc*!1H+d2oFR(3;ZMktCg0|>c$pct+2Ph5&$tfhQV`Uu6|i8w1u3}T%HalDW_5Z|_*=+Ny1_q<{A4M--8mD~IlJSt0e4P4w82Y56zXm(@EtAtaiYMJ72h;tq%b+? zdKZt?wcCa7V3bA}n8rf8^&K%K#hetQofxv)W$r`%zIkw+qDAlMnA8+S>C1#r#1yU5 zTuc#iVmOEnb6+6hllFkh#EFdLhDevbD@s;kvOtTZ*k~pS#UORG7}{HNDTVvUb=1pv z@jM6nD^d4zytrp6;g@m+S!!>57k9{rp-h0b3ay`B38aZLg}CkTjY+u@k1Ga+b>u4E zVnah{x#KXgef~GEgBx4hNG**Cf12Iq%4c0xKq$jGp?fm(whrI zUc5IG@zxZ#>EBM_O?<+dOW@21pv@w^C{qX!DN;g3sQTm&6*)>$)ha!R3LRHhNkZF; zXyHQG7Lp3GIY>QcZ(~eO!QqMiJSKELUHDQ-(Z_E318!<$3(`RiD@4GY0)$}pc6D^q zyLO@cm65_wA@`HhW=ewz1=GzVS@S$vU{df?$y|V?=>i;wwi;JDsjz3f?ZN^jGr=zU zLdDn{z?P>e8k^n-el)Gh@GDF6dlPw>=C=hD;ZeDjB2?%khcm0IW1WMfJm@B5b;fwR zvsg+pW0%^;yeF!TrQ}Sl%E&HH%U+a~Eep^uo6rxw$rLnxJDQ7H-D6QpWVWb3es4rk z;|T>el##8UW z2*-w%X!M6lG>zo)9a*4hBo{A`nvHS}#fB$xYPrHHjYXxba&&sP+DV@*<>;(kDBvg_ zb5XQ8_8<s9FCh8}daw+<>P#=)RBeu-u&QAtwXI&<{`XlIpYi7xxh=8u` z-kE;iVQbN7Pi2 zu|T#mI)9UakcrA4p-9`E#_0O&4^aT|gBh91qI1o1WKK3QU-=sqv4LvXA(=7VUER2%4Vi(!rqJX!O0D zQ&_RZprH%ytaku(^KKz7hy&3690Ahj=C&iC>i5EkTYte`6-mjy3$M0bOHlj0C$U+H zpE?N6#7rES)o{?uRO!wH=DfHRoYK9i7M| zYKm)){h_|#wVJb4twqgSSszXd;cHK-UGghqI>*4TXMO%v=m4}NF{{;A&r!q zo*+^~34~rk?=^HnvIz+xK&V0z2%UfwQA9*UP*jX4sEDF85fyj)zjal7%Zozj95?~BL zv+7AT6OSYD#q`1WSIs63ZHtmWXH?_kM^1P%$oA1&ej^Q&CZ~3=2`j_IJz^+1o{x2I zap9lOmG2dEJkA?_L>zxp6@SsHR@OKiBk`+Y6=k3N2XE1Sii8)8&n&4FlUidx;e7!$ zHSeH?1I6=szJdGfs(m<>gQu^Yk$A}a9CFKSh` z$r+8-YBtHNMzPXZFvjTeKgAfsF-T^0eHLSkj#niZrQ7pS>~lttxoZy91@9~7$`vUH zo!fuu$hXindO_DfO+@}5e3gBCU1?O$9!rd$@4*K4t~2RU+0E;U=fFuALF~n*qg;H$ zTQ}93n}moQVYzvFE=JddW7y>&xrYOp1Kwg9bYN@n~q`}l?D08yN zr)v%+$-NN|@Ku4_<}X;dJ!gRiEnYBa^rAs98l1X-iHavu1$bu2=TtQkc7Hxri>5eG z&!F2q_??F8l87uee%?~(#fuhXDOlDSj{hx^f2!U?PbI9ePG=OinCOJC@CiZ17bgTZ zjZx!_;HKagEk?*QVmg}UP}A_4Fz$sjq86mm>45)K-eRi-wZwV|4%c{tE^qPW&qf7% za{zygj6=0&U$j#elzsmzUa0+!-SU6>o*i$y6(8u5pTU}g+2PH#_z|mIKaNHp$FzN- z3?Ho1c82G4_yRfIHpjc+r0SdNixHmtfEjMeHo4oU(DhVMVf;nw^Ix;(VG%@mz8W#GgX^WBmxz z$Ii!^YzpDCC?}UpTyw|+pC0TgnLQH&QOK*v^=pFP zs4V?1UK?Su`~jUS$?>MN^-x9`Y!e8ZFIeYw0@N(o`Vt;rzW~Y@!-X z%_Zfgo+F!jA?kCeiMXlro^R?U7%rQ786JuUIwnZ9we*rQ@4I*ovYnc}9Bo8PucU}B zIj@L6tMHE%Uy`SDkTuy9BF@33Wa64b9=I*oRW?P8qs=4#6+ujWQPmwHI2$d*oMQ8t zOYZ=P({vEJ=1kO_6*)<_7m^ew=nY%ze(_@Ka;!!##NvX~#`n?iQiIaRZ%VMFQi^7) zUHvqK;@4<4MtT%N^AvtL3>OGgba8%CWj{MVxk|Xv=E+7|f%+V(ZEmz;yrQUig04n| zY_&2x6s=|lb1@-5UWu$O`}H2aZ@_k^@KK@MZL+SmZ5GcdB_FOiWWvqzqV3&h)gx@( zp10-IDmkf9WJd0(EifzfaKjrGnjDKlQ(m7HniJ$g(~BGyF6eS9r|t5LCYLnqiS^k} zImXVW7cacMg0AAj!{CPUQi>JP*kAhcj{!HwuL22E93TGcC5`Iq?}yy=Y(8JO4Bmq? zoOE*?;7w|<8DwrF7FuS^r=>oVd zmV^GO*=w-ga8+Cu`#|xiC4kq%!2u531na0?r4cSAT#}Yyv>L1PJr8hFV57BYIVqOP z8G}Ei9ES(NA$ZYf(~0l5G&XZ{1k?>S+Xuyykv)F6yaMB5mgyG>a}X6K%7_ zI||*aZ}j~C3k;dMjfzuQvp8{Db~5H7cQxJ(!4#g&&fC!nPyWW3a?TEl!Qb&Q;n0is z6%({d9alpwzAviz^YlPt=-jp?Qa;@WUook!0>mXy)DW*+L3`j-ImeEH#|dsoq}< zt?>UNG~n|Ds)^7rpWPk6D%%J$`Yv;ZiL8*t`3S zvD#p!<+6ee8Vdu1KDsa4;Dr*2YglodcTPXn$1@-NCy`F>V@PM6F72A7{kkhiJKAyW_HpS(BA{2nW@iIMmK%`X=p zgW%uxI6nCGn3gqW;wapuiLXcF%jw;h^g3XeU%Q?i=u)UX@|ChRkCmnd zmJQnA|NHQs8tx2)mH7W)G{GLjpLe7u#`quqk9h_v!%h4jzb6ah@Gmx`O>aS_N3E&& z|4jU!Z%sok4tey?1X)pSr{lL-@I|k#c_x@2Me;_Zd7BB! z!aJv1pw7UHxFw=p+(kU~mM!X>Zh`=Zf7~r#V2A}A<0*VyT?+ZBOICmdUYSL5FKhb_ zz1XTA_=MPpJ7HY=@R#5WK43DznO@}QEe|6%!30MlDKGc?QerMEF1B)kLUtG9L<#(7 z5GC+>9n#L_tQ_m`wTlJ5<>MRENb6ab-1$V1&8m46%Q~23bRx-Zvq=86{MW@6Fr$A9 z1s z$lss{cG!N{HX}&=?G%cz8%>?yT0<)F!C~b32S3tYUU;!p6S&jPi-Z1j>V;UXL@X%ac|N+0BEf;Y#KytRS6%^vS~n8j@ekBtIjE8(-tT*UOVjmRevtmd^`}aCdhvxLrvR_Kzf^y5J1L`Y)UC#uq zv3lJ>52Nsl!Bi`erPQGHT2Yf_S5Q$KY;bosoS=_01x;N?u3I)Dd700GF?j3*BUt<8 z5DLH8oMin3%G`sVbX+woE5Hdpizg57aYvh!L*aAzxb-MHZn2nT&r#H=k0()95(4P> z37yOa1lFVc_6Q-lZ1W&j3*;wLgg7j#2`YFX>W%p|!HM*yI7}t@f52so>RC28r*^Y9LKzPK^=oyz1JKv z4eUuST4vMn*O)w>%{VGx=_^SFG$R*Z@R)I)2b^Rs@o4Vn_okE0uggh3#q$g8SCcH^ zhVI1~3T{Cm*+wD#`Lz|v?d)hsBz29u8^7=E0)GZC9EzPKiW1w+qvVC*WcjcTg|z5F zSwF_%k2rb9jnp)YIQjTYvJBy_=YZL@z);TmLGEW7hurARxogjr(~4b$b0&PIQt4-L zW%lRr6*xS5fnT1xdvge@piZ{|JDn2*t{^!V$4V>>wkw|ToXpxalw<@>KX|(G@hLt> zUalmYH?TW9!Ni6321e`4Il42B`sB1gYJy)nQnUqp;(g2|o`NlBf?v48dvi5vIMU(N zg4x3Jn6p^St`Bdeki2-(UgPjDg6a4e7wlUOnatV_o>>6~4kIH;ox#!Eacsi#o+r?6 zCem@2x+ER2SDWDPfi%br4I$Zthn@F%*zp@j4e|DH>f2LrY;c0Nr&A4ecO@B{L2^zc zor;qRXr{e^z0CrhuvfVlaHh_}p?L0grl52#K@jILn7fk8IPX9lWU?s}eFl*9<-8ZM zO-G(JJh}OX_n<5)Q^?PC?g0Zk&sdVhkalQHE#5?ii^bVK%{7C9P z@9`+Tgli?d8HGe~R^A>>6+0-JLQ1fPum|$u)P50d}6JBuL;8X77EtCl#K0BX|qi84AlZ@q;Orj<65+f?);JZ_c2N3BC?0S!#k0rk5=Bf+*~;=#3k*YXDO|l3MBQ8VOo!9JHU)QqWXA5 zbaSM)>lARqbsxnW-GX#}5X_Xr6o_}4NLMt5bWI`7V5fi9Ck%oFrbbRg&G2_v^3my~ ziA2qzH7Bv(+uPNOU(oNsbk*J4H4GEz%GA`&+x0GlLI%_4oS9JQ&9rPdd5M4lT)?Gu zseo1(3V8p=0o)u&83)7J^d(e=Ln2IIa%4({Sxld8Al=JQz_gWh?O`!H1@sbt8GD7v z9}5uxo$&D`)o5#HqAswJ$)y2Nci0B_yD?Z%f!?l-l-{tLOTQWO9S)iB30G9iR-$qE zbFY-qNh1WEW?e@v(|Fv4MM=E6hMZ2sp9G)^p23Ya1Bv3b8%^tn@ri{J`Em^l{6zL8~imyZTK18z4sKXII zgapPzOjY8$t@ z79s&OM=w*bK9_R=Ek+LIroOU{onDQieAid@v2w~*(s>|JX8vwS)I>SRbbAm{gz^DX z7f+&S$U%H04)J0-%hO$Wne|%Wu$2IN&dK;eJI2aK(-|1xghc zm73RD>208LgW}6d5AL%Ym1ax_xrCdPP$qkhxK)W^8pLg1iC@7Xr=vNeJCsy*8rNhN z`rM_YF?C%}bW2&rmLod!n;H&(D$AKxj_o(q2#3c?8RPn?{if~#J9WL9hk46;*=0sJ z-s#!QZtAxsa#pu6#kZ+RyW7>ILBoj}O3Mh27a*x)D(Q$Q+sj)c84#paveOH!3{tl- zT_Yvx1ik%IO~ljFn;P z9wvw9Xc8x1tt;TVsHTUki;(eRIl&0^b@tNyIr8J0i7=$no0F(E9nG1kriom7BJ5F+ zY%S`vSrIw__tK(H;SeLe1aBp3ryk}6AB-UCqJGU3Tq)=@SN>C}GrnVd*qfAn)L+$n zY?(LGi89rHSy$S!s1v@~t2$_;OPo^F$x)l4`Z5L9E$UQ9ou&rjUQP#Ch+f9REVU)m zJ4h3e!kIQ9Wg$g!yy2_=$ilNiO*B~9d^ll_+K%bOsLr#dK%v@|X-=2Uv%+DK+FPU2 z58K>%)@JO#nXH>Wc>cT;wN%nDq;Bdubtvn8bD2MHCu~qBFbxAlqfK-5I%x3(2RXBX4 zmTI+;-WmW903WO6nu?YK@QGzOe4EMIeFyjn9f!kL>NZy5>(EHw zsk_-}XLfo{-NRJEbY9)dl*x2aeVb_p(+}!9?8S|JUQ*v>x?P)m{;0mkS*zGcS-Y$r z(KKJ2|9)~OTFNxx81^&zSIs#?kV+`n6`kY)9ims{pvAo@3o|F4GP4=n!QF}Ot3TFA;emRU$dJiDRe$G*lQ`f1s&|>{a$P9eeWt@q4%$Pm zQct|!7Y@GKW7gptnMh&U(;7*HYyYyYn?||_P1C9JPvRsL4y`m3lktQjMr&rBTCE)S z{RTjcW?`k!#c6d}*SH($k~IgW#rXDA0Hi)g?Ig9qrogq2q>%%OI%|#`Pw3JmjWk%< zLvzxpLrv~YdFzct9jaamQKsg~5wEairq)P*)=WdR#;g-fF--H~Y>Rptsd?+v^;XR# zFQYYIPT>@8C&TrW=Fjo^uQMobSz161r?a)@?8b-NaE_M16v7RYttIKy_HQnrcyqNB zcB3>U%F|LgiMt7uL;(?6;#X6VR%vaR-nA#%pta+yEgOa}vEcef>%hui9ZC7Rmdj4b zO#r;571hYver+LJ#&8=R&`Owe?xaVxRh+d;+%R8g>uSV1^BjGzZPe#u*7DooCiZYR zr)^LPW!m_C-eJ^DOM@T~N* zm#H4<42<|DV?R#tymo*i2C(UQ?H$(bVyEY|gG?VwI>gjPS{@cUNk^ELa`G3nqfE{m z?}GLbr*NKomvKS+m~jy&e?dFOWRdgGjrvjx+rv6a0*+ zdt0IVoawt{K_{5*2{N>kjK53MFPLU?-Y#fgGVPG`71J1L`E`x0*+)qZ4JCg~@pQcmKo_A^s6&e~n= z3R5>p*O(%u&;Kxe#R=Zku5)I_NXr`rE30G@H<=P7{mL{Hha}3{Ev98Wl-|{TuM@;{6 zwVCz5nSwcMX8j3M2QHIY|A%Raq<@(lB!L|bWx=R{%Hk^b*U0r9o&ZVfY+c7=lQaI|h>}X`$)sie5==Q7=rEiGe>mn~=%y-uvn3if} z>7hH>JsUf{^aiNI`A~yuhh)E<^uCJ^?YxGr2|FC6+UMlLs;Kj#!y}X9$ zCVgEE(=Gaj8r4>*SF&y@UPp(+cKuZ*k^JlW8#OH7)Zei)LEu1dyqj9LEEd1fvTX>- z)ukj`^6_P>LEyG5!;BAHI+KhpKBbu8(VQJE!=df8Jt)hI4xseU{Q#x&?9W^JLS@M* zB@iCPngE#TdF#E#Q+)Jo!xpq!7 zUnt1ChR2r+ZyNY#=kPyp3v1_uM<}=VAlb6xQ^%`iK{-8?lU9M0y| zM_E772W44{Rw2>wcth#psabE>=cM!&H3+;9?m`g58+-77TNp4@Sq`BuuhFhRwk32 z&(ip=WF$g^B_wY&9fFxy;+tXal~>>zYwDFZk>#C+bbKC( zBl!b|mvHz_4quJojxc)8IBcfeX46nkoRf?7I&vI!$&VKUey!)C;ckat;^{Gty5Z6V zXEhVdSU|@^no?&xG;sk&xVmixO3{4N3(nv33>stm6*s)KP^ysQ>>T)Gb}`Ii)Go1ttg9MtNy&eUv{mZGiGdW9opW zXM#bAQEbQNrR3 z@`VS}C=+-6qA{*}cgpCUbm!W5|Fc7abM0s9gy+@IX+5V=X(${fit>#i6n?BD$+d}VP*Rx!Ir-`YYPxpWvISi~OQ5=5=Xq_zdJPL8 znH@-S%{Y=f4E|F%g}^6bTc`y4eZ+r%-cvd(M!L;@W0Y&cA(Kvfv^4X1e5)yVfc=gz4G!s zN$zkVnbCse=w>80XOip?LGptvlJR)P^~$ph!~Tzh3>zKtqA4f2>FLmLxE$~UO8>Gcxv5<$uPS>;{jQ6)*j8m+)O!)ZIZL0CAXdU}TW z8nzR|KkQj$HV?xJ^d%XVLGnae^Dx|?;*o(9Ph?MOf@Q8Ge;-3l6YfoNLo&(bjYz&R zie$+MlB+989w;JtsDR`qK5nsujtx5ws?Cw_c~Q{UGe{oEAsN1jBya+2C(wWzHIig^ zmI?Do`wPbktw+a>Y#GGay1s-gYhh(oIT&(c8p%B< z6*!7LA2;kI7vS-wdDH~CI8iC^sL5HpTeh)+Wcc#$@wLR(Ebq1=o4WaABSuC#bpxU4 zj4!aSlnp92FyUms0+fHxrJ(JzN#1Toa@U|@EbG7)OHk^AE5g$AF1wDvvwRv#8iu!G zZH<_}2QycfmtRAB-Emjo(@Yv%X_4}5R6P*p2wtv-P-bo;S<#AQS&u_uh9kThM6fx4 zMe7cdOA1BtB^ZU{Q3VE9&*WqJ>kH0ITaD_AaZ+AMr zR7TR1li%B)j$4f*={S~T*F=(ydy`CFNYXHmq(8@&kZj2jerKb%6DTB*GuMG@=s1Tf z9CElRX@SdOH6h0VJiH16BlDwkfeItm*Z#S&FVa!`y1ejlKT8{ z>RZ!JN=xi?(@tTC==n6i1mfZhCz$6W>w^zqgtRROu!qyCMgfmmv^1TS((rH;21GPX{xGQ;DnXX{qAK>q>lT;DP-QZ@5jb8y*h%b6bam zL$^6D7@_stN9cOVhDV{*L-MPmRRUg)4VxYA3n4`dP%e)y z3CC@D1E`mLGmeI%_g1gQ5Ti~gb)t}>l5hpg&1vWWmK!?J@uYP$cm3%{vJTE&z4DGV ziZunoUYyNv4L>0QzeCUtr4B7|L7~I(9%QNV@t+u1heH^m!&5%~kdHegXP9-!HU4U% z!z_a*33K1Snkeu$FO99Z3|FAd(2*hjVDy?5sDnL*o4^%qaJQRL;)6RElW29cqt`n8 ztjFr1R6}Jg)?z8M%Bb|C=j_6z%3xmMbi%m4@MmBpYA>TD&Z3R>U{Ob{r{cNx#a!S< zTr@S|-uZoKq{Y97)iP#O70L%JBUoN%c@AYDY>e-Vbrza<0*|S41wz=0Gw76($5s8@ z^WoL~=4t+AY?`?&f9gWV5Ki*@g3IXt_lW}yyx!~Ak*3IBD@aanbQKl1i*KU*n#=wB z#M|h)5SJvl*D09f=Xj2opgv!yKQ6hCnQlMxG1`Rl$lq?F9)TAa5p*qeWtKSt+rDT{ zGXQMe_v=fvo0nX+;J){(zg{f#H=g`K85c+=a2V_Xr+vD z@k4E=+@Od+XcUhtB?H!V36BVe#bGybPaj?5;dG2`gG=(cG|SO)`+vVT5RmgPW_@X6 zDyw-=G`^u%WQj*9!doX$xEuPxUBx(-nBbp!q#fo+^05<1Lzw=XJ5?8^(a_W5OWlRr z68C4$%eHgm$y7)a*bnl+CKEDt7|rf^m|c7&v@pXQ4dWUv!E5Ak4L`!OU`-^|O3T$R zV;y{p7i<3=f*Cb(I#PbSQSQQ4klehM`oXO%l4E*zA#D!bAE9euU%0nnd!Pb~`kqoK znSK#2@DpUBOs_}shy%%dCz8vZNjlq;{94V7Ap0?R+(wy*K1;G@qb#x*x%lVenuRFm zb2a93!qls)uheOvt?nh^3n^Pq){vy(8SffJ(D9`$B<;BvS3505Z=N|6GLgLr|22Km zfQ{X=;GpsU>RM#$3McvB36#&EWM=acGQ01?sOT|ljw$|t?s0>M8o}`bc4x+U2F@Q zzFt9+u82*1d0ZXsXa)7*dNEYi*Lj?%X~T{%obDR^(sDF=AUUZ!$%7Rn|2G@snGud< zxit589Q+7Ryjcrx;=n?ekG{})-Wj5VhB1)F@xjTOxa zuT3WV=wgHZ_~9*r>XT60N+m1kbQN2%0&gM)LWAWu@i?*f`7pYKpoRG-<1@^Gc$0D} zj{IWCS~T`H+T5A@2THmX6$r%xo?^m5&97jIzg(cUGQn3ZDXkqidisKb_X??hd_n#H zHmjRuQ2E-Y*Fw{sTj+*V>vrNr3>(*&iJ%-Y}fXz3<5&a)CTv5I|+p!gn|KBq-$aO^1(f)J|)We_dd{&QNebwsm zE4679PQf84MJcJ0J@IXcXuBq@p4rn#C&oKbuU=TY3Y@A(vW+8Y?>mwF%^5>*|9^v; zL!;{d-;t@Jio^a_7t+I{2BDaV9u28t-;AfyckV*+G7mvL`1l$h4@jW!hz%r-mN@xR zIjmR?CoQoR9k=B&CAJEOt?~Eq%07FXhaH7?!tfDVw^ojLj$Dm!gzaPd<8jx)v<3`L zAW6NUdcheG6ji%=H7pjW{qb5G=aF%AlZKkZ5k4`nD>*_cj&8WdWjPNot?}`q*Hm1y zj_XR=2;(T4{t+}7+bp$o1j;``$D(W(M)EyA{+VUUgaP>ZI_pGQmRVTNAI89(HK^U$S?6REf?{!+-)T;vp#d9#a4p>G{~H;`wD)& zV*w9DZMKsm5$iw@t)q^xTxv{1pDS<`Ny&&*=3t10kEa@xq5e$`1KZ3ryATxtIYTgV zozO#g!n}biR6Lspk{q2ul9rTYvxF^4QV2E5N@^^<4CPh(%_s{MI&Pwtp^c0C9vrZR zyvnn{Oth%}oZ0hn7(c>L zD_@|jcHP{O61e0<@_{pDaT=dl*Bg+B1`WUBBAvs+yr*A68DP1A()dTa!Bue;`vF~* zVKRJ@h}k+Ihr(%Hi$l#~k~9uti}GV7p&jP<06nC0EaAbPhp8~0HBQ(4x5n5|y%wS- zxQgqdYeqdiQh_u_9bcgQvxG`15*Fipi=`AIM*B%TdVh_pqi2A{zdPqg7 zz`c5ID5D&yZfK~XN$dND)k~6ROBnKl<3Fv@{_h<9e@*!R!rpi;r_UmovHMWTaB>Rr z#gd8fUsU^gTxe4#4UDAz-y+flMmvR}tZ2{;8^SLr9_@=7q@WaasWf=NZQluP-hytJ zV)f8&ABp?F{qqKLR2S!EhU|0GFF&(cSve%4{ZWTSqh$u7f0Gd z8dH&5?J4*QGkhq>92pac``|xg$~Py)R3V)fI`A*YD`fal(g%4&*CjRYMpTH8`LUj$ zaj%t;b>O5R13Dts1&<(7=7Zj=JhC3-Ns3^4Bx(O(ysrlt&4lHfOqEQO(JZYVq&6pA z75ueS!AoRw6+t!z8ySxxo5E#@U79FSL12v%PJ^15qnd$3v>?ljB8TSS zU?p0?U8p$(F_psM@_JFtVTvT`dLfWg!!iVxKc_qPOlP3!sb`4vgh(j`_r>l}Ay7M3 zP(X!$R5;-0;%v#cf|sSveep+@R*+${JZ*`Fp=?S0Lc#YO#@Z-2iW5UGRdtW{e5e?# zVLa8-&tfCH`S?*Xe0!MxRoU&wE))l|SzV=A=e3H8gLyTa#=&Bt1G0>V3Q1%c54$Ci z&v?L3*5JQ<*oDm-Z@_mF3+w|?d5MYg9gGqGBO;n9rwMRd5@j?29tq+E6QPjvS_PCu zBCM12bZt^pBD@w)30A@6gsxGoAqMx=;d#I{(;kdu8)j+kVZ0zH9(UNk1Gpu!DN=A$ zM>t+ho}T`lpcwaWRriE6Sj8kx!!)=q2$ltoi0TX;DZE}uv#GQYkp5MNv=5jt~tS)n=(R*87#c>D?0aj?D(j{jI0nC~9y zcz91LBhrh^6X2q71C`O&)Jd@XWp)bdqFcdaC~7M*N?Dr>o0#%pcK}i2cBISatWCx@ z-r16~HW^}wWY(rYYa~p+i1RiDI*N##w<*v=MC7bx!6ZqPwW&}-giS$Nn+|_SqO8q; z!RsjCnr%EOc1i*Rg)?+31_7 zVyM%JGE)VfxeoRVA)H9LW+qSX1(Q@JAmvLj$IKXwCpPoTku}Fpe0S~M{kA5eu6@Rdeo1ugi{jB6Y58A1OEY}tbzygoh{p8 z_8?(;Hq#~gRah=*r{ZjR9d1cVuy?k+0qrw|<(#s*iE3kG5C-mp@w%iG{KROsGycD5XVJV_}HoGtI*YY#%VAL$^BmgL>g+43%&k~9hF z5Ofy^{SsoXC48q0;UFMq9=uhD6SV6D5cZmKJ%;N-gYI)f4I82t*%NW)@`ZFk$xNz8j z=o7G4QkCDx=r7=uq>|xNqQ8V6B;{q#iv9|Im2_~u5q%0CNuu@f*RXdoCAb3a#VwBf z8s251KBB;BIL1^8F@24q=+j{3&w-ReTHm7RGcXN5U0FSEorP6IxY!spx;*+Uye{e6 zS(~EI!7;Whh5OrfMqhwiQfJ!!R`ezCm?`3Yv+b?u%aBHdbvU5>aP-fxUsA2olScFn zcp|ZK_4m=g!OOGAROIv?^s&*ak@sMlAoKG0U!w2BNv3NG&FJ?bXg0@#2)t;#5B@oV zj?KD(mJYdsVz%Fpet>&s1XV^qjy4{`Xo-#$kE0*KK}owdsWE@y&*G73J_K)9WB!Jh zBvoxwV;(~uQxUXluHf5x+Xb2F%H;`sB6U&C?PH$66G?wqgDg+sPCnqjBK#?PhnRm2 zSXCf!L^szMP`)W7S^-`aUET3|Xg*Osn1(!5G-a@)iFo0pDMutN?dcVxDW5QjE~_hN znMz?=c|eS=Y$_oyr7&<{c#KKuwL}mtLd}XXlu<-9D^r=M^5bI6N=XeJ?n+)x5lPo3 z#-jK$RY5pDxv8z}XUc~e^E$=URw7rBWj>6Uml0D}*&!*j^MIK8it9?!mBNtBQ87+R ztRZnq=A@VgN+%}K_AW|~=cxa4G)$1$IeKP{i!xi%Ur|KMnDRkchI_k|L(j!K`&_)= zSBlm)i-`IwBHtonC{uN2Iuqe}aC}q_Ceep=rO>d&{1{gyPtx|~Xoez5X zDj!Ok3`A$8<-`2fV|*3#Nae4=B`L1rfEKQJmI|kXOYi}s5+o@X@9Bgq!zIx& zEL>S9X?RzP_bm}!-4E~jSq%N;B)h@#eiIX+ln8=89WKU1E0s3-CB~}wm7^st9y}M{ zh>26IMCiqH@$Hy+NE>W%WAJ<>PmH6-ZWgGEu{1Y01iYLAXXb6O^L-E-4~?Z;Mn#U(Y^y z{q&NOAc@vbZIr2k44`Ujs}u-?JwpGe(l%}^+_6yAArM)1|Ob=y)ATwnqL)lKmnYkE~p&S-E%*-z_y_Dgbg^n7nk1~sh zGGkz?^;IrPqy+mZb+!m4CD>0%5yT1hQ`D`j!vsUD{S^ySzWJB*2qb5r!vsD32PpL0 z8k9upVmlb9T&)x|tvJRyNcr1FMv8T?;<-&I*Jrf14pqV=wedJ(9;W0=T3y`LI$SBY z(e0QKiv4yG?+WThDn2&49WzQR)^W-L zNj@GEYK>PaY;?vvLD?@Uu4009q5?aF8>*))rJEqGr!2*7C+oPLrYb&6qMoKI&4dnX zW~SAcrli;~-#Sz2xm!3*UA)LTN11G+GHb4qv!`0O)jCgEWuw=uh04%3s&)IVManE2 zy=N^}I=)%0`_Q^b8E&JK)}@BB{4G>sr_s7ksI^k5B*IqHx}Pz>qWmLu1B-9OtWp~6 z7rKGPw_{c-#Y7md1L{hZbyC*>b!AG2x2tvES<98dMCh|a@g?h8#r1%oqs4yKb&3&e z!)Dg?${I<#imzHXD0^*`Y2B!Jyd#{h8*(FNlM+URPS*{&9kW@flsdiaM$8uFpw#JQ zw_~;{!3RaW@mnU;s#H>lFy8nrXUyA_y@tfR;@_;>m18z~V0~4|dsmpoRXnloP%cWM z*50kOIK(<^?LkP%HnNL-P3dW)da!pP7f!iAC+Jmg~a}>q}eDc_Np>QQgN1pdR>`l zBTw@UWvY!5Vs9$5nT%2>&Pt8_Rmmg7b=igTwz0RAgk#n8qv?0$q@Tmr3~D z*0AFu;^dw)V)0uHOe^5^m?DRV%B;^ww*s~@&1Vvew1>(Pq2rsc50y>QQpEH7T*Nz; zPhQd_8Q(HyNF0WnQXVSPnS|57lpLl~bKtUrUVkZt(vqD1rEGuBa<8z2_DhOl|5DnW z-~>4{pblmtpJlP2`g}pUA~;|)UmvTeZ6wm7NmWNMiHcIyJf>3kyiaPhs_vEaipSPi zUG@Kx+?2xf4zI=5QV*RXS^<4F9E+{5e#t}$wuy06pAzA{qn%A3Do(2F*Mb_ZGXlX$ zZ7H!LiB*O_I8{^ByYBYHvv+mJ&^t)P;2=9Ipx{;aK9Vjz3La#Pxx* z+Ws4&QoP@JGS*qmJ43VrW={Oai1kt*FpBE-R-XzbSDUx$`5l>(E=%)P+Y|8}FsC>l zb%3OZboV%4b&9aW#g<>3pPDTxBE5N>zgi?Lp;kgfT%fv6=#b*$j3D){RPGCRifgXg zea}h2zHq;|7OJ150XQTDt1&i8(_5-95pmY4AVkez61SH_)vycIIt4;ipNmAIK|@vN zOH6p1_NBN`Lk*DFIlN_pOe$$!qsv~r@Hr!i%{GDA|hT!YNejMD(LQ(L2;4l zBS|^FgW_;^$u*(-BVjPX-LfT?G(R6y<#&R8^2nO{EZ?~+i#Cwude!?$=tGgp}JAsEXiZ}H0O=# zPDwYK#OoW?{gPJZ?v3B5-Vnrd%trMQQ>A?kXcEc0Q}>I3nc)zOmPZ*nAli~6mN4#aO&>--@sb2AUbSE@4~ z2-=l>EPk6>_<-lXd>k+i#BWzO{UwyY^f?j#sv7#YpshG_?NZw_iSuBW8uFNQViw=6 z4wpoeIMTmDN0az&^$A|G&_FYH*!lR~Y9GCtuEy_CU&H6*SpFh@mhpyq7~jMqnvA92 ztNP=kaiYDRcjDhvS4pbyjIr)hZ!w8yf&0}q_GDQKmlr&Y->*i}r<3vAUO4~~-d1gu`l2BAi9l36Tj$)uA>@N%&BmCM|!O(K+EGby@@RBF33x>Rcv6oR!Da z;^&m>1>rqOD!pUWNEg8~pGU`#hM5uVSfnCGF0%LvmrN0)uXLpH{6x$(cE=4ikh! z>5Z6g)R~eZ(l5q*tCrYww`0CjOKrMeV!l^56XB9Pa`XCxbLv4GZA&<>{vzpuU)=s6Iqk7stB3o$#Xycy|wbg4xdXNWxF5zoY@%h}ugk zZ$&g-(yAUr%OzC?5$%_>A%N(tq}O~6!Y2}qBqAStMTQbg97EJb(uRISqa}qlCMuCM zVLs7bNuO>e`c_i2&P0zStqvseXe?4_-r5S^5?Ifv+uq`x;3 zHSiQk_;Bg1lH9mq21rU-K$dxu_Hkw^CE1hCP>)NT%gS4lzA2)J4qhUOe?}8UN_x_r zsE?!zWkho&xpO^jlC-Bk>5fSX8%K0qQoXT6MjdaFL|P(Ym?XE}L>ZD2781>pWH*v% zoum(!5FM4&oD;kv=~wn?_7N%UOCZZ&Nq$`0-3*CsxtC6p^a)2Sm-J5yig;MkyG@BM zOM2RuNauTrrDk;|QIMoVi-^)BZEQv~S<>}FqE)_z$XgV*=s~Gm#mbA4PH+##@5=F6 zv2`g$^p`Y{%iEqwjHFmXe8^h8+WASn$V7wg#~AP9K++YN?~N@~e^E~a;_gmbYQi`> z{Jhe)tjssB?cl6kQJ)A?yaV`I!WFenQ;rDxBJtf;)h9?04bNBAFhQ8asf4TQYQB*w zlDMg^XA&vgRJTiAv-C>|zpDF@c>W_dx71rg$w}N&kK$c@%qcqE*Z7v|+(P6#Xv@`v z-_#JMDj0wh?r&lvn<9t2Q)SR84Zc|)Ss9P zx?Gsh@V@#)D0zzgQ++F(6Eu5I_}lAG^`xZc6U^R!s<$LrGJ_o+s&)~=(lxWb_d_*6 zQj^kJiI3DINi9n2BK48647v;sOs1|=nEqm$4n zu69BriyV@)$;pDenbu26WID^V0v<;6PD;|IrBG%>FGGB(b+ou+-qlyAP>d~Q+~?H5T`Tpuc3 zv^$avH=?H^o_UemLj%$B61y?4W2LL4+Z@qf(j%sDNfWK)CP`Ah)z8vJOOtee$bzJ< zT3<;|hb%!FB`G33$kI)lA_$*}1X+ykTAmG8C1q&uN;1B_A+HO zAAYECw)D|F+6$Tm&X&H~cu61Q^W=Wo2}!N-p>}@_@6%H~nP+VbgaKMTN%Xj8fT1;( zxC+ZOK=YHd2g@`-iZlGgwXu?@ z4l}ixlBi)aHKRfzwM?eAOH!?hZAqEhJJk`(iH=FCS2P#tq#&%s-AKzjaS5R_j`oAK zD`}!;?k(M&G*}znSx}=Q1%_z6m?Nav%)VN+cz8e5ef7 z_Api1_c8V*4b={bc;-C|4wcwsaRQe}=3$%7UdHy3zNM5Lo6-qPp z;1VrM67}E`tx{4w&p=qBy(X!#XBE;>Cj5=%jF*#_Y9YNi2^ia@d-5wF8h3}{UmhuZ!LMKd@AD|vx`svz~>olO-j)})2>S|n{AdZDd)7qHcOwB3z~bs>J*x$T-16oRT-SbWo@89pqyUTMl%({ zWTc<8V@#BMY|77Co&MzJ7;H_Ns9w?PGl_Bis@9k(AMWcfrCin8N@{0`O}VB`V=6K? z@C}6P+FVJ7uWuD1*F8Rn?vl|l<%W&stP6x2+D105vLBA8;WJ&|F3y^bxY2HCZwgDL zbP;}JMte)rMy9u!3bB4kca#bHg)yaD%1teA09Or{{+5<8P|&$X15$p|iX~k}`dy10 zM7n(VV44EAwd;}|W;$DLYbAq)?$@EtmOEPTP(jId3V#1Bg^4<1mUdSw9!9z_85?Up2apTqutYIR16 zcwcxP_J63g5QGWlq&(6FOC8;3daRX<66xWc7Q_FEc9akkyn+#*YCn$_w0(JT%0F8D zF@oyHu1Qh#Fs6L)?qLVIu8$=*DVlAk@+KN*a?yWSJ=HqH8%( zFjE!2j1cEnN1r2!GE-OIA&D|mPcNDzGCCX=WcBn-OhqtoQ<`2+-)~4X5bNv5B~3zd z&@W25g%@IudfH@89(v*RtD}B7M^L-w@1!{D=6pfN#=M{6q|alj0;=GK`YNf*FH)eP zo;FWd4rqBIrJ=rV9?yS8kk#_Azl;8xRQ`?E`L6mulAOH0PjS`F1r$-Vp_@K{DIZ>T zSHMm8K-Z+p-9Th5;UvuOFDO*q^a@Ek=Uqy1(|1UkI{pgMof0wsnP&vwM6@mu5ohB| z6mEJkQx#B^y6HEBj$5sfe%D52v5j=Mr5q0qG{2MLuFqwn*EGEG+pm3=kxq<{9{O;m zYxcC?#zP;Eg!A7ud)jd0q0eR|b;LhYJoJS&dYa;;?g%aZ^;42QcGOdY^gEJ1sEu!n=`XJ& zF9p!TSx;@I4`(vOiPu~oFO@Hu@JmGcqgTijA5F$6QO$MFRf60oL$lwdk5PcG3so8$;D!UMUg&@5B ziZ4p&8=li0eNOiUlPE-pewL{K>Y1{%5dEJTx=`I*DoQ`Emako?9>!D(M&k*!Q^WMp z5*tr&OKqi>Gl|W%(fTDxwAVLU|C6Z*w;}tc#^`osq^ zHBNt5>QeEPi_?!v-Jh$hNXMma%48!7P5+fhySL-?TDVXa6Nw#?FOx_xUZ+Jg;ODq0 z!Fc_!AWkq|KPGjQV7z`p>L|f@{adMR0QIbwzb*JbtOrm{L^p}`KMpN`OrULjCuLe`}vywb< zi*u@8jI$t}c>VEeu(f_?ouE%~i}Oo{o`!=aDHr1&=QjF|je^$V9_N?!CYuFaP@OGp z_3lg}`F8psCXswQeWbMPtV~qf=@V<{+UqlUz~5o7!FfQ&NFrR%(Xsu~W={Jh1lC{dbCd*Q#|SzL!3mN#wM*o-cL(+NJ2d z^>QXLk@V3wNuqhAkG{tiZ%%3-{WBZkW;Xp>rULj9N7;UQ=q{fB3cw9V`F?u0U6?#h zG69R*IQ7@_YS2J^FA-PUywps+a5odU;zDDDeq7RcPonFR=snjFdV|-6CEcl zO^5IA==%jh`0T3G$-4huQ9`}L*Qrx<+~P!D;DhvYsZ(_~NpTgIQ>W=AOr_>p71xkH zXOhqVrs>}aQ|<}V^h-a zE2nd*v-BWImz>X~&eoG8jc9N#b&lRk5PsbpFfK7s(@#qp=5Q-DU%w-%i_@*td3uAlL`J7O-%2geBbfN@7W{OO z9w(K*)_RaysCSS`T9Oy*={0o4`e32seeNZCp3U-~)DpeTeo8`|70dKANpw~$)B7@s zvuT+=oT&gZ4P5Ok(^nl7d7D|E$nFqPwW$MB0lZxMLFzJn$9vT}`_`}MUWb{?AB^;G zy+#it!rdXC4GOEhMh_7LO&8vXS);cRmPof_*6Jxo*b-b98eOdwdLKgUG_I&zr@#EZ zP|{w$_4)uJ)X`qP4f-lct8g#hMtz5k&X_mp7bVR_-Ddrcjn0_2=>8uFpR{*yt8OJi zpSX9>h^f>kOXZR|SFPLhLaAIbC)2uJKPYv*XSTP#s-Kj)-ZTFn+TH}9s_Od}-)GqO zo;!$K1O*ucL1qgS1ss_iP#jQ9DO3``@_^ZCJ_y50V@i}YSYwh{$v+uoUpVQzt+{41@#|!R{+oQT8 z2TnhRukb#trW(2zK=+KAZRlPA-ClL0p_?=Ro;ZD<`jnxZ0|B2^FB-~TIV0kpQ=1H3 zFZh<@ztqShBH&}2M#R;qDab*<$2NT%`@Fi)(Di$0aNG;(BZjWuL+7;p>M=vtu;^Os z0rf*e*Rbf@*cWxx@tSZtckZ>=S~V0oa5{JHx3Mp&IfgFhp=+^q>O4c2^U$}kFRL|% z?iM(GMSaWA-2$fvRd!VPtOTEjRCnaSXC?Ujx0+_?9tNMUs(QAed>EV_RyP~UH4DO% zj;Q-?bJ0mh)mIGeTlmKG>*^^Z-M3JsZ>ap32>3SW-c)^%gMe>??kzRl&~+d8b=+}v zilOU1?#H;d)yH*1=?BVp)RzpUA1F_#O@f0diL-ZAm)Fs$ScsieT@4NwEhp89g0oy% zADeVieZbJ+LhPhE!_eVE?4&x+&~2I72P|KCT^CMq<#$p&N=h+)PpYR34#)3F^%8M7 zC=UjmRKFlj+z;MUzrU@M*n8@)#FeouJ}~J$Repo&f(mg;^&w6a;fOZQy-^A{qxNZK`Mx?Bx#s)d`|3!;bU2p+-dD4UThF|A%3z{(goH1y%z2xHT^bM zne?%mM;v_r(|bo{(nWQiq3qo)()E%$?vzOAEZUrONu6kLox$>wT4Zo&`H7l#y2bJn zb+o~u&rj6*Z*xmsKUE*R&FxD1R2_Gg(&$fQ=@Nl&nGpiiNsYh<|ifppk@k=9$TB#hYU-srzTZ5IPV=& za+A8v;5q~Mqk8bRPD}nt4f;^T^VWB`CI6zXX=ZnLC;zIxe48_?|558(aet_$3r4~n zW>w;mw>hnc!eef8OI=ky&D=qU zJ6~^bop(Ei7R6>l-bFi{1S24X!Dc3c>BxE z5lZ#sj=Wb3o9x50iNl`1BH53_*OsYwci!=2axlO6mEf{h!M*@bx-K~EGk5U};wstM z6p2W=lPW z*fO>So=67qnRh7X8oG_<=Y0q9Q)N*TuUZtH?lhV!Qk&U;5>$_V~S zD{dq|*@{c&4XwCQyooq0?}mP(x$XPr(#NFS!@a+!`=6+caXj$0QexwHBynZzCe+M0 zKJyOUTtl~+qwaB`)4reAFJ&A*X>g(NQQbIxOK`032(%pe1BHjL`L*pij!*vK_UC^R z%jDCA5^{>%JmSjO7zm%qKW=KyH*!~qD`PRxqM3ZukF9n05?98&NLNgp7zder$sLxf zfrID2GM1?hPRZmOjf9$YaLT=WyTPrI2B+M|cN^R^d2mV=-$$INwekFbq5C%kGLauP5`JSDk&?~d zLJl4!ehDj=bNG3K!{7GiaO=(HtQ`!>;qa3HuoQcRlXwK_-k>)aOyVg9hu^Wx<;%$u zpN#KG$>oPgw@KH!j~<_r$KMvLmIU1W`~!n~Y}ojeDg3Izy#(A;{xfk{3eF0+<5$d# zSWr#p?goeJo9VpQEz;5QW;#z294&9A^Hf8poJGkB1p#PBn? z)8H`t48D^%(S|elGsKBDoWWlpu8h5|9_l@V|J&g1wmy(DlfPkbn)*P>gZyNxbcOsw zL${m5_%GxK;jkp^dQ%-2V+*;fNpP#J5}VDLS#WZ@i?OqLhQV>@dUJS@hB}d%IeZ~; zu(!hx^`67$SzB}u@e<<7*t3o|V;;IQ(G`Ga^AAXGQ*{uc9jf}`p#=DMN7#xCZ|4IOUA>c#vWgT?AD=I;|H z$^;>ZD`VYY#1`{XmzFXW^Hs!^vFFV*Q;IojE3&=7HX?2T?@OG>_Ch|EIFao|Jj>uP z+lzGmF}%wQ^ZmevxhaeIWx-Lt7xAwQ9p-xxZ!&cL4=w^r_)!a{qgReB;{Aye*~$DBGocw4uXnm+~w_huJRWI}HwNyOckv6DtCi@*{>411{#r3=RV>=7Za} z1YFEV3XTFU=3@;V23*Xu4IKtt%y$_a23*XaAx^|w%wKP>x0JAqzh#(Wz%uUP*%Gjf z`wET%mhm7%hXKoYq@lxrWqhW=VZbszmpBoyj8_^uEMPg`;3>oX2igz=mUAC35pezb z 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 delta 109934 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

cx|)HXDj(d@Ewg^6ob%`$b$=ZAnPNZbNmxJd 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 E0CEPy8~^|S diff --git a/Source/Rule56/Comps/ThingComp_CombatAI.cs b/Source/Rule56/Comps/ThingComp_CombatAI.cs index 84cee73..077f785 100644 --- a/Source/Rule56/Comps/ThingComp_CombatAI.cs +++ b/Source/Rule56/Comps/ThingComp_CombatAI.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading; using CombatAI.Utilities; +using HarmonyLib; using RimWorld; using UnityEngine; using Verse; @@ -39,15 +40,6 @@ public class ThingComp_CombatAI : ThingComp /// Whether to find escorts. /// private bool findEscorts; - - ///

- /// Move job started by this comp. - /// - public Job moveJob; - /// - /// Tick when this pawn was released as an escort. - /// - private int releasedTick; /// /// Sapper path nodes. /// @@ -66,36 +58,60 @@ public class ThingComp_CombatAI : ThingComp /// Wait job started/queued by this comp. /// public Job waitJob; + /// + /// Parent pawn. + /// + public Pawn selPawn; public ThingComp_CombatAI() { visibleEnemies = new HashSet(32); } + /// + /// Whether the pawn is downed or dead. + /// + public bool IsDeadOrDowned + { + get => selPawn.Dead || selPawn.Downed; + } + + /// + /// Whether the pawning is sapping. + /// public bool IsSapping { get => cellBefore.IsValid && sapperNodes.Count > 0 && GenTicks.TicksGame - sapperStartTick < 4800 && parent.Position.DistanceToSquared(cellBefore) < 1600; } - + /// + /// Whether the pawn is available to escort other pawns or available for sapping. + /// public bool CanSappOrEscort { get => GenTicks.TicksGame - releasedTick > 1200 && !IsSapping; } - public override void PostSpawnSetup(bool respawningAfterLoad) + public override void Initialize(CompProperties props) { - base.PostSpawnSetup(respawningAfterLoad); - if (parent is Pawn pawn) + base.Initialize(props); + selPawn = parent as Pawn; + if (selPawn == null) { - armor = pawn.GetArmorReport(); - duties = new Pawn_CustomDutyTracker(pawn); + throw new Exception($"ThingComp_CombatAI initialized for a non pawn {parent}/def:{parent.def}"); } } + public override void PostSpawnSetup(bool respawningAfterLoad) + { + base.PostSpawnSetup(respawningAfterLoad); + armor = selPawn.GetArmorReport(); + duties = new Pawn_CustomDutyTracker(selPawn); + } + public override void CompTickRare() { base.CompTickRare(); - if (!parent.Spawned) + if (!selPawn.Spawned) { return; } @@ -103,7 +119,7 @@ public override void CompTickRare() { duties.TickRare(); } - if (IsSapping && parent is Pawn pawn && !pawn.Downed && !pawn.Dead) + if (IsSapping && !IsDeadOrDowned) { if (sapperNodes[0].GetEdifice(parent.Map) == null) { @@ -133,10 +149,7 @@ public override void CompTickRare() public override void CompTickLong() { base.CompTickLong(); - if (parent is Pawn pawn) - { - armor = pawn.GetArmorReport(); - } + this.armor = this.selPawn.GetArmorReport(); } /// @@ -249,26 +262,26 @@ public void OnScanFinished() } lastSawEnemies = GenTicks.TicksGame; } - if (parent is Pawn pawn && !(pawn.RaceProps?.Animal ?? true)) + if (!(selPawn.RaceProps?.Animal ?? true)) { - float bodySize = pawn.RaceProps.baseBodySize; + float bodySize = selPawn.RaceProps.baseBodySize; // pawn reaction cooldown changes with their bodysize. if (GenTicks.TicksGame - lastInterupted < 60 * bodySize || GenTicks.TicksGame - lastRetreated < 65 * bodySize) { return; } // if CE is acrive skip reaction if the pawn is reloading or hunkering down. - if (Mod_CE.active && (pawn.CurJobDef.Is(Mod_CE.ReloadWeapon) || pawn.CurJobDef.Is(Mod_CE.HunkerDown))) + if (Mod_CE.active && (selPawn.CurJobDef.Is(Mod_CE.ReloadWeapon) || selPawn.CurJobDef.Is(Mod_CE.HunkerDown))) { return; } // if the pawn is kidnaping a pawn skip. - if (pawn.CurJobDef.Is(JobDefOf.Kidnap)) + if (selPawn.CurJobDef.Is(JobDefOf.Kidnap)) { return; } // Skip if some vanilla duties are active. - PawnDuty duty = pawn.mindState.duty; + PawnDuty duty = selPawn.mindState.duty; if (duty != null && (duty.def.Is(DutyDefOf.Build) || duty.def.Is(DutyDefOf.SleepForever) || duty.def.Is(DutyDefOf.TravelOrLeave))) { lastInterupted = GenTicks.TicksGame + Rand.Int % 240; @@ -276,7 +289,7 @@ public void OnScanFinished() } // pawns above a certain bodysize who are worming up should be skiped. // This is mainly for large mech pawns. - Stance_Warmup warmup = (pawn.stances?.curStance ?? null) as Stance_Warmup; + Stance_Warmup warmup = (selPawn.stances?.curStance ?? null) as Stance_Warmup; if (warmup != null && bodySize > 2.5f) { return; @@ -295,9 +308,9 @@ public void OnScanFinished() } if (verb.IsMeleeAttack) { - if (pawn.CurJobDef == JobDefOf.Mine) + if (selPawn.CurJobDef == JobDefOf.Mine) { - pawn.jobs.StopAll(); + selPawn.jobs.StopAll(); } return; } @@ -305,13 +318,13 @@ public void OnScanFinished() { return; } - Thing bestEnemy = pawn.mindState.enemyTarget; + Thing bestEnemy = selPawn.mindState.enemyTarget; IntVec3 bestEnemyPositon = IntVec3.Invalid; - IntVec3 pawnPosition = pawn.Position; + IntVec3 pawnPosition = selPawn.Position; float bestEnemyScore = verb.currentTarget.IsValid && verb.currentTarget.Cell.IsValid ? verb.currentTarget.Cell.DistanceToSquared(pawnPosition) : 1e6f; bool bestEnemyVisibleNow = warmup != null; bool retreat = false; - bool canRetreat = Finder.Settings.Retreat_Enabled && pawn.RaceProps.baseHealthScale <= 2.0f && pawn.RaceProps.baseBodySize <= 2.2f; + bool canRetreat = Finder.Settings.Retreat_Enabled && selPawn.RaceProps.baseHealthScale <= 2.0f && selPawn.RaceProps.baseBodySize <= 2.2f; float retreatDistSqr = Maths.Max(verb.EffectiveRange * verb.EffectiveRange / 9, 36); foreach (Thing enemy in visibleEnemies) { @@ -334,8 +347,9 @@ public void OnScanFinished() { if (enemyPawn != null && distSqr < 81) { - bestEnemy = enemy; - retreat = true; + bestEnemy = enemy; + bestEnemyScore = distSqr; + retreat = true; break; } } @@ -380,33 +394,37 @@ public void OnScanFinished() { return; } + if (Prefs.DevMode && DebugSettings.godMode) + { + _bestEnemy = bestEnemy; + } if (retreat) { + _last = 1; waitJob = null; //pawn.Map.debugDrawer.FlashCell(pawn.Position, 1f, "FLEE", 200); - pawn.mindState.enemyTarget = bestEnemy; + selPawn.mindState.enemyTarget = bestEnemy; CoverPositionRequest request = new CoverPositionRequest(); - request.caster = pawn; + request.caster = selPawn; request.target = new LocalTargetInfo(bestEnemyPositon); request.verb = verb; - request.maxRangeFromCaster = Maths.Min(Mathf.Max(retreatDistSqr * 2 / (pawn.BodySize + 0.01f), 5), 15); + request.maxRangeFromCaster = Maths.Min(Mathf.Max(retreatDistSqr * 2 / (selPawn.BodySize + 0.01f), 5), 15); request.checkBlockChance = true; if (CoverPositionFinder.TryFindRetreatPosition(request, out IntVec3 cell) && cell != pawnPosition) { -// if (Rand.Chance((sightReader.GetThreat(pawn.Position) - sightReader.GetThreat(cell)) + 0.1f)) -// { + _last = 11; Job job_goto = JobMaker.MakeJob(JobDefOf.Goto, cell); job_goto.locomotionUrgency = Finder.Settings.Enable_Sprinting ? LocomotionUrgency.Sprint : LocomotionUrgency.Jog; - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.StopAll(); - pawn.jobs.StartJob(moveJob = job_goto, JobCondition.InterruptForced); -// } + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.StopAll(); + selPawn.jobs.StartJob(job_goto, JobCondition.InterruptForced); } else if (warmup == null) { + _last = 12; Job job_waitCombat = JobMaker.MakeJob(JobDefOf.Wait_Combat, Rand.Int % 100 + 100); - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.StartJob(job_waitCombat, JobCondition.InterruptForced); + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.StartJob(job_waitCombat, JobCondition.InterruptForced); } lastRetreated = GenTicks.TicksGame - Rand.Int % 50; } @@ -415,69 +433,74 @@ public void OnScanFinished() bool changedPos = false; // // ------------------------------------------------------------ - float moveSpeed = pawn.GetStatValue_Fast(StatDefOf.MoveSpeed, 450); - if (pawn.stances?.stagger?.Staggered ?? false) + float moveSpeed = selPawn.GetStatValue_Fast(StatDefOf.MoveSpeed, 450); + if (selPawn.stances?.stagger?.Staggered ?? false) { - moveSpeed = pawn.stances.stagger.StaggerMoveSpeedFactor; + moveSpeed = selPawn.stances.stagger.StaggerMoveSpeedFactor; } float dist = bestEnemyScore; if (dist > 25) { if (bestEnemyVisibleNow) { - waitJob = null; - pawn.mindState.enemyTarget = bestEnemy; + _last = 2; + waitJob = null; + selPawn.mindState.enemyTarget = bestEnemy; CastPositionRequest request = new CastPositionRequest(); - request.caster = pawn; + request.caster = selPawn; request.target = bestEnemy; request.verb = verb; request.maxRangeFromTarget = 9999; - request.maxRangeFromCaster = Rand.Chance(Finder.P50 - 0.1f) ? Mathf.Clamp(moveSpeed * 2 / (pawn.BodySize + 0.01f), 4, 10) : 4; + request.maxRangeFromCaster = Mathf.Clamp(moveSpeed * 3 / (selPawn.BodySize + 0.01f), 4, 15); request.wantCoverFromTarget = true; if (CastPositionFinder.TryFindCastPosition(request, out IntVec3 cell)) { - if (cell != pawnPosition && (prevEnemyDir == Vector2.zero || Rand.Chance(Mathf.Abs(1 - Vector2.Dot(prevEnemyDir, sightReader.GetEnemyDirection(cell).normalized))) || Rand.Chance(sightReader.GetVisibilityToEnemies(pawn.Position) - sightReader.GetVisibilityToEnemies(cell)))) + if (cell != pawnPosition && (prevEnemyDir == Vector2.zero || Rand.Chance(Mathf.Abs(1 - Vector2.Dot(prevEnemyDir, sightReader.GetEnemyDirection(cell).normalized))) || Rand.Chance(sightReader.GetVisibilityToEnemies(selPawn.Position) - sightReader.GetVisibilityToEnemies(cell)))) { + _last = 21; Job job_goto = JobMaker.MakeJob(JobDefOf.Goto, cell); job_goto.locomotionUrgency = Finder.Settings.Enable_Sprinting ? LocomotionUrgency.Sprint : LocomotionUrgency.Jog; Job job_waitCombat = JobMaker.MakeJob(JobDefOf.Wait_Combat, Rand.Int % 100 + 100); job_waitCombat.checkOverrideOnExpire = true; - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.StartJob(moveJob = job_goto, JobCondition.InterruptForced); - pawn.jobs.jobQueue.EnqueueFirst(waitJob = job_waitCombat); + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.StartJob( job_goto, JobCondition.InterruptForced); + selPawn.jobs.jobQueue.EnqueueFirst(waitJob = job_waitCombat); changedPos = true; prevEnemyDir = sightReader.GetEnemyDirection(cell).normalized; } else if (warmup == null) { - pawn.mindState.enemyTarget = bestEnemy; + _last = 22; + selPawn.mindState.enemyTarget = bestEnemy; Job job_waitCombat = JobMaker.MakeJob(JobDefOf.Wait_Combat, Rand.Int % 100 + 100); job_waitCombat.checkOverrideOnExpire = true; - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.StartJob(waitJob = job_waitCombat, JobCondition.InterruptForced); + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.StartJob(waitJob = job_waitCombat, JobCondition.InterruptForced); } } } else { - pawn.mindState.enemyTarget = bestEnemy; + _last = 3; + selPawn.mindState.enemyTarget = bestEnemy; CoverPositionRequest request = new CoverPositionRequest(); - request.caster = pawn; + request.caster = selPawn; request.target = new LocalTargetInfo(bestEnemy.Position); request.verb = verb; - request.maxRangeFromCaster = Rand.Chance(Finder.P50 - 0.1f) ? Mathf.Clamp(moveSpeed * 2 / (pawn.BodySize + 0.01f), 4, 10) : 4; + request.maxRangeFromCaster = Mathf.Clamp(moveSpeed * 3 / (selPawn.BodySize + 0.01f), 4, 15); request.checkBlockChance = true; if (CoverPositionFinder.TryFindCoverPosition(request, out IntVec3 cell) && cell != pawnPosition) { - if (prevEnemyDir == Vector2.zero || Rand.Chance(Mathf.Abs(1 - Vector2.Dot(prevEnemyDir, sightReader.GetEnemyDirection(cell).normalized))) || Rand.Chance(sightReader.GetVisibilityToEnemies(pawn.Position) - sightReader.GetVisibilityToEnemies(cell))) + if (prevEnemyDir == Vector2.zero || Rand.Chance(Mathf.Abs(1 - Vector2.Dot(prevEnemyDir, sightReader.GetEnemyDirection(cell).normalized))) || Rand.Chance(sightReader.GetVisibilityToEnemies(selPawn.Position) - sightReader.GetVisibilityToEnemies(cell))) { + _last = 31; Job job_goto = JobMaker.MakeJob(JobDefOf.Goto, cell); job_goto.locomotionUrgency = Finder.Settings.Enable_Sprinting ? LocomotionUrgency.Sprint : LocomotionUrgency.Jog; Job job_waitCombat = JobMaker.MakeJob(JobDefOf.Wait_Combat, Rand.Int % 100 + 100); job_waitCombat.checkOverrideOnExpire = true; - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.StartJob(moveJob = job_goto, JobCondition.InterruptForced); - pawn.jobs.jobQueue.EnqueueFirst(waitJob = job_waitCombat); + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.StartJob(job_goto, JobCondition.InterruptForced); + selPawn.jobs.jobQueue.EnqueueFirst(waitJob = job_waitCombat); changedPos = true; prevEnemyDir = sightReader.GetEnemyDirection(cell).normalized; } @@ -486,11 +509,12 @@ public void OnScanFinished() } else if (warmup == null) { - waitJob = null; - pawn.mindState.enemyTarget = bestEnemy; + _last = 4; + waitJob = null; + selPawn.mindState.enemyTarget = bestEnemy; Job job_waitCombat = JobMaker.MakeJob(JobDefOf.Wait_Combat, Rand.Int % 100 + 100); - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.StartJob(job_waitCombat, JobCondition.InterruptForced); + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.StartJob(job_waitCombat, JobCondition.InterruptForced); } if (changedPos) { @@ -516,17 +540,17 @@ public void Notify_TookDamage(DamageInfo dInfo) duties.Notify_TookDamage(); } // if the pawn is tanky enough skip. - if (Finder.Settings.Retreat_Enabled && parent.Spawned && GenTicks.TicksGame - lastScanned < 90 && parent is Pawn pawn && !pawn.Dead && !pawn.Downed && armor.TankInt < 0.4f) + if (Finder.Settings.Retreat_Enabled && parent.Spawned && GenTicks.TicksGame - lastScanned < 90 && !IsDeadOrDowned && armor.TankInt < 0.4f) { - if (!pawn.RaceProps.IsMechanoid && dInfo.Def != null && dInfo.Instigator != null) + if (!selPawn.RaceProps.IsMechanoid && dInfo.Def != null && dInfo.Instigator != null) { - if (pawn.CurJobDef.Is(JobDefOf.Mine)) + if (selPawn.CurJobDef.Is(JobDefOf.Mine)) { - pawn.jobs.StopAll(); + selPawn.jobs.StopAll(); } else { - Verb effectiveVerb = pawn.CurrentEffectiveVerb; + Verb effectiveVerb = selPawn.CurrentEffectiveVerb; if (effectiveVerb != null && effectiveVerb.Available() && effectiveVerb.EffectiveRange > 5) { float enemyRange = dInfo.Instigator.TryGetAttackVerb()?.EffectiveRange ?? 5f; @@ -534,24 +558,24 @@ public void Notify_TookDamage(DamageInfo dInfo) if (armorVal == 0 || Rand.Chance(dInfo.ArmorPenetrationInt / armorVal) || GenTicks.TicksGame - lastTookDamage < 30 && Rand.Chance(0.50f)) { IntVec3 pawnPosition = parent.Position; - waitJob = null; - pawn.mindState.enemyTarget = dInfo.Instigator; + waitJob = null; + selPawn.mindState.enemyTarget = dInfo.Instigator; CoverPositionRequest request = new CoverPositionRequest(); - request.caster = pawn; + request.caster = selPawn; request.target = new LocalTargetInfo(dInfo.Instigator); request.verb = effectiveVerb; - request.maxRangeFromCaster = Maths.Min(enemyRange * 2 / (pawn.BodySize + 0.01f), 15); + request.maxRangeFromCaster = Maths.Min(enemyRange * 2 / (selPawn.BodySize + 0.01f), 15); request.checkBlockChance = true; if (CoverPositionFinder.TryFindRetreatPosition(request, out IntVec3 cell) && cell != pawnPosition) { - if (Rand.Chance(sightReader.GetVisibilityToEnemies(pawn.Position) - sightReader.GetVisibilityToEnemies(cell)) || Rand.Chance(sightReader.GetThreat(pawn.Position) - sightReader.GetThreat(cell))) + if (Rand.Chance(sightReader.GetVisibilityToEnemies(selPawn.Position) - sightReader.GetVisibilityToEnemies(cell)) || Rand.Chance(sightReader.GetThreat(selPawn.Position) - sightReader.GetThreat(cell))) { Job job_goto = JobMaker.MakeJob(JobDefOf.Goto, cell); job_goto.locomotionUrgency = Finder.Settings.Enable_Sprinting ? LocomotionUrgency.Sprint : LocomotionUrgency.Jog; Job job_waitCombat = JobMaker.MakeJob(JobDefOf.Wait_Combat, Rand.Int % 100 + 100); - pawn.jobs.StartJob(moveJob = job_goto, JobCondition.InterruptForced); - pawn.jobs.ClearQueuedJobs(); - pawn.jobs.jobQueue.EnqueueFirst(job_waitCombat); + selPawn.jobs.StartJob(job_goto, JobCondition.InterruptForced); + selPawn.jobs.ClearQueuedJobs(); + selPawn.jobs.jobQueue.EnqueueFirst(job_waitCombat); } } lastRetreated = GenTicks.TicksGame - Rand.Int % 50; @@ -571,11 +595,6 @@ public void Notify_TookDamage(DamageInfo dInfo) /// Whether to look for escorts public void StartSapper(List blocked, IntVec3 cellBefore, bool findEscorts) { - Pawn pawn = parent as Pawn; - if (pawn == null) - { - return; - } if (cellBefore.IsValid && sapperNodes.Count > 0 && GenTicks.TicksGame - sapperStartTick < 4800) { ReleaseEscorts(); @@ -587,12 +606,95 @@ public void StartSapper(List blocked, IntVec3 cellBefore, bool findEsco sapperNodes.AddRange(blocked); _sap = 0; TryStartSapperJob(); -// if ((pawn.needs?.food?.CurCategory != HungerCategory.Fed) && pawn.Position.DistanceToSquared(cellBefore) < 13f) -// { -// List pawns = escorts.ToList(); -// pawns.Add(pawn); -// SuppliesUtility.FulfillFoodSupplies(pawns, pawn.Map); -// } + } + + /// + /// Returns debug gizmos. + /// + /// + public override IEnumerable CompGetGizmosExtra() + { + if (Prefs.DevMode && DebugSettings.godMode) + { + Verb verb = selPawn.TryGetAttackVerb(); + float retreatDistSqr = Maths.Max(verb.EffectiveRange * verb.EffectiveRange / 9, 36); + Map map = selPawn.Map; + Command_Action retreat = new Command_Action(); + retreat.defaultLabel = "DEV: Retreat position search"; + retreat.action = delegate + { + CoverPositionRequest request = new CoverPositionRequest(); + if (_bestEnemy != null) + { + request.target = new LocalTargetInfo(_bestEnemy.Position); + } + request.caster = selPawn; + request.verb = verb; + request.maxRangeFromCaster = Maths.Min(Mathf.Max(retreatDistSqr * 2 / (selPawn.BodySize + 0.01f), 5), 15); + request.checkBlockChance = true; + CoverPositionFinder.TryFindRetreatPosition(request, out IntVec3 cell, (cell, val) => map.debugDrawer.FlashCell(cell, Mathf.Clamp((val + 15f) / 30f, 0.01f, 0.99f), $"{Math.Round(val, 3)}")); + if (cell.IsValid) + { + map.debugDrawer.FlashCell(cell, 1, "XXXXXXX", duration: 150); + } + }; + Command_Action cover = new Command_Action(); + cover.defaultLabel = "DEV: Cover position search"; + cover.action = delegate + { + CoverPositionRequest request = new CoverPositionRequest(); + if (_bestEnemy != null) + { + request.target = new LocalTargetInfo(_bestEnemy.Position); + } + request.caster = selPawn; + request.verb = verb; + request.maxRangeFromCaster = Mathf.Clamp(selPawn.GetStatValue_Fast(StatDefOf.MoveSpeed, 60) * 3 / (selPawn.BodySize + 0.01f), 4, 15); + request.checkBlockChance = true; + CoverPositionFinder.TryFindCoverPosition(request, out IntVec3 cell, (cell, val) => map.debugDrawer.FlashCell(cell, Mathf.Clamp((val + 15f) / 30f, 0.01f, 0.99f), $"{Math.Round(val, 3)}")); + if (cell.IsValid) + { + map.debugDrawer.FlashCell(cell, 1, "XXXXXXX", duration: 150); + } + }; + Command_Action cast = new Command_Action(); + cast.defaultLabel = "DEV: Cast position search"; + cast.action = delegate + { + if (_bestEnemy == null) + { + return; + } + CastPositionRequest request = new CastPositionRequest(); + request.caster = selPawn; + request.target = _bestEnemy; + request.verb = verb; + request.maxRangeFromTarget = 9999; + request.maxRangeFromCaster = Mathf.Clamp(selPawn.GetStatValue_Fast(StatDefOf.MoveSpeed, 60) * 3 / (selPawn.BodySize + 0.01f), 4, 15); + request.wantCoverFromTarget = true; + try + { + DebugViewSettings.drawCastPositionSearch = true; + CastPositionFinder.TryFindCastPosition(request, out IntVec3 cell); + if (cell.IsValid) + { + map.debugDrawer.FlashCell(cell, 1, "XXXXXXX", duration: 150); + } + } + catch (Exception er) + { + Log.Error(er.ToString()); + } + finally + { + DebugViewSettings.drawCastPositionSearch = false; + } + }; + yield return retreat; + yield return cover; + yield return cast; + } + yield break; } /// @@ -666,14 +768,11 @@ public override void PostExposeData() { base.PostExposeData(); Scribe_Deep.Look(ref duties, "duties"); - if (parent is Pawn pawn) - { - if (duties == null) + if (duties == null) { - duties = new Pawn_CustomDutyTracker(pawn); + duties = new Pawn_CustomDutyTracker(selPawn); } - duties.pawn = pawn; - } + duties.pawn = selPawn; } private void TryStartSapperJob() @@ -687,29 +786,28 @@ private void TryStartSapperJob() sapperNodes.Clear(); return; } - Pawn pawn = parent as Pawn; - if (pawn.Destroyed || pawn.Downed || pawn.Dead || pawn.mindState?.duty == null || !(pawn.mindState.duty.def.Is(DutyDefOf.AssaultColony) || pawn.mindState.duty.def.Is(DutyDefOf.Defend) || pawn.mindState.duty.def.Is(DutyDefOf.AssaultThing) || pawn.mindState.duty.def.Is(DutyDefOf.Breaching))) + if (selPawn.Destroyed || IsDeadOrDowned || selPawn.mindState?.duty == null || !(selPawn.mindState.duty.def.Is(DutyDefOf.AssaultColony) || selPawn.mindState.duty.def.Is(DutyDefOf.Defend) || selPawn.mindState.duty.def.Is(DutyDefOf.AssaultThing) || selPawn.mindState.duty.def.Is(DutyDefOf.Breaching))) { ReleaseEscorts(); return; } - Map map = pawn.Map; + Map map = selPawn.Map; Thing blocker = sapperNodes[0].GetEdifice(map); if (blocker != null) { - Job job = DigUtility.PassBlockerJob(pawn, blocker, cellBefore, true, true); + Job job = DigUtility.PassBlockerJob(selPawn, blocker, cellBefore, true, true); if (job != null) { job.playerForced = true; job.expiryInterval = 3600; job.maxNumMeleeAttacks = 300; - pawn.jobs.StopAll(); - pawn.jobs.StartJob(job, JobCondition.InterruptForced); + selPawn.jobs.StopAll(); + selPawn.jobs.StartJob(job, JobCondition.InterruptForced); if (findEscorts && Rand.Chance(1 - Maths.Max(1f / (escorts.Count + 1f), 0.85f))) { int count = escorts.Count; - int countTarget = Rand.Int % 4 + 3 + Maths.Min(sapperNodes.Count, 10) - Maths.Min(Mathf.CeilToInt(pawn.Position.DistanceTo(cellBefore) / 10f), 5); - Faction faction = pawn.Faction; + int countTarget = Rand.Int % 4 + 3 + Maths.Min(sapperNodes.Count, 10) - Maths.Min(Mathf.CeilToInt(selPawn.Position.DistanceTo(cellBefore) / 10f), 5); + Faction faction = selPawn.Faction; Predicate validator = t => { if (count < countTarget && t.Faction == faction && t is Pawn ally && !ally.Destroyed @@ -721,7 +819,7 @@ private void TryStartSapperJob() ThingComp_CombatAI comp = ally.GetComp_Fast(); if (comp?.duties != null && comp.duties?.Any(DutyDefOf.Escort) == false && !comp.IsSapping && GenTicks.TicksGame - comp.releasedTick > 600) { - Pawn_CustomDutyTracker.CustomPawnDuty custom = CustomDutyUtility.Escort(pawn, 20, 100, (500 * sapperNodes.Count) / (escorts.Count + 1) + Rand.Int % 500); + Pawn_CustomDutyTracker.CustomPawnDuty custom = CustomDutyUtility.Escort(selPawn, 20, 100, (500 * sapperNodes.Count) / (escorts.Count + 1) + Rand.Int % 500); if (ally.TryStartCustomDuty(custom)) { escorts.Add(ally); @@ -739,7 +837,7 @@ private void TryStartSapperJob() } return false; }; - Verse.GenClosest.RegionwiseBFSWorker(pawn.Position, map, ThingRequest.ForGroup(ThingRequestGroup.Pawn), PathEndMode.InteractionCell, TraverseParms.For(pawn), validator, null, 1, 10, 40, out int _); + Verse.GenClosest.RegionwiseBFSWorker(selPawn.Position, map, ThingRequest.ForGroup(ThingRequestGroup.Pawn), PathEndMode.InteractionCell, TraverseParms.For(selPawn), validator, null, 1, 10, 40, out int _); } } } @@ -775,6 +873,10 @@ private void TryStartSapperJob() /// The general direction of enemies last time the pawn reacted. /// private Vector2 prevEnemyDir = Vector2.zero; + /// + /// Tick when this pawn was released as an escort. + /// + private int releasedTick; #endregion @@ -805,7 +907,7 @@ public override void DrawGUIOverlay() Vector2 drawPosUI = drawPos.MapToUIPosition(); Text.Font = GameFont.Tiny; string state = GenTicks.TicksGame - lastInterupted > 120 ? "O" : "X"; - Widgets.Label(new Rect(drawPosUI.x - 25, drawPosUI.y - 15, 50, 30), $"{state}/{_visibleEnemies.Count}"); + Widgets.Label(new Rect(drawPosUI.x - 25, drawPosUI.y - 15, 50, 30), $"{state}/{_visibleEnemies.Count}:{_last}"); }); bool bugged = nearbyVisiblePawns.Count != _visibleEnemies.Count; if (bugged) @@ -868,6 +970,8 @@ public override void DrawGUIOverlay() } } + private int _last; + private Thing _bestEnemy; private readonly HashSet _visibleEnemies = new HashSet(); private readonly List _path = new List(); private readonly List _colors = new List(); diff --git a/Source/Rule56/CoverPositionFinder.cs b/Source/Rule56/CoverPositionFinder.cs index 852d338..059ff4e 100644 --- a/Source/Rule56/CoverPositionFinder.cs +++ b/Source/Rule56/CoverPositionFinder.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using UnityEngine; using Verse; using static CombatAI.AvoidanceTracker; @@ -11,7 +12,7 @@ public static class CoverPositionFinder private static readonly Dictionary parentTree = new Dictionary(512); private static readonly Dictionary scores = new Dictionary(512); - public static bool TryFindCoverPosition(CoverPositionRequest request, out IntVec3 coverCell) + public static bool TryFindCoverPosition(CoverPositionRequest request, out IntVec3 coverCell, Action callback = null) { request.caster.TryGetSightReader(out SightReader sightReader); request.caster.TryGetAvoidanceReader(out AvoidanceReader avoidanceReader); @@ -54,9 +55,9 @@ public static bool TryFindCoverPosition(CoverPositionRequest request, out IntVec float c = (node.dist - node.distAbs) / (node.distAbs + 1f) - interceptors.grid.Get(node.cell) * 2 + (sightReader.GetThreat(node.cell) - rootThreat) * 0.25f; if (rootDutyDestDist > 0) { - c += Mathf.Clamp((Maths.Sqrt_Fast(dutyDest.DistanceToSquared(node.cell), 3) - rootDutyDestDist) * 0.25f, -2f, 2f); + c += Mathf.Clamp((Maths.Sqrt_Fast(dutyDest.DistanceToSquared(node.cell), 3) - rootDutyDestDist) * 0.25f, -1f, 1f); } - if (c < bestCellScore) + if (bestCellScore - c >= 0.05f) { float v = sightReader.GetVisibilityToEnemies(node.cell); if (v < bestCellVisibility) @@ -66,14 +67,14 @@ public static bool TryFindCoverPosition(CoverPositionRequest request, out IntVec bestCell = node.cell; } } - //if (Find.Selector.SelectedPawns.Contains(request.caster)) - //{ - // map.debugDrawer.FlashCell(node.cell, c / 5f, text: $"{Math.Round(c, 2)}"); - //} + if (callback != null) + { + callback(node.cell, c); + } }, cell => { - return (cell.GetEdifice(map)?.def.pathCost / 22f ?? 0) + (sightReader.GetVisibilityToEnemies(cell) - rootVis) * 2 - interceptors.grid.Get(cell); + return (cell.GetEdifice(map)?.def.pathCost / 22f ?? 0) + (cell.GetTerrain(map)?.pathCost / 22f ?? 0) + (sightReader.GetVisibilityToEnemies(cell) - rootVis) * 2 - interceptors.grid.Get(cell); }, cell => { @@ -85,7 +86,7 @@ public static bool TryFindCoverPosition(CoverPositionRequest request, out IntVec return bestCell.IsValid; } - public static bool TryFindRetreatPosition(CoverPositionRequest request, out IntVec3 coverCell) + public static bool TryFindRetreatPosition(CoverPositionRequest request, out IntVec3 coverCell, Action callback = null) { request.caster.TryGetSightReader(out SightReader sightReader); request.caster.TryGetAvoidanceReader(out AvoidanceReader avoidanceReader); @@ -136,9 +137,9 @@ public static bool TryFindRetreatPosition(CoverPositionRequest request, out IntV float c = (node.dist - node.distAbs) / (node.distAbs + 1f) + avoidanceReader.GetProximity(node.cell) * 0.5f - interceptors.grid.Get(node.cell) + (sightReader.GetThreat(node.cell) - rootThreat) * 0.75f; if (rootDutyDestDist > 0) { - c += Mathf.Clamp((Maths.Sqrt_Fast(dutyDest.DistanceToSquared(node.cell), 3) - rootDutyDestDist) * 0.25f, -2f, 2f); + c += Mathf.Clamp((Maths.Sqrt_Fast(dutyDest.DistanceToSquared(node.cell), 5) - rootDutyDestDist) * 0.25f, -1f, 1f); } - if (c < bestCellScore) + if (bestCellScore - c >= 0.05f) { float d = node.cell.DistanceToSquared(enemyLoc); if (d > bestCellDist) @@ -148,11 +149,15 @@ public static bool TryFindRetreatPosition(CoverPositionRequest request, out IntV bestCell = node.cell; } } + if (callback != null) + { + callback(node.cell, c); + } scores[node.cell] = c; }, cell => { - return (cell.GetEdifice(map)?.def.pathCost / 22f ?? 0) + (sightReader.GetVisibilityToEnemies(cell) - rootVis) * 2 - (rootVisFriendlies - sightReader.GetVisibilityToFriendlies(cell)) - interceptors.grid.Get(cell) + (sightReader.GetThreat(cell) - rootThreat) * 0.25f; + return (cell.GetEdifice(map)?.def.pathCost / 22f ?? 0) + (cell.GetTerrain(map)?.pathCost / 22f ?? 0) + (sightReader.GetVisibilityToEnemies(cell) - rootVis) * 2 - (rootVisFriendlies - sightReader.GetVisibilityToFriendlies(cell)) - interceptors.grid.Get(cell) + (sightReader.GetThreat(cell) - rootThreat) * 0.25f; }, cell => { diff --git a/Source/Rule56/Patches/CastPositionFinder_Patch.cs b/Source/Rule56/Patches/CastPositionFinder_Patch.cs index 3c6e5ee..9ccadfa 100644 --- a/Source/Rule56/Patches/CastPositionFinder_Patch.cs +++ b/Source/Rule56/Patches/CastPositionFinder_Patch.cs @@ -193,18 +193,13 @@ public static void Postfix(IntVec3 c, ref float __result) } if (sightReader != null) { - float before = __result; if (!grid.IsSet(c)) { __result = -1; } else { - __result -= grid[c] * Finder.P50; - //if (Find.Selector.SelectedPawns.Contains(pawn)) - //{ - // map.debugDrawer.FlashCell(c, (grid[c] + 5f) / 10f, $"{Math.Round(grid[c], 2)}"); - //} + __result = __result - grid[c] * Finder.P50 + 1; } } } diff --git a/Source/Rule56/Patches/PathFinder_Patch.cs b/Source/Rule56/Patches/PathFinder_Patch.cs index 71dd3ab..aac4a0d 100644 --- a/Source/Rule56/Patches/PathFinder_Patch.cs +++ b/Source/Rule56/Patches/PathFinder_Patch.cs @@ -197,45 +197,6 @@ public static void Postfix(PathFinder __instance, ref PawnPath __result, bool __ else { comp.StartSapper(blocked, cellBefore, enemiesAhead); - //Job job = DigUtility.PassBlockerJob(pawn, blocker, cellBefore, true, true); - //if (job != null) - //{ - // job.playerForced = true; - // job.expiryInterval = 3600; - // job.maxNumMeleeAttacks = 300; - // pawn.jobs.StopAll(); - // pawn.jobs.StartJob(job, JobCondition.InterruptForced); - // if (enemiesAhead) - // { - // int count = 0; - // int countTarget = Rand.Int % 6 + 4 + Maths.Min(blocked.Count, 10); - // Faction faction = pawn.Faction; - // Predicate validator = t => - // { - // if (count < countTarget && t.Faction == faction && t is Pawn ally && !ally.Destroyed - // && !ally.CurJobDef.Is(JobDefOf.Mine) - // && ally.mindState?.duty?.def != DutyDefOf.Escort - // && (sightReader == null || sightReader.GetAbsVisibilityToEnemies(ally.Position) == 0) - // && ally.skills?.GetSkill(SkillDefOf.Mining).Level < 10) - // { - // ThingComp_CombatAI comp = ally.GetComp_Fast(); - // if (comp?.duties != null && comp.duties?.Any(DutyDefOf.Escort) == false) - // { - // Pawn_CustomDutyTracker.CustomPawnDuty custom = CustomDutyUtility.Escort(ally, pawn, 20, 100, 300 * blocked.Count + Rand.Int % 1000); - // if (custom != null) - // { - // custom.duty.locomotion = LocomotionUrgency.Sprint; - // comp.duties.StartDuty(custom); - // } - // } - // count++; - // return count == countTarget; - // } - // return false; - // }; - // Verse.GenClosest.RegionwiseBFSWorker(pawn.Position, map, ThingRequest.ForGroup(ThingRequestGroup.Pawn), PathEndMode.InteractionCell, TraverseParms.For(pawn), validator, null, 1, 10, 40, out int _); - // } - //} } } }