From f42b01c74bdc7e91d3def03125a0e24e6a3bb0d4 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Wed, 5 Apr 2017 13:57:09 +0200 Subject: [PATCH] Add pcall wrapper to prevent server crashes when advtrains throws an error Instead, read save files again and restore state before the crash Rebased to latest commit --- advtrains.zip | Bin 4991936 -> 4992304 bytes advtrains/advtrains/atc.lua | 6 ++++ advtrains/advtrains/couple.lua | 17 +++++++++- advtrains/advtrains/init.lua | 30 ++++++++++++++++++ advtrains/advtrains/nodedb.lua | 6 ++++ advtrains/advtrains/trackplacer.lua | 8 +++++ advtrains/advtrains/trainlogic.lua | 9 ++++++ advtrains/advtrains/wagons.lua | 15 +++++++++ .../advtrains_luaautomation/interrupt.lua | 3 ++ 9 files changed, 93 insertions(+), 1 deletion(-) diff --git a/advtrains.zip b/advtrains.zip index 02ab8b148b08a1b9ab4c30869c34f9badf5b8a27..eb477490fb4dd998cf02442d53a460ca88a2c2be 100644 GIT binary patch delta 34203 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 O>~K7^*>)J1y#F848Ni4D delta 33856 zcmagFQ*b6s7p@)KwylY6+qP}{iEUexiEZ1qZQIEt|GZ!Q`*7Fps;dvW54(D;yVttA zZleyQZ?z62K^`>PCp%Gz2I}P=SgYd!SSvjcoEp16rx+fg-77}=(Yndh2Nnoujv`qe zfdT+eb)%Vh39RMj2@3=a2J~1;6k@WFE+=ot| zL;E4*7RlD0gi)Br>wGK$|8tw0>32swzH*Gf306;jGj-)~+ASi1ysD*Z`^Fh%U7r$* z;WpSdp`}ivmo7H=BwZITpx1B$i~(3ZbW$?!GVDv^&?|bDlv^25`D!rv+ zZm~NuGBeJY+5e=Zf^CIf0D4KaAeZ6SXOI=uqcL8@x6WM)UB8uj@ z)|ozpp5j_}@MD7OJkN&B_(F!Nf;E)=&v)cIpU^*#5nv;wUh)GZnFxv}hWW4%Wfvl$$f9X$G}swpgzaNrhGuc~ zS(DX0_3Zb~%-QtN$iD!-83jYsP+|Gi9eZ0o#71e-v9IK5o~#!R=Y$@|M-4q8^pC%U zaV4HUGQxPU-3RRAc_~xzvLP=Y)cYV-Reo7{uLSv4S+%e z=>3BZq}GDx@QL9bP^{5t)VD;u;sT*yoJfZ{`VZVeKTJ8Y&1_jMY>y3nS)#P@_VXa% zD5PVvJBproA%Xyg$iBD%3I+R+G+nvYaX6ZWTbX)!>0h(Lcj9$A&;gyoWz;mLFRA!` zfzF;GMNqYF-{2BkZ^Z_c`eTid+yzO)(M|1CZz9eQB-?V+y-})16%v5QPnWpx$=r!2H=c-4-LLV(k>|EgKjU z5Qm)7=ePvm7G?S)XBAl2#&ZU)y|l{`luS9uh=H}WNGbeKE?}4p`OQ4rEo#yhErorb z7xcR$<9+}KxUer?{M}hpt(f+*G4XA3A4}fxP{1dIV!@qifM+(t^cN7pFjoAAVxi!^gr zfTkc|87Ub0(H|6%c!nBH#5^FZieVmJCKSV^njS#j2VT)i<4I9wAd^EFc1^=ssdd?L zQU@pHHVGT)pD9e4X>4ReAwuH11IMheEzMb%h<|N=CRd;=P2NX-QXng7d4#Eq=C!B> z=Y?B=nhU{?3|t2D5Lq@&(4D4QM4PfU3$qG9J;&Y_I5UYVqFA*5JdOtzEHHB>xvOxd zodg86D!xeLdThk%2RjL-WQ(|hZu1si2vU~#AkZ^!u8GcP2?)m0sND;`E_N|gc6F)H z1;g$rw=uvBX(D4mY^S;Kz!HInlurgfBA9HRKZ6h0%^eRHP=0MXqZ@rOe#Uo%h)^lz z)FV0s*L4<-^O*usuBnqq+D-j_;+u2;8U{Q|@4^gwH1+E3;6vTC>3u%wOmz+)A{-&^ z+}6I%m;Tu>mXf2`95<`lHey07;YUMoY~Nkn=e~LI;okJ${K1i65kOSn*J!Nq*2m#bSJ#RpabCm%N46lm+es@0jPz%sGxr?wp92;iRIyr2Jd7Bhwd+FQ@Uy-^F45-iUmRtF3 z;yOBuNmTvLf%*O$v>&Dd$y3|-z#ZiOW`yg;Mc%6xd@Kjg=kCRL51nZ{r7KxQ4yufeLKIIglz3Enog$mFPfV9*H&utai z_H1{RU6dl&q7yQ@-iG^v=H=K zt$4S)I-M=`W&Qz47Y%qr>?#^vq6B9?CDB>9`m?RaI!5$_Fg?wNm8Mu9W`F7vj(T$- zDQIVy_fSDoY8QkM z?*OHTB%bCSyeZDTO_jJVbR zx5tHY!^t!s!8fhGh$r|Zt|@x3SPzfl+RvG&?MToSa-!2yK94DPLe5ijn7jV_c)U~x z!OY;$Fh6MQgS&g=N;h&-qmjH@FY*vNGMEfS5G>R7B$6Mei9UBwfgN$K4Y+;*4AAEb zZZDQ|X3z!_8wCJk58T8?w+k&%@PP5WiUxnueoM#+$3OwUv8dMyH)Umb`AD!>I(t}IZ%|+Q9BUGfvKUA1@Ka8H zn@L=@WE<1kw_M77!aOEeuVYXEfcsyY93R8jfiCSoQFhrbZqWTp{dTke-2bA9VLcTV zUC3HNkN~tXgcPZpTHqQ>P}?aNswmN-J)xboivLZTvkC|3Xmx7B@7_<%rbGIj_*|C# z4O+3X<3UA!TxC|a0|PxY&+bTURa|dy+o>~Gvxm7jEMxj5qn=`oon%`cPn2HRD4tfW z>SS?rU!=7eILWxDw?ROd7EW|7;?!bwW^hqiBqh{N*dp|8lneHx`%)-FtPfki+z9ac zBa;>_zCvR0q;0 zgo6e+Y(e)Y_<>pZRSznK#dAGLq}LdlE>^lqXJIfiExTJjC30an1$ z4Ep$Rv>VOM43nS<3UM+o#1cv+D=|gGJ?KbYGhG8n#9W5A3aP8mWU&Ibac3Ag&eDeBmWH` z1I*9xV_qMjY$lEegi-=^P?N^;qDyhLcyOb&!BYG9$1cV-fc_@O)5!v~_vlJRLBrKm z>o>yWtRS76o(ygC#yO_2{B2_|*{g^NVm=R4Q$x`XAxsjCF|Pt2qVoZp!Z+$O*>7UDzwp=zP68UsU>T=b zNnn)Ho%_^nyy*SkEiP7u*TI~C+afO5_;^rbM4>$X7t!LOW5K?ye2APdT#h2qG7O?? z#KqWN(^}%*H0YS%g+3gHSUorDC>*R{+i4m(FjL^YBy&j?FrPZJrDDF>8R>7|lBA^5 z?hw!_jA{l+D`3nnS7&IMb2)(eK>&zNPGQa z*o6~qeVo$`XaT+2x^s72Oy^w*fOrV<*L9=cl&J>Y%@t+EhaaV&T((pB>Bi@dN7P;o zh_=s`nnH{GVmCi6&FTJvHlgXc&&uUHjWzAaJr8b7uhH#sIEKM(x7q#KX3DLhYh@XV zy7P1D<>zF6no%wn275OReq$NsKK5wXl7J^}womMJ8-)RCrjleQDt*B!UhZ^XgTjBr(NF_)JxN1q zRg{OazxBPF!(y|9>Oo6T=vnN5^WpdMkuHo)F=UnYGdRFta%3VHCu{hJ{;XK2M3GC5 zV+i14^9`&sHj<8dEn;m; zMkUulFkWo?r}v$sLOj>0?2Ya~A*f%f3<;|pe^B!fv=9j#;u{QZ${7lcEi=@0H+AYAHYumZon6|4D?(q zx~rkz|1koHy(xe8r|To|e<5f0*CKwpN(kI3l=%Jf(3*TWUtuM{GXFNhza3;qyJhmc zj77%|6P|m<*Xqx0*f`)w3-aduP$21YDBB*=umTHJF0viv?~H1QVI@Z- ztyxR!haoBxmRIHoZ%ygMe=4aeO|tXvHQgl3uoee2IIQJBp&oXvGb$I>v{XetegGOa z^C1`hMxpz+e%cprbtz0J=|rusb*wQYGw^m6S|s@xSa$iDplnNiAO+Vq(8mrg&7P3q zpY9q0?{qZ)zoPKPLAUgZ)%jhe!qOGV2l{hw$2HYok@t(stOU z%^8Z#W#Anl`HT6Dz&6S-%Oe_xtqprjP54=o>U|p8 zMD9U+1i7K49t|p(^3B1@X}|Mm`;GeO#OK6FE9-iCKcBdlfk@kdXh&xbrFq@30U+Kyv?*FkZ3}0%p3wj0_9_8VL0NRzlO+5OG%d$g9 zDj>7NxXix9XiPS*w<&EVNlLqM7hgrOLB$Z4bqBgXzzPr8O>V4$hK!mEV~4MNgu*B(Co0dEzOk;V~_l&77R(L`lzqs}|l6#WhMh!ytrJym0-bGkSL*OEjFTqA^?Z7GhAntz$K(XnNVVcO0F7Y zioKoBZq1+?2_D?rw^QCug_-kG)lEA^zMdTehi6%H@@z?4tHKO{>Uyl{>e)@c?!geD zM30Dvc-{pfsNTg_Ut%VGDkpLH1WCp7E6@&*({6MMOqhmVg3T%B20zG+u2)MK)k#mR z@bYPrcx}HK0px^&#CkP;@`lgq8Jn4E@(qC%G&&o{cGk4nFk_9D<^r|d?aLp_J2&_7&pXghs3-f_wtX5s*Vzj#F<0jit z75J59_!=ss;LC@VII_27i~|AqlY(4K$UGQ`;WqmVnTBA7)$eDTnMzkeEH*4NDiQSt zWF^87vy~jnU}otk0{@jc#*}Iy-Ws)!GtX;IG6N(Zdy7}YW)J_bYq#7w7y&pyGWlP0 z)Df5F9$q8m=?5Z*7q6g8ri}PZbNqc>Vy1#hjn&ln=Nf}(puSM`VbP#hR*Aij{7f_b zPejw<)P<=SLVlfnOxE!gQFOU6S1;WNBDK_&3${lv1ECA{)7#!BojFY|oUTDa-hM_$ zPGLS6BJ&~@bUL<~A7M|p$=(QnrV^)ID+vO$AU=7Tw-dh`tu|U8yM`%PfW;c~Z$8*H z0727{`0?~8^{p*%3;WHx8QxZprsMTU!I74HrH`YY(6Kb@T96axDteLgMIwPIINJz4 zT!SbMPnS0cxFBx7SlifITw6E899RGEL^Y|CkoH8X{7AQZ3iKcV-h$grL*%X% z{B)}{ySv&e38=XD`}Mn(_BEr~@tmWpA(SCk*S(;Jwwx_7ml(ediFl??CNjCTYDCck-`56>}cQijHwLr)y^aSb)0rcYvYYD?QMvu0I&iua4P61=Dx4 zY{g)IEcGimR+d6apGsoD=In!0QG-N?@ipehyobD>!(cZl_WNL{X`#jk02rt`WKdD} zeq*mcLjQa#Eh|dk;yfifEYVUc) z0S?&l5XNR)Q|d#nGZCy(5Ak*1^KV_R=hF50OS&gv-YoVjLp=)He@xLAosE$u|a)5{!WZu8d&CES;@RUgSlnC%YK>h*x53qlLw@!&b%#FhTmz1)z zO1k!-fPlu68F6p{_70|Irp64mZboXV|M$EUtGVq^%!vZH`KF~)uMET=ko_?CP|zy$ z;kF{YdCn_>n%|Sx5dp&X=#WbJ+`QE=v*pj4B2&gusi8@~>}+c<&sI+REapDm%+6-! zc;~+@wnQMQr4h=`1u%|oMVNfk4VNPHW>&DsJWJuFR7uZEk;;AMETrn*aG{%6DfPm0 z=PUeWqfBZB4{ovWiq2}Qt0s@#-UwWYp|BsKdy}LLAlboMv+wPEU2wa(QgEE@IB;D6 zpG5xIyF$JvfY|N9G$3_4rQN!?6|i#m&pVWM*oev6-IY4|x+OHbij-fwMbJ`uH;bzr z&N!dnIfHI5=y=HXq}t`{J{Q7qZ<%fZac3uj5cFpKC%;+u$!`uZYnwV0_~!k7>bA>3 z4ITZpLVaJf(N zAZzj?(Z4zT?Y5t3ersKUuTNB?^cz~G_{#sWbkW+TR&5W+ zk0;~GACNY!@ps!tFME5BMyJ@0b@+RAeXx5*1gM%E=|E~fquXS3M~kL4?1k{v0_o=u zy2DjQ{}$La?k*{x&Prmp`B>Mj4BOt)SzM{)5!z%VlMjV-1R|^34U>wlI5)LqK~|$n z>1d~Qxi`^xp?D7j%5}zjA;mcr|ai9 z$$W)R`g<23f;(*-9132&=?8Rnt>CIM08o+n4XJFh$XdyxHxaHuF6b-y_#OVTw)uWj zTa9w@NZ=f+t2`N2>_F)ZR8L_T;L(5%bt$C7DNasS$|Iy8$osi;a6_CS@anmo>!1wn zu=$Ohxc6jPJz9%SPRTRJT?~SHs5_72{WsD~5ZsMQ_1tV0zumo>9fm7QGsGnmz_#U< zPXhnnj}}YNDwUbW2`-0jI3`+zQ%?u&U5Wt}*zkc?{)o(PD#F8o0mycZ`+?&H2tTCSEAcnihl#q-<%Y06JVQH`$_KML_1=X#@MU`%U0IBf)_eJi0r%uL<%3 zbZ?|X;v1cC6c`1eF=+Z1ju^?t45(@%_OMNu5ff~RDK=>3kvrn~rIB%#NoQ$bDdDOVXNBB{Wn#CUZOLQPF;E?8V zT)i{rd^{EcyRXo;c$rBKjF`1Js&pH65Coz*egaK$w<$n)C`}hwV$T zPb&5%pvlRyVQVdB%;Tz|ze4G>l0kR6_EUim8T>xklv$#U(J7`$DI-`uJ$q znU#O^NK3)iBx~0Jz&*Z`tb2O#*6!i(ff&!fi&s?Sf&MkwcQSHwXg#A|0{0!mO%Vj@ z8o0!voeDd-#HHZ$61F*(dI0BOg5JY@{C+so&39LBcQk^uz>L4C(#G!6^t&}--p;p^ zB?Z(Cii@WE1&xBDLmJ|bxjtgy@7xcErZWl7D051Gy4axs0PU|_iTKozF>*)^Oz(NS z&&0M{`|NAobwVC5$w>`A!L-}_fz|3y{^4UT^gzs;nH3%?;zI@amP6=+L}NwFX~m9XPrR)4QOdKD( zRR>4AV|x+LLZFt0H*stv0?Ez*%0(l2T?c2bIon;MVZ`dIpX?`xr`!Z=#J+yE(s#pW z1nm|z{joo9QvwlxEl%Pif9w%|W(rI&9pX0pMpMF{0Hf1P+RcF>w$Q#heD#t@XzGDx z?sL6P_~!SA$33ECTHB9#3E+9oMM`-3^$ofqc(;zX}@l6pi`B zsr;H(XT4H){P6?PL_=jA=)ts0Mx{FfX{56(4XeBYIMk#RMgMq<^6=`LLL5FKl(p= z;h%(%|A6`j^gm$!0s9ZQf586(q4kpxv6J|JW}RjWXvj?%ARrF9WFtzPbVfNua8^fK zBNH>{|Ch?U#@US9?6_b5hFK|vOiafTMkEB-_I9)2Nf)g?n7IgL7YU(kE=@V!U@9w_ zR?r#PP0*dH>8`9ZMiHoLS*BG6HHKDXcf*Y8+S*_v1K7>Jg z4!9T5t>-kx9ILf3x=-_(hOPUtRx&GDr&&>O{qhV<38A1H2T!PmO6q@k7okYcIsc~* z-$D1JmwC4yCL(xgBXxPfR#;?=MtKXXhz6C33)aaL1_S-dl1oqbA06Au%QZ`*kS--jIYFC zRiBeKV{%KYDY#$#N~&rB_(ED3kSPU$1KQ}u^%ArQdEo^&pfcuSiQdef=C)@X#UpUQ ztal0wB>g&cpYYOn@e4|LsQP#uo`b+R(qs;!w}Pis^YsHJ@u8nYb-2Uo!5p^$$^k-3 z02IF4&wi616b7j}o~KeJ9OV^$fsRRS+DGnyYXdMrMgU7G z``}%jU*z?NTtK8=B5S+cdN}$~diYKTvx06JA$7C$H|&DXKpr_HC;PpW*+-JW7MN?W z^!go+B$Saj%~+p@2{GHz^B&HWd`ChP2>RZ)KWEunO;FZggLC=b{YN(n!I4%vbYj|AR#5-FL5iOp14X=ES;p#a%#2)UeGKreT}|{ zAq=Z6?C;E6W1CO|L2{8FZioL z*(F^y^3OpC$hqUHbgDR@xU*wh0(F}gb()|Zv0L*>WSY;@xTCcJs1>m?$bMsETAA~YSYUS zlhwnPtYAv1UYp*&s}Il~&^nQy8}4w}Fb=hchNY0Pd!*4`3 z$h3k#2!9#}RBtW z!ns!zn}l41g~Rzwe7=j}dBe!b$vDNW2?BzV_~15-TnWNPMVCHXs=cVy@o=PZk^Mz{ z7)Es4HmeM0lQ)1}AAGU|&x^}i5wvf_vU#<`osMn*jt2G=jiRhD4L`v1Cq_wKc1W9K zh1~!$CUb?Iqbpz7?l}3tJduO?VLSOgK^w`U#AhfcbHD3nOQ)8;M>ZQe*o~;a=$46n z8k|9kDLCw@A#ows~IvjIg1JG-TLgvdGNZdP#}JJA3jV1 zBI_>^NEQyVw5-YpLIfjI6Kc88sEkN<%vb<0(9-Y(lE}W28qQn@5xr`PA8B>Fj*{j* zv6|*iuF?iFi^A}^Ly#JF_Z0znc0cHsERwmwjNcCf7Bi%5HHSk#BR4E>Ees)mGC?>9 zz0JMa4u#$aF=ULJP~6)e!bJmt5jPxZOb$-G>*yBYDTC*9GUpl3Rnz_@!O422}+j$4|P)?9bv5_#z<3$ zyg^%@j{w7~e2h3hATR!j_y-4HqoOXfJ`WdqxnyKfOxUdC!_BUmmajC1s=@e&+qSiW z_ClC>`_pId!Ac$aG-g_d_Hn?W5)_G260mumvnfc>xz|)tMD-hgq0^>*BZX%;T{^({ zDO2zr02%z{ba5G?z_*{BdU=IRM0xk=!m`(#S^Mk0c{rcaXfP-mzg!{Rw^E7U20?EWvcaDQ3+r-N#ZT{>N|G>RQxJEu;lQEqzqbU-9$+%Z zmX)In+It2~Py?(gIXcbiLJGqg++nYCjnaod^iTU#Dpz&gwOM-6exwU?>w?2L;D+ZN z@8Genaxj@Qq}X1D&^!SB<&t-@H^>XHU;~buH=givu)^_o8S?QrvE??$o1gd9w zOY-)?YzOmr_zh3v%&zV>e`$!1J_*kj_4p2T$TfplJv^=lqmwfL>dsGTftz5Z;2s`? zo}+mj$#%yaDE-8sSA3+E9TegUR#*PC5dLhWo=4dP zXr%p0d8|~eyDj7Q`~9%gHr-0E+%|Zc78tzh#f$mY@UIB2RQT~h=dJIZGW;R(=!;;p zbH$ZCm_ayp7o8&lse!l+#hk3Ng)XeuMSeaVyiJhHlQR=IShLa8BUww?moncihaLu* ziQ*Wp)Kq?b1~FXLeOPa1yvB6htq6;P_ygbiEsJ=F^*?P)Fl?%qNel!;>z~X>j+3qc zA`705V2+6JKQm0yC2%^aIU+HDlxqebViMjt4j;?$D%is%+>jAT+gPS3oCG}yr`ndY z_wU90uO6~k55#dkARo312{(`Kj*5;B^e{K-MP6F=bD9YRXSA?NlG;gg{2HALE~yi?hb`jf@z3ENgs)C>rhl^inA#;ni7l51^fwT|UM&2@uAP zb|-Qtz7D0f1o6VpM~q8=6PY%~Hz>KLp?S<>ADdiFR&9UyH=M@J%y1}lssY+Hs;C}IVm_p! zr$G^vZWp*cpJN^iqfZ7uh{a!HDdO6-G$FNOP@de_3q_IA^uZRO89t{R$;XI@;GzIZ zdNLC;3FqqaJ2U(w@F$*bD}o=xxmkG~M6q7^o)^vv2|QUU!YuiTOU_gI-KaHW!k9kJ z8T9d7P&@5G%1Sc-GoeIuC_MnAoyDaiy2lf_s=NTbTp5K0Khj7MM+hU{s#~o7Po_JB z8jqU&Q(0ptqv#8ufO)S6^|hP=%t3{y31kWANtX|tU!C^73PTWC4a5d0#~mG|GX`=a zUOY`jx>+i)?btXOU1koB3R%4jHKbu}S@4{3YC#W%s=vr5u_kt89eq}MNsM@h~{)o1%7P_UbT- zLkA~osNk$VTd<~&5UiB_K8=&<`Dr%KqJe~tg)zV7yg6L66IX1sFyfYBEp~2|?PyE0 z)%Gp95k>Gzyx=_eCV$w$W8!JS7{O--mQcJX=kD1fsZ?}DGNs$h&{sEf=mKCrsUvxN zG*|;*Jk4A{fMw^{XgowcuaHEN^U>01ePj5KRoCei363o5D!UcaUsGOvbk3ZcRJ% z2wapn+0ZD~FJ%(c08J1oq;b)eBpzAEK0T!h!==fk!9neB&n$kP8O!n>X%}G~QW69V z=LawV&ryol8sjUZknW2R-uuFkUjm4HQIi}H0Nl?SW#yB!%#5OCG39H!$Sxia7m=yK zDwX0MeIdY)Knnhkl+2;wU|VcbIIEZI!AOk6%T%+;uvZpa4B?Vl1;xl>L+yG(An0pp zL`Z}-PD(!ml?Aq^c2smd}21IgL`PTYc;HlnNCe1jQkvskY$o8-5To;RWdpfR0{Ce4oju|QkIVSVt-ng z*25ep8#{2@h+*JrfHl-Aq8*2UqO>1;3T_?+==g0@cG z#RisEeg??+e;YNyh%l2iw*l=0#tONS%GfXFYNij*)YshzU4?N%4x--aABY#`sd*hF zil&~>lE>9KAbIc~4=b?fpF9^QY z6iuy3`$Z{cv3i2qZp@@g4l%ZAgrhe(HO7iGWhjuEAPY-xo8)TxZ0YAgX!_iPFwUjb z=FDOF`Xjv6`-rXlg0k2+_3QR72wEhYhD92N@1v_U-U<_KzC7ua-(6rB#mVh8c7+X?(QH;*gCeGYf`YoT{IGyz$`t);y!bQRDec*w==ume3pGyUN-!<-E zwhel|aUftM;H9FHnElkzEr9_!S+qOjuhG`EDaU#o45X$;tKilhKoao7;3fN0dmg(# z_dc^bLJamx`| z5;thGUPXCE6|hhLD5>f%fyB(`#Ed9IKi3)I0>bRhwKm>CZyH*|;q-R3BlV02BCDD2d5h${a^K%b|D1!P`Vp+>D@xRYi-<9z&DW0B~enM^G z3b@kT9DID>sHvcrF?g8xoFT+$AhS^>ruD&D`6jJ5JentJ+YG*KJ~7!j3sndf*WL%k z42IU_gLH5BW<7x6;6;8tWL6>IZ$md&#(WdF!B@5M*EYA^1THU^M~CofZa)R_Kne-y zHhOpL43F$CBG?DS+a5HkEz6TY;MZFq_%aAh$R=vmjr{%taUQbBA-L*8>9SXAx3cDh zvMvx7^jQO(PY&R08L~K@z4{P9ID(rN9ZRza%!pl8OJ_qTE0!znD+Ym^n!{4 ztr=U3ENu|xf*7+%t6*jOLZV9xW%6&qdszTDYT907sW~`E!9wyKI9n58ih_+wx z7AA0W4u+@k5%C*=*yFcz%sUIozbH5L<1Q(qNtCG$l}WWoT;dDyU4%q$4C0ZDfkG)n zW_UF^8ulK|=&CrUwat(vHu5_rL!Jy8A@C{{*&XnN2K-B^Lw^uYNFd;_K{)&_yLOo4 zc8J4a*kiXB)uGp$@*CzSnBC{|X7)Bj7gR64K^Dlv)bk)fcr*(brY*FO;GtcxwNds} z5vD0&{UX8XtkA;Rq z$N@mu8kFbX!pyk%$;*AH@vzhtFa+{9c;ZT@WOVnCC&)sT*Vd9&5a6zThg~O);duq7 z;$vUboc8B-mQ}J}WF7wl#c*fN3RZMlaq>g)ejL*_^0V8T^U1!1(X*b`y1~;>Hm;*> zF?q*I`(WZP0b1sBCw3xH{VRlpjiO}pCMLk-RN(@j*}&3fu)|#S-n^_3xNAtS1r#%w zPQ;P^*Z`5O<({576iTA{9kuObE`+L26ylR(7>=qYz#COoFyU1Bew-e)HF$=j5hKt~ zb#{#z6nK{M&_k0iPu(gg?%6e_Vh{(}vU)xMi!^>HU2B3O)};`Z$s{>e0}_izvl1Yi z9ezFhQd2c{uZmQmbp0019Op7P`=a6PVgAQMqZW<*wA<~^#|@((g{u;=|tZRn`B1+pTDyOQv%pVO&G@&Gld*hHAMut z+3l6%ed(m=M;sSrWR_1K@Y(S#=zf4;n94cZ*xq(6d^w3_!{1A$;=v8O<0BA6m#H%w zKtqK}=XF~(-l!a{-6s_D_S60a7jR+r7sl{mp3T?rcDb1ee{8mh-J+qjL9OzeEPe*V zaHw}|b@hsvy#`!C4(;;wA}nx(qb0LfVI2~}GA)ye?X?ewt8Xbb`*nbl+`|DcY=zQe zN24Ocr2+iPR1DDWvgDJ=t(M!6>a4`DR(}?%%of1*={)%&j%$jM@%A3ZwIWoUm-r6v zTjt??Ofnz;#!@U<>v}0@JGyewAAY3Y8HC28f$FXnr{N& zvq4$H4OOZ+g-|zbNqNtUuZRJc*YuMIb?ZgmD?XHYq}tiE2SiEBxcp?&Y9IhddPJ>h zMYpBlnwUg*Z<7Un-&dCoeq8ov{zK3pjff2D>`7-WIV4U>bt+~W)Z>yr@qHUBAZ>Eh zdJ}C==~YHVb%2oO)V(++on+kYiRXb#@ekIiqUmC4B;U%?L9)izH z8(R)oSrmeY*F)S@A}`k1B&R&Nzp@#!Tm6PmNjiL4qLtICK1s=GcZ@QFz#VVlmeNTq zW-rNo1f_e`EY3<;v^Ag^4NrE+x+6`vqqz>Of(vkZI>@pYk6kXH?{C5E0YCk=DQR)5 z)K|Pu(nxyqciTPRo-#S@!H)hmwZ?tF7Z~v~(HtKPXBf@8nFVaS8c~#|9uzZ$c^_YY zpf;M~&eK3N$T)&K1Jrup#*X5{X)BM4Oq4hmFFRd1<4}3}76{M|Rts>YjtM4&MEBI8 zr#oJjBGBn4p{iaW4_9aG=qF}(7`@o=ul3uoLigOl7~UDuo-5t8VOCWSXSPv0BX+!%>;iv;QVJp*dHTyT? z^>pptsBF=s6cYemPAmrW^m;l8CLIi+rNr z-_6Yhp%C)-iTlDcsJ(?ljR`jIS^=4md5-iAqhwF&td){K6tqtedAihEW6Wjb+PQCH zh^7CR2{o0j{JFIH>Li>G<>1?u#!RcnJZ3*S)b%a?#SUO6?Xk0rqkq_ze=Z0$?d%JD zI!mp@R7&Zu9ZOL(jTnQ|C$slO9pWVk*~&DP}{uR~|}%&22x4s3r$+>8a} zly7;835v{WSVonVg33km@8&5nTX`oQr=xR4EU%5#;TvJT?JOlze6}G{p73XJPR;d4 z%&9RJ3Vi@pjS9Hr;%Rb@RZ{?;%58ANNtd*Xuh<5DtE#y_|F~0u)M>Wv5%OvCAEts3 z#v|v|2ukJj+U<1Cs{(mf7oa4#HI?aQtJZwG9K=je#^Lh^v^8ANJ%<2HI$pk;j<(!) z(pQ9Ql)3PRSvSlU`D_h@jq;TY$L}(g!P%B~A5s8%!h$xieNAmRa^O62#ey8dCO_7> zuP|hgpW);lT+izHN}{KZp?T0W`ENbGh2Ndy)|hs{GC+-L1TKyn z2%oZvdZy4$MoudH&#O=-!rdA3vI25;J4AtLwVzPAEQQgHAvf6h|IAo8yQ1WQnFhfP zRJu1IKgLE;>PO5&#n0gA2QUGG>RDp!=&6XKKV#O7;7c0!8rN?@93*bA zdt5B4s8pDTw6)Bo%{RPR4w&{+5O<4_{=crS0xXKQYr`(xDBVhzbhjwA3zDLAgLDW= zuE+~Wg9rl%(nv_Dbc1xabVxVS{SV;x#_#2Qjpsi1lQVN>#+^A2SyWCl-rYCIGJ;=4 ztWhL>jy%@oQ?B3e5_kA4_&{d0-6^t3CH`9s$@j{iW(H1g&uE(Yz56qZKB5Uy)5<_i2R{wbnPZ7J&&zF8ra>L|)6) zb{2lYzn`^H%l@#godBHy5t z;%Gw;67_A#duS9>+;Q)Vt8X}LJ)89>C$DaZ#?KPkCdtmRoDu)|joQI7f~U+eW(rVs z$0tF=tiNoK_@q56!4+D%{z#^>U3Y!R;1}Z&T4^GQ%#p~@P=l`mR#dKQ>LSke&Ylj- z8h7#GNal*4Jl6)9<3csMtj^<3hShui1z+%BiC*5s#cxa34rJTCtcwJNB-Fl&&|85yoT@N;rh6KxGcIXx8IsdhaBD{pqm491 z@-l@!c9p~&DXaR)dN!JUbtr<^Q!z~Lu+}m#Ii(WZ_r~6F z6jq4v)Dl+kt0cR_yIE;`k2*5PfF!5iMVvB+$5dsa3nRChxZ++lrzfM_uQycdpD^kX zUs=Ak$2pMrwU+q#w))mR+zcdW>sfqxVe~FOXX|YPb?w8+?uVXx75Itjo2ve!V~XOL zhcTquNpH|Y04-@A(#4=HhNk2g%!1WpEHB4*=Fb;miNbRHyu{B&w>jGsjS^hGSPQyR zXPd`dX7mXt>^T{UoVR!;1aB!1TMHFGLfFY>%Rp@iW((2W9>MCc{R)*T3Zxug2JrBU z@8El`(m4sxkY-lYI^)&A>G8Q8`ye03wJy$Kj-~PBwS(c~wnx!o8upgvmn#u_FP?l7 ziVqHdJ&@rLxFK>sf&0^>9S60LhP-_g)3E~1R?6KX@AD&*pWIt0l+~Xi%u{)PDX zMI_@+p!mfEvTb>8!p~?a9IjPy-0|)nJVnyUo>E8VjPINJqp|pprw+>YYIHFBmMINq z2Czlv*ti57lJcAmciW~nUMdGF=ej5gP^k1WDU)Q3z8(*+e)Fc+k2|9%lA4&WJ2vi4 zQyFvKhaQ{V93rnrvaN9gr-Q+Jca>rgYE)SJN%sDu3qP9zyGiZH7FO)YQ;C~terVobv*k1S*(4$2YzH6zjWnCD;IW3?aFR?L`c#o zjK69Xpj?44ENRBPoFGy3epDX!EN-Hczu3tS*fh2~Yi6 zyzZebdS0;NN4>6g{+Yw28bC+b3L7|2J>u4RPn0_V_&1yf{Yd5^elO^`YFLEoau&I| z-r+@Y++GfRI(lb{W4ujbztZmHbosNU!kXUubT2ku(Qg7~J?P=lZXa9PG4m8B<5Fk( zn}&8!zxTIo8`42>&)GV>Mcyq0bxr7}zT`5#vS-r{3D)@s-vNVPI)-Y&)bji`;whuE zxjarsSdr8plTUSpwTAFybUddm)wQp77HGrEh`EO-HgMxQs2@*?1{M=rkd~nOHssMB zbAJw4`0-$+I<7aUoR8Sid^k;IvPQxgk1dHj33bh1IrP(GHR*WbUMgn^|O1hc$6S?gZm@1Mf%Xn7m_3CbW>Y2<~FZkR@UZMp})LSJ1n~d5R$I z>7iMoI|{F(Dm(P%3h0bu)*v)FTzr&`bAQFY&LeWbNw0md>lCJ-ij@~WHn^xBve82% zCci{evhA6mvGguC$owOI6U)*3aiG-tAbI(b8f^`W#3T&h_4>Ip(7rl37yE@Yv-p6K z&;rAfQ*p(+VYNfRDH)sp>&B@XjgbdoX7xS9aL1*)0!hHBjEv-C=W#?Y{x?0GWBz4+ z>Su1uWJ6j7KGnWl*y#>yQt3(&_o>6O4nLhsY!4&NeVYCOjr|~&zE5q!2eil?Y$Od; zI9qa;Q*+>4R4F_(+^Fu!v)$rB{)D~VcUfp1Y8m#;pqr4^r z{OZonR~E2+T3*KH^(|(JGX51E_JytGLkG&h)M?kdiT%G(OwU>;#aWM(SR@o|XYh7q zn_jfINb5JDiO%fibhFd3RL)$bAbzLp9uvxqOm#jHB;=TH!=sV0Fw}x4L7~hBzZv1ovRBm%V_hRwX;_Ie}HH+A<@;B$2|-tQOBWYgE&TI3zQRY}fXe0J(9G7RcYZ0fh7 z0^hX#8PJ7)`TTPqf~Jp6t?+f*7bzDK;q)YoL9%7;_%VpM5ho(Qq0R26q0iN3*-Z7t z(%JTw{#!=om$T!x{fQwxj6c>Ubn=V2`}kjc;5PcPK~}cLV{Af&!c^@(<0xa{9ih_u zU2&?-W|Ym_ZA*&@5A2DGx4fa(2-~-?t}&~d9qd3cUKvOG+{LmcoY(UMUgcKEts@UB5T?T+eEww~=Ggb>~w-vF1|W zX`1HxT55lstkWp}cPICLFA>Yj_o>UHcoKE|-)m!w&x?hIRCIfPTBmw4FY8!J%hOE% zrmwZlt8QI!7e)L^Ssv|s!=gG7*6DX;0zYr&2nb7i&L5ao!EU{wfji=AN5MOwj`Z66 zg9__kfgUAz56GadsDv1Ppx)jcXg>q}0yJ7(a0K4w+LDv%qOHQRiSzR+Ik z604Gov3f~eyh@wJ&Yf?JAzRs19P)`$^mBQiO?k=H(#IQUu#? zn_%9#8R|hvWSt(P2cOMzcn>&E7^OWHKU8x?^F7;8be~WcHO+J(0e^L<8JvN>wE7Y8 zDOHrQGby~aBoO(NNTdh4*f<^zO1%69E0UtI{c%x*j&hqrI-llY?@I58gV#zTgMFU> zE6%%?3vqpfr7uOgAH}Q2`Ruuh7eaX3_6lb`B=;zrOIZ5(I#iNF&rvv=cqNvNPtlbF ze7>R#wE*vZy8M}(3#Hh-vRB&^O?j|Sf>MNV&79tNqKY3;8Wdq`KZ^+9`9-mIaK_n< z?|#A)tHQ_mJ#0tOQ#CwkrLRpRn9$IR5+#{u>{ISbgjNtHwZpupQvJ8=OP?klS}A+8 zCl&KSG!3;ZgLQO2` z_?yN#YM-3OdvAccpyx@E7&V!Hk|k<_);UXg-sf!}CSh}mlC_$zEsKmt91$40j2aq^ zb)y5x)`%_3+_SPcj`F9?-^;|i<^7KC1|(~|^xKyxdA&q_w_w$iGwpK=W5C2*08Q9R z-bfptpU%^@YVJ|oWB;VIPqapSddB;HkGEux_sNcGPs1I4{lK;Nc)X>dNbSxReE&U_=v%}p)pMLyl(|UkKTbU)nSebm{FR$rP2g9f3QTk_j z-Yfa?VH;&1m$&c*epD*2oRs!X@A13+^0Kh|f&AI>32FQtG|O5MEi)w#`^=xYTUyaA z!qet)h-v2+a;domKgJC%zHZTo4y(PYw0v9YcQnyUX%u*|lTRA$Atf_U2{6u;Ig3gS zX5E>OT0_1HTe0jeuqUH7KYZi>2+SDN>cxQM?ns|=kPWd}~!TWDQKX6a=# zZQfZks+)?&vC>soFZHG#Of-tFlsORwrW;N^!5?@+2H(mOjCg&A>@Jym&x903;{1mp z@)mZ+hLv*Ei_M-L!Kw7$(FcD02;~1}JW(KtJGe`Sghc2LW;~$)sG)EitUn*QUBB$X z`VOCwrBg&_&*&GPARhNT-SQ7)G%T4YPFx8h#pt0fE7EUu5(g`!h7{e?cdiN_{dtlz8(;(_~v7AYN43||zKT(G0N zl$HE&)R#r1#W`o5ht~JbPJgSppl5-kk90Sc^9YIBh(<7?PuB(I<&mk z&OF)@pv12|$0iA#kKdpUX%x8w9;Nq<&Sgw2pUhQN2nTFqII|~@%i`kTaaH5)%z3L4 zi$zSEEB|0wr&-k=(sUwxupH8?e}eH%jq35!jNgh>!8j;6lUUhE8*r1sX>;5NN``DJ zJWm2dVn|ha&{v3M%9n^#<2wvPiyt>r6|7ovhJ!7BCd=gMK+^o*4WfTKcym=@XI8to z%mNz)9L%EbCpOO?3Qm6re0t6X{V`7^mwajMpI#1ass9>^jhfP?fK;iDr1RX9=#ANK z-qVdYb58GAt+1UwaPE!kySHi7bK5kRekpz~iwG@=O7j(^#LQGcHu*e{p~>P_xm+Ep z@qqLQQDqCE<_n(F%kHa-dOU z65{(InQ@f8dpcRi|IG58fHZJ!5}r|HB}-ZZ?Q4TLYJc6#P{BOS-;3 zO>WCo+~yo9w^q5=r_~PlZuYw)-VBHr@A*$k#1fvg&hKMuD{m zNHxlOI8GTED_ExgXhfyX^ZB+>vvee`a{mULOasT&z|>mH?4;r#epm~;*=9;KIEED4 zXX1-Om(0xFA>=^%ZMl@V`RM>RP0Czj`U;3d21UP56h2m*tH7$p3ZBz)JvQNK#yl#jt}0NBvg0E zl<-S}Dq2k!n%=<23T@sF23cWxVR`zdjYp54m$(YAO#U*DwM&$R=Gow}zm!PrzDxBj z^!ue7{}zlbk@G49J4Ne+ENY!lCm5255aC=WjO)$!U|7FvTc%Fj=*M>dvt2=#SAvbi z#CfpNo7XO%JFz%gd?GMN$6h`lG9p-B@S)+G$L7lHPCX@G9!1t4#@XxhdbO@RC1 z_*94lgZEffk?&=pJ%$SjEf0PU@6>FQeMYf?lZh=Q4koSpulVd&rE%;CJbQN}UTVx! zFw#Lc6q>p}p!)a|bW2AVt9H*q)w$$lz+CO|*3v0s7`sbovfjS(20CT}3Jwje_|W%^1NiND#?=RZXH%vRx!CaHUW|P% z(jIKB{lZ%t-Ckqw%LBCBnNO$0Rxd`~73X_~IoB8@!;LH!cE<3~Wrq*hvHy5F*$xQ_ zK?7e|DeJ5djztgU_KnU@D*J+4KUC%yZ@iDVH1+hGR=1KP^#&Tg{2lynmo0w#0ec)ARL6lT76^afR;GXi2sH zeitQ8vUoO3d8_cL5pG-3BsR>1hb>2?h|Xl8Fhr0I!S0mOd3mP$AfLrAG4bSu3n*Rx z2T#nr4<9Oi)~g?2PZ4Yo`o8BQeP#YBI2l86VNB0{;_-Vwtm5}LOStPkd{?AO8@-=8 zwYwM|==4*4MghKbJ^!Y@!%XpEF2W-GQ+I-ZC~(}A)RN=hVAONTd?#P>O?r9S%p(L( z22)hb^!?cYg$@B>oK^M03U*p26{|+g%qrUnb?SmN54&T|_fd^Z#R@WFZ}5CYPz8I` z+rPH_736{K4&{CNf-Mv)yDDw#m#JC21zkA(a5hkJEFwDLjEL}M(!P)k{#96qWc?uL za=L-aU!Vx;9s@WqkyyNzF%Fg{t}s9lol$A&m4yvxY6XQqGV82z3X_dV!!|OIA7MQb zQ|YRhBOp%T7Bn1rv#Pr|z+(Y_j^ja^#UDF>en!AN(1KQf4}bplkb*|JS_AFVpZ`v0R?HSptV|X?#=#%ZOrCcK@#u zL-&16IXgryCJbeZyM#Tu7IEmmn^l@4*{Itj^%Z@E33l0E7PWW1ZN@ELVeoIFO!C+s9W=?&CTq!()MXbMO8%7F$!9(%`NL; zNYt-A#KXj8S5QfbVq+iC$J&2yA8#p_;4rc{>^cr@7sr%;tSpxTFH`f@kQKZN*t1bB zuYY#371>%sL#nM>L{VUdiH^AYxeA%R=BHwvQct4UFIJ<^R_Wfm-o;oX#?H9lUiY7rtBx|KmIF5L0+|liUKX205|Q3wc0KF zMG~ErfJ8EmFtSWzf4wYLPX<)(g{Un)^oX2!O4I4SgkH)z=9Rwa95X6HOj4Y4jFnbc zXRuHH{D4sY#I%2Q3)MLBw&HlO?4V7BR;}Yq6$;30V^x>CbgF)0e~h zJA}7#@jSA;K7OBz)Ce*OVVtj7&_ZF-G5YXei&Jgt9nFVRQ#A>cml9`Toeb9IsmC-$ zd3AXlLQbx`B*lX+Io3W{2)jBeDykj*N$cJ5&hixfGfs!BUq6!!O5?i*W1^ayogWtf z@5Sq4-K9T`Be`Q+ zNO$6X_+Ew)&}EV|7x@-~?3WnS8~LbOmclsXRF%NmSB?7O1WR^~4ZDa^wo?hYv}Up0 zAP>uXTF7g~ucjzp##Mj}88bmiiB}Dn>2uhL#5%>LPcd5PLR~S*D2K5UrKfmi6F#>; z3oEV@_}TBTFfX?@g>dD^5PE-}L^7y$=_FerXx(pJ;VT}1K}0Kds)Fy8){favf?X;h zKfHwhd{4sNGkls%ICG?pvij71m5of5NEC_s?ZXC(mIC>04wK%2u?0s?#Cn)$L02Cw zYPVM?E%mY-J88+8ec4@Qvj3O|-$%aVDhDm8B zGm*cwPd_M3_7o7_aUfU57wu~Oq3Hf@##Dy{?E^9k$4P(;eVFo)Ksjl;V6Md3KVc zt1Mpi$!>z937z2VE8f~~)r{IxWc~Z^L=GiBy6R3QS~>kHbvzoiD$I!S?D5$bTSWc& zNivNWTliH2bfO5=e!}zHc0iA=Grnt6gp!kKRfTtLe=nYnW-|vaEVHYHeH#AMtTHDI z2mBPD3c*U3Xp8l><$Laib0`I>ORa9-eX(RD;o2-MRkl6yQ{D{8IF^_ob|LpakU@yPXg)!Li8U zyQl1#l7jUG+kM)I+h0R#Z&J9|X@F+-h|nr@FIe&Pp(Nv1>&KrqzdbE1Nf;~&WE67K zwz`88cV~t*5xWG-s9Uf=o?UD)t5(3~iE}(3D&hf~kVBH;lE8TCi>HCuXX3#VC8j-x zS#H9P>;%Fnsb^h?)kPD{$zr$!%$P zqU8P9D7lQDA|lb4vaB)5m&)|`4KH#gu0GphLoLaypj;5n>Y|D2#473YsC`a_yeNHc zs2AcWP%GDpg4_0kt?u%Qpl~H_cxeOr=LYn$o4j@8)xocANCpPQVya_iGJa_G^KBz21dmq?J%qt6NFG7 zO4zo-xYyTSz zlZCX>Yuu;CW>vw@((yHjz7&YRAQ45O%3H=Oc;Z)l+P1yZTD$hGDeUX3L_iR4LZY{5 zt&X)gyExSV#Um?b4XKYP2x~4FFTG3j0%`4Zk|sFIbn~7~ z)QAVr7`<)HKJMPj=96?f?mV7IGF!p$d!@{H7rlaK5^jI|Bu-{O-F~Z^2w{NK=SkE2 z*7>X{Qo+fd8IhXVwsk+wzR2q56K2Lj@LSzD3G#PBn>7jF-?$7sQJFtNS4rown%i^f zO-Cqhodq#i9?*(;Fx;*m zep=D7?u7-7<5{Diz^hWj)^I?KiP!^|N%-UlNviQmZcW624yvOVc1+K{`M?i5wld~u zZ)I)Gn9*_WN48>$B!aR85g8v%Z43M754D9HHx*=3^J^<8nz}TdnYxoY+X;?x=(Vh4 zMo$ks)q}j=TV{qg+2Om}M?TFxB0a4iJW09w7UdPZ)}d4SLDey1QYoM_$!bM^QTky6 z;`_bQ($bOHoq-ijChzxO-;+N{f92z+?8fUm%{f~c@;I{~Q+@SYo2$Knoy#gsxFcL# zNT@t7M)OelQ~1xs=zv@b+7b#H4WooFENNOA33MZSODaq&oz^eEI(Xx>_{vaMoXj&5 zz8Xk!z~sX%ro2y?b&MAxr9AO_(Co#wbq@mmh|gT|J#2foL}DjT_FK@G@o87#N>YQ) zosHIW1_8Miitrcuzfwap6C+B=7DBGRC~m(tK!R&a#5f5My^+>`gv{_)fOXmAl!$9X zN4h5Q1)&0dycfTtN?mdot+%ENCVhT>hkHI$*kl_1sf5a}lyTczg>7-@L~gv5W84=p znD#+Y?Qkg5-8aqEWd9N~>?Cd6M6bp9w=ywx2F4SM6-wtsn;F~(Bor%jQ0I4v*5daS z58oxXcBaMUe1EDS0sL6bJ;<`K6CwT)PPg|YnJKO!-w@6vCRMl5$rR^3hr@?b zCbeMqbdkKNGF2nirSjMNEuv;58AZ}ibrq7O_!wO!B|khM2`XvGudzAiulEW4bQ2e9 zSc`JLsf;d;hbPq2+vPu~U{}T^$d>d}4w|#|bXxBSr;}5*iPz_A&RAhvnyD2RBVwTD zI z;{J-s^VxIz{<}=2c)({DO+!PNZjlC&J^ZO`{T1Q|zwe@pVY*golU`9aQioT;E zpz)V63d_V_WZaZ9fJ`odH+uVKMxc?tJqPpi4pjm zoXr?EAx^z`T?s{xR$S@&%sucfA~o+_5~DogI+vHhg9z{v4{4>e=b8=lNXWiM4?nu} zP;pPOIT~78c8bOx2~*@+o~cEE&(%=nD!#Fa%>Gm>x!<-UC|^4IZO$|?Jk(jnUb=+) z?t9lZ(FiRSc=EjS$#|x9W?t90IOL6UT68t5j&{&k6OX(d+Ctt0P3%@miqFzvzjvhN zsn>5DM?d2PGaghv`F`iMBs_c1c<1eBzX$!z9_z01=MOEl8<*#*_0eYZyb(58kCKJF zqsSO+swn8|*f7LubzhLsyDnnTOkmn!?7j+qn0dT8pi#f^Sd&_Xejv^p|M-Z_p3w8# zL8=@59Bs*gZ&HqY-4oB?#ow$JmWF6(G-cW<^9`!u{HqRynE2@EN7)8}S63@tga;Np zYgF5^Cwq>b?esqs^f=u_&9)E*>i0=P>S!piXlK>BYaQJbOR3&>NeoQMob(Dmc`*|C zD{SXqwud@)IWF0L!-Hyye+)L)dtiObB zdFc+HCD&da_~ngBxp#bN(2dg%Bj_IX_SB&!`|AK%b=kxWrT$g^>cpiYL^H~ic}(4N z&tb()Ipwvc%yO;T=ZHD=)DbK(K$IrmKSlB1Msf@{7f-oFU#qV}Ht@e>-S;^!yZYS~K&}zi z4X`GPSw@gxQz9C#L??t2M2dwzhPQODSV`*3Jepyue}>^>`=&HzZ&);nW+t8IQliQ%i?)GV=Lr}eMuSas|n!$d)o36IHD&=ECU4?NUfl8*Lo zx;OD~nZ4i^ny3!t5|z#PcvbfV-{RZ+_7icbwSlLBeN&!Z`dFfC0g~U<^88+D?w84q z^h;}G%^AJ-tlG!f8u{i1#+USp8B`&7WAR#6)?kdymjC2WJ;SyXNB-*KG4gMFW`R;Z z)PAeQd!kf!L;)QwV*LnMYq+x~dEvkbO%Oegsl{{QfoYtnEZZa$C&3cEU+X`(%UhnO ztG;@RtD7u_hC1tiFOl#n9@o2jlqH*VPX=KixT2b~3YS*|2DmBCIpOy+lH#RrzS$oa%dEm8!y$E2=aE{X*E!u^A6AvK2) z3wO(bnWMJhi>@{VhIxy6(O-`Z(CyeIf^+mRYEqq^${~}B*9<-x-z2d2=?&83vxF*o zPV$@8i3oOK)6v@nh2POXOX$;PPqVH2h4Pmh*F>DX;9*iQE&cSdg>2~IVc@5lO0IU@ zu`@tbD%%H_-&Lcl$XmU2BGv(o7QG=^Y}IEqGC=w}-#F6*qE$>$cb@-&$Jx7ifztrD z@O1Cl9FxV;hU{F(F${$^s_)f(z+s)d>l_x) zzc31;^bz;=mnn;ecBxLuK-PKbCqjI2%}1ra#s=#OP<_+gUJVKJC;zGfck7#vurU71 zaLPP%>U1iC8R1*jH-98T-{+OMJ3t4%AcDt-wq&<_AJy-b+HXK|I7=dmtf64+wI%y7aE>gJU4jq*ON2W*FO4_Yq z29&Ka8D9;uEb^t41TFf8dl%cv=2kkN^s2DKv>(OmuG{iUwMH;xep6!=KC_|g(+nBL zl4|>5=(u7uV4`_Byt(V48JsoWHsx z4Ybe32SEUW5X2o2cR>(=AO=AK;#xxnf*b?|2ucuCAgDpmfS?6I2jU)x`yl8+Fo0kL z!32W2%s!h%kQ53gyahhju?S;aCtR;s{FAAzw4NoE?j|8b!OI`C-@zPhHBdlpgM|ec zon^Umv%Vqte!%}<-!M#L0$frL$6KYgaiEsLI(Xb$FX$plO{;(YWh4f}k5!n!m1Ii> z5U-yvsQ!+pwKWhrX5WC?_#rmxgCV?T@dvjD6?fmcp5KcGR2zdV4CcSa^!hK~^7I(J zMXi1>U}jC*+v4|ef728ZmboRuC}cEHzKx7yDVEV{E*Ta!@zXX#*-lq9S8;dHfVY(!fi+nE5YLm+h&a z@Ya02WC^H8tE%>J$TKkS`iee}KJu#~4XKK>wK25MNBaHfg3k7?t`GIUSIMgIy1(-p zc)h%gx3mzIi5sP_%julYA+lL|Ms+Wl76=ZVxy$Ae3kVjvNl@e#`^krLtq^cpn-+cu z#r}qMnDIcNHPJp!CCA%eXXAhtEsc2RJXW5#>rLSOasX0MDAG1M#X&Sy=2eY&k~hsL zJ|A-xuw0spm``vRrPuwzd@>~}!V+ODj%&~S2D!#v9pHgpS2<(Ip~ z@({fUT;8(jH*(M@PXh5Apk-Ugb)Z}5F#K% zL5P762O$AM5`+{8X%I3X9)ges@d(6Y5ON^oK`4MwEZf^sQkb~OG$`2t6GpktGzj$f zz-WQ^4w&)(TYeM3=!EfKFCG98N-(w}szyliT$`?#ISlkCA ziH1?&prPI@IdD@7NVx|`iJrKJhxc!B>b+a>)jd1_+69w_Y}5abKn0AtU~tF=!!4o2 zNB|67E50$^5CBIvOc_GWeCzdOCIkR>_@nnM&H;OPbXVj^|zB?W?eVLaD~ zvVrg(7$t=I;WbN*sig^y|2Ac|AQR|)GOag)$8iKA(1xMTOmM7nh6KEn1j&+vHjpUN271)LVXHMKwuTd6unmT z-wGxQZxqp7#hAeJCD@-yN*DkOACF$U9sqA-n6QEE0hk2j>hPA)8-&3iJH&wRDCjO4 zp}+=MCtyqf#t>LaMf8^T*#c?(A#frh46hk3pl1js4|!;PYlPb%V*#qepxfN@mT4G< zDM3U7Zw=h{lvqIG)c^WpI|A1HBH`M{2ULx~o!z%|+;Q*b(VE1*#U=+~cz(0I$ z2FU-@gP+$P($Z!8p^`GwH122DpR8-VI6e)223#{v2>OT}d;HU{sBVqxZ z#-bvSXF}xw))!!MP}21qixc=g2OfbDi{OC#7*VeU0yl>_fWCA+C5AT?Cm>~vigA5( zOG6D4{zv^rM+FK$qM`%C*Su2Gzj>u)Z~`PY{!N8#g3|6~P%1-=b~`a21;B$qY6bQf z8b|ww%3p!0K#4g2u`mFm2WU5^o-}k=;D)CH@P*I_uDki?Wb0T3`%j>ZFH&GvF1B^u9iEdp|8!&>~OTZil7^$uk%{pECxhbyww6~G$ zCgbdNgaW{1v;U1Sfj2r`D42g1c(Mr=JfylV$a<4^7WlXc!$i5xIScrLagYv7HLGN; z5_-1_yk6iykdOrb#Nyj%XG!ySNkVjREZ6yHZ_3?VKmge-FiND;-D*znq2t8Jfl>eZ z+5%KwyRz=zx~{gstAjYht+A7h4@S&waAy$ogO`V#ZBUra2sG@%*kYN{@vdFckVnin z1dzyrjt{)v0U0dTYla(G+kvS`m z8X)^$^mz_CAwYZp(m#IO(i|)Jguv+z*s9SA3=60|00)@cb36DtI3XTzcmf6mp+k@! z>Aj^N=n-NAfrns-l9~RSAqH@dz-nJDUo+eQ;t0IxNv>ZTJV4S0I{I}z_W_1u@TmH+ zd8?874UWU(7>s3eJAX5{fGaMzTdrq2#uko4@ZVj0vUe?H1ym2fad@AA4Hg~zVP0ck z06Qn(*?;1O0T?f0JplUd-N6RNFTn1{or33(%-J8_UJ#7+7dtTW+aVL5fn!5*2YAk4 zuOKn4*ISi7VibFgyWg&Rv8m^lX<&yEG|UBEn`<#%zeH9SD? z1q=qQZ@aO$0oo26Od#$6?10xL*a1Tr?zM^=sDG@HEB;uhS6t{hLbv z$wr5SbpJn<=9%5daV+q0|9$Ir@A`)CpO>2de-KIuz>hK}zJAU5wkr)3a5~@#6ixxf z{tSAEfHzRM9JI)Q3E1smAqJ+Qa5xmh@E;2cfTO^bp)dbKRiS{dG>n@6Tg8kDPM5I7 zzo}76CJLYc_0Pbr1IYjW{BK}LNCZe%GD5XLKN_3?&#JuO$m_mmuLzey+su*xJ$mrOu$76y83!q|#Qvs12 zOlUWg{Ld2}5)#*cCYgWcwvZ4e{LVkS&I%LUb!v0Bt}mEyEy%BVz!)3O2!t=OpaBoC z;Bt_ug})gBAP);XRBD%Q8HW`XT!0oEWZKuR85aoe`t_CxILC$y(18yjN@`5T#WOfa zNV9ZENF4v^5a%YKh6CqAxqd^1yAcX*~i0t;if1(52=&bhuQ9^LIPT{vTfQlO$3wU5lj|Om}F<{-^ zB&-pF$Kn1{Ho*58n>?U$2Q1@z2t?iicQUv*4!Gq8B2YQ7fWl)o(%UHMc^51JYheeX z?!dYJb`k=L+)TIt!O{N$&K)99_N46}83ABV1Rk?$>;I;xH`(z33}U!6)Nb=1o(Pae zra-%Gu96t6XAsKqcXKqryCX1=OOwDEpyA-nkP|X1B@l_ufd;%Ifj@+<{ENB^oRNT4 z8>0PNWk?G4;tl4%sR(QibYO@SEIs%Cd3->T46LFB>)-l(GPoj?8TqQ1PF2F|(_Kr9Gk6<=~8|(VXlM0~Y0vl2GCCj_kq;s0c!W)b`bh6 z*IRagyGYz zNd{0x83DXufd2)-TE5;&0-F`&Sbz#6=$TmoA{jvs%?2RN0;dN=n81Fz|1naSz_V@l zf5w*3O|+7RsP5cquXcqnfna8^mal)9ZD#lrh}-V9+ZOWkX3GYI?+H->`z)Z$<0-(+ z2Il}wSiwf7Z;Xe)3M<%k9m8u+D8$GVsAYreLq5F#sM+DqA;UqyYj(IHBsmQjV~0P3 zE}T6AoGu=b0dNj*ckrD*0_rawkpfxQme1v*80^QCfYlj{47f66LIbng4Izn{A|W}n I!N36je=ZRcPyhe` diff --git a/advtrains/advtrains/atc.lua b/advtrains/advtrains/atc.lua index 3925ffd..577f858 100644 --- a/advtrains/advtrains/atc.lua +++ b/advtrains/advtrains/atc.lua @@ -92,12 +92,17 @@ advtrains.register_tracks("default", { return { after_place_node=apn_func, after_dig_node=function(pos) + return advtrains.pcall(function() + advtrains.invalidate_all_paths() advtrains.ndb.clear(pos) local pts=minetest.pos_to_string(pos) atc.controllers[pts]=nil + end) end, on_receive_fields = function(pos, formname, fields, player) + return advtrains.pcall(function() + if advtrains.is_protected(pos, player:get_player_name()) then minetest.record_protection_violation(pos, player:get_player_name()) return @@ -135,6 +140,7 @@ advtrains.register_tracks("default", { atc.send_command(pos) end end + end) end, advtrains = { on_train_enter = function(pos, train_id) diff --git a/advtrains/advtrains/couple.lua b/advtrains/advtrains/couple.lua index eb1bc72..3693e84 100644 --- a/advtrains/advtrains/couple.lua +++ b/advtrains/advtrains/couple.lua @@ -31,6 +31,8 @@ minetest.register_entity("advtrains:discouple", { end, get_staticdata=function() return "DISCOUPLE" end, on_punch=function(self, player) + return advtrains.pcall(function() + --only if player owns at least one wagon next to this local own=player:get_player_name() if self.wagon.owner and self.wagon.owner==own and not self.wagon.lock_couples then @@ -54,8 +56,11 @@ minetest.register_entity("advtrains:discouple", { else minetest.chat_send_player(own, attrans("You need to own at least one neighboring wagon to destroy this couple.")) end + end) end, on_step=function(self, dtime) + return advtrains.pcall(function() + local t=os.clock() if not self.wagon then self.object:remove() @@ -77,6 +82,7 @@ minetest.register_entity("advtrains:discouple", { self.updatepct_timer=2 end atprintbm("discouple_step", t) + end) end, }) @@ -98,16 +104,21 @@ minetest.register_entity("advtrains:couple", { initial_sprite_basepos = {x=0, y=0}, is_couple=true, - on_activate=function(self, staticdata) + on_activate=function(self, staticdata) + return advtrains.pcall(function() + if staticdata=="COUPLE" then --couple entities have no right to exist further... atprint("Couple loaded from staticdata, destroying") self.object:remove() return end + end) end, get_staticdata=function(self) return "COUPLE" end, on_rightclick=function(self, clicker) + return advtrains.pcall(function() + if not self.train_id_1 or not self.train_id_2 then return end local id1, id2=self.train_id_1, self.train_id_2 @@ -128,8 +139,11 @@ minetest.register_entity("advtrains:couple", { end atprint("Coupled trains", id1, id2) self.object:remove() + end) end, on_step=function(self, dtime) + return advtrains.pcall(function() + local t=os.clock() if not self.train_id_1 or not self.train_id_2 then atprint("Couple: train ids not set!") self.object:remove() return end local train1=advtrains.trains[self.train_id_1] @@ -167,5 +181,6 @@ minetest.register_entity("advtrains:couple", { end end atprintbm("couple step", t) + end) end, }) diff --git a/advtrains/advtrains/init.lua b/advtrains/advtrains/init.lua index 970bbb6..9b7f31f 100644 --- a/advtrains/advtrains/init.lua +++ b/advtrains/advtrains/init.lua @@ -9,6 +9,29 @@ end advtrains = {trains={}, wagon_save={}, player_to_train_mapping={}} +--pcall +local no_action=true +function advtrains.pcall(fun) + if no_action then return end + + local succ, err, return1, return2, return3, return4=pcall(fun) + if not succ then + atwarn("Lua Error occured: ", err) + atwarn("Restoring saved state in 1 second...") + no_action=true + --read last save state and continue, as if server was restarted + for aoi, le in pairs(minetest.luaentities) do + if le.is_wagon then + le.object:remove() + end + end + minetest.after(1, advtrains.load) + else + return err, return1, return2, return3, return4 + end +end + + advtrains.modpath = minetest.get_modpath("advtrains") function advtrains.print_concat_table(a) @@ -94,6 +117,9 @@ dofile(advtrains.modpath.."/craft_items.lua") --load/save advtrains.fpath=minetest.get_worldpath().."/advtrains" + +function advtrains.load() + local file, err = io.open(advtrains.fpath, "r") if not file then minetest.log("error", " Failed to read advtrains save data from file "..advtrains.fpath..": "..(err or "Unknown Error")) @@ -142,6 +168,10 @@ else end file:close() end +no_action=false + +end +advtrains.load() advtrains.save = function() --atprint("saving") diff --git a/advtrains/advtrains/nodedb.lua b/advtrains/advtrains/nodedb.lua index ddd1a67..2fb3656 100644 --- a/advtrains/advtrains/nodedb.lua +++ b/advtrains/advtrains/nodedb.lua @@ -203,6 +203,8 @@ minetest.register_abm({ nodenames = {"group:save_in_nodedb"}, run_at_every_load = true, action = function(pos, node) + return advtrains.pcall(function() + local cid=ndbget(pos.x, pos.y, pos.z) if cid then --if in database, detect changes and apply. @@ -227,14 +229,18 @@ minetest.register_abm({ atprint("nodedb: ", pos, "not in database") ndb.update(pos, node) end + end) end, interval=10, chance=1, }) minetest.register_on_dignode(function(pos, oldnode, digger) +return advtrains.pcall(function() + ndb.clear(pos) end) +end) function ndb.get_nodes() return ndb_nodes diff --git a/advtrains/advtrains/trackplacer.lua b/advtrains/advtrains/trackplacer.lua index e039800..5f9bdf7 100644 --- a/advtrains/advtrains/trackplacer.lua +++ b/advtrains/advtrains/trackplacer.lua @@ -187,6 +187,8 @@ function tp.register_track_placer(nnprefix, imgprefix, dispname) wield_image = imgprefix.."_placer.png", groups={}, on_place = function(itemstack, placer, pointed_thing) + return advtrains.pcall(function() + local name = placer:get_player_name() if not name then return itemstack @@ -207,6 +209,7 @@ function tp.register_track_placer(nnprefix, imgprefix, dispname) end end return itemstack + end) end, }) end @@ -220,6 +223,7 @@ minetest.register_craftitem("advtrains:trackworker",{ wield_image = "advtrains_trackworker.png", stack_max = 1, on_place = function(itemstack, placer, pointed_thing) + return advtrains.pcall(function() local name = placer:get_player_name() if not name then return @@ -260,8 +264,11 @@ minetest.register_craftitem("advtrains:trackworker",{ advtrains.ndb.swap_node(pos, {name=nnprefix.."_"..suffix..modext[modpos+1], param2=node.param2}) end end + end) end, on_use=function(itemstack, user, pointed_thing) + return advtrains.pcall(function() + local name = user:get_player_name() if not name then return @@ -292,6 +299,7 @@ minetest.register_craftitem("advtrains:trackworker",{ else atprint(name, dump(tp.tracks)) end + end) end, }) diff --git a/advtrains/advtrains/trainlogic.lua b/advtrains/advtrains/trainlogic.lua index d9edd6d..0caea0b 100644 --- a/advtrains/advtrains/trainlogic.lua +++ b/advtrains/advtrains/trainlogic.lua @@ -40,6 +40,8 @@ advtrains.save_interval=10 advtrains.save_timer=advtrains.save_interval minetest.register_globalstep(function(dtime_mt) +return advtrains.pcall(function() + --limit dtime: if trains move too far in one step, automation may cause stuck and wrongly braking trains local dtime=dtime_mt if dtime>0.2 then @@ -81,8 +83,11 @@ minetest.register_globalstep(function(dtime_mt) atprintbm("trainsteps", t) endstep() end) +end) minetest.register_on_joinplayer(function(player) +return advtrains.pcall(function() + local pname=player:get_player_name() local id=advtrains.player_to_train_mapping[pname] if id then @@ -101,8 +106,11 @@ minetest.register_on_joinplayer(function(player) end end end) +end) minetest.register_on_dieplayer(function(player) +return advtrains.pcall(function() + local pname=player:get_player_name() local id=advtrains.player_to_train_mapping[pname] if id then @@ -117,6 +125,7 @@ minetest.register_on_dieplayer(function(player) end end end) +end) --[[ train step structure: diff --git a/advtrains/advtrains/wagons.lua b/advtrains/advtrains/wagons.lua index 15a0ec7..2ceea86 100644 --- a/advtrains/advtrains/wagons.lua +++ b/advtrains/advtrains/wagons.lua @@ -50,6 +50,7 @@ function wagon:on_activate(sd_uid, dtime_s) end function wagon:get_staticdata() +return advtrains.pcall(function() if not self:ensure_init() then return end atprint("[wagon "..((self.unique_id and self.unique_id~="" and self.unique_id) or "no-id").."]: saving to wagon_save") --serialize inventory, if it has one @@ -63,6 +64,7 @@ function wagon:get_staticdata() advtrains.wagon_save[self.unique_id].name=nil advtrains.wagon_save[self.unique_id].object=nil return self.unique_id +end) end --returns: uid of wagon function wagon:init_new_instance(train_id, properties) @@ -147,6 +149,7 @@ end -- Remove the wagon function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) +return advtrains.pcall(function() if not self:ensure_init() then return end if not puncher or not puncher:is_player() then return @@ -177,6 +180,7 @@ function wagon:on_punch(puncher, time_from_last_punch, tool_capabilities, direct inv:add_item("main", item) end end +end) end function wagon:destroy() --some rules: @@ -211,6 +215,8 @@ end function wagon:on_step(dtime) +return advtrains.pcall(function() + if not self:ensure_init() then return end local t=os.clock() @@ -465,6 +471,7 @@ function wagon:on_step(dtime) self.old_acceleration_vector=accelerationvec self.old_yaw=yaw atprintbm("wagon step", t) +end) end function advtrains.get_real_path_index(train, pit) @@ -485,6 +492,8 @@ function advtrains.get_real_path_index(train, pit) end function wagon:on_rightclick(clicker) +return advtrains.pcall(function() + if not self:ensure_init() then return end if not clicker or not clicker:is_player() then return @@ -564,6 +573,7 @@ function wagon:on_rightclick(clicker) self:show_get_on_form(pname) end end +end) end function wagon:get_on(clicker, seatno) @@ -708,6 +718,8 @@ function wagon:show_wagon_properties(pname) minetest.show_formspec(pname, "advtrains_prop_"..self.unique_id, form) end minetest.register_on_player_receive_fields(function(player, formname, fields) +return advtrains.pcall(function() + local uid=string.match(formname, "^advtrains_geton_(.+)$") if uid then for _,wagon in pairs(minetest.luaentities) do @@ -780,6 +792,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end end) +end) function wagon:seating_from_key_helper(pname, fields, no) local sgr=self.seats[no].group for _,access in ipairs(self.seat_groups[sgr].access_to) do @@ -841,6 +854,7 @@ function advtrains.register_wagon(sysname, prototype, desc, inv_img) stack_max = 1, on_place = function(itemstack, placer, pointed_thing) + return advtrains.pcall(function() if not pointed_thing.type == "node" then return end @@ -876,6 +890,7 @@ function advtrains.register_wagon(sysname, prototype, desc, inv_img) end return itemstack + end) end, }) end diff --git a/advtrains/advtrains_luaautomation/interrupt.lua b/advtrains/advtrains_luaautomation/interrupt.lua index 4d59db5..b8fc879 100644 --- a/advtrains/advtrains_luaautomation/interrupt.lua +++ b/advtrains/advtrains_luaautomation/interrupt.lua @@ -22,6 +22,8 @@ function iq.add(t, pos, evtdata) end minetest.register_globalstep(function(dtime) +return advtrains.pcall(function() + if run then timer=timer + math.min(dtime, 0.2) for i=1,#queue do @@ -42,6 +44,7 @@ minetest.register_globalstep(function(dtime) end end end) +end)