diff --git a/mac_support.patch b/mac_support.patch deleted file mode 100644 index ddf7b715..00000000 --- a/mac_support.patch +++ /dev/null @@ -1,30767 +0,0 @@ -diff --git a/amxmodx/CCmd.cpp b/amxmodx/CCmd.cpp ---- a/amxmodx/CCmd.cpp -+++ b/amxmodx/CCmd.cpp -@@ -148,17 +148,17 @@ void CmdMngr::setCmdLink(CmdLink** a, Co - if (np == 0) return; - - if (sorted) - { - while (*a) - { - int i = strcmp(c->getCommand(), (*a)->cmd->getCommand()); - -- if ((i < 0) || (i == 0) && (strcmp(c->getArgument(), (*a)->cmd->getArgument()) < 0)) -+ if ((i < 0) || ((i == 0) && (strcmp(c->getArgument(), (*a)->cmd->getArgument()) < 0))) - break; - - a = &(*a)->next; - } - - np->next = *a; - *a = np; - } else { -diff --git a/amxmodx/CForward.h b/amxmodx/CForward.h ---- a/amxmodx/CForward.h -+++ b/amxmodx/CForward.h -@@ -139,17 +139,16 @@ public: - return m_ParamTypes[paramId]; - } - }; - - // Single plugin forward - class CSPForward - { - friend class CForwardMngr; -- const char *m_FuncName; - int m_NumParams; - - ForwardParam m_ParamTypes[FORWARD_MAX_PARAMS]; - AMX *m_Amx; - - int m_Func; - bool m_HasFunc; - String m_Name; -diff --git a/amxmodx/CLang.cpp b/amxmodx/CLang.cpp ---- a/amxmodx/CLang.cpp -+++ b/amxmodx/CLang.cpp -@@ -30,17 +30,17 @@ - */ - - #include - #include "amxmodx.h" - #include "CLang.h" - #include "format.h" - #include "amxmod_compat.h" - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define _snprintf snprintf - #endif - - #define LITIDX_NONE 0 - #define LITIDX_BRACKET 1 - #define LITIDX_DEFINITION 2 - - #define INSERT_NUMBER 1 -@@ -103,17 +103,17 @@ int Compare(const int &k1, const in - // return the number of written characters (including the terimating zero char) - size_t CLangMngr::strip(char *str, char *newstr, bool makelower) - { - size_t i = 0; - size_t pos = 0; - int flag = 0; - size_t strln = strlen(str); - -- for (i = strln - 1; i >= 0; i--) -+ for (i = strln - 1; i < strln; i--) - { - if (str[i] == '\n' || str[i] == ' ' || str[i] == '\t') - { - str[i] = 0; - } else { - break; - } - } -diff --git a/amxmodx/CLogEvent.cpp b/amxmodx/CLogEvent.cpp ---- a/amxmodx/CLogEvent.cpp -+++ b/amxmodx/CLogEvent.cpp -@@ -106,34 +106,34 @@ void LogEventsMngr::CLogEvent::registerF - LogCondEle* aa = new LogCondEle(cmp, 0); - - if (aa == 0) - return; - - filters = new LogCond(cmp->pos, aa, filters); - } - --void LogEventsMngr::setLogString(char* frmt, va_list& vaptr) -+void LogEventsMngr::setLogString(const char* frmt, va_list& vaptr) - { - ++logCounter; - int len = vsnprintf(logString, 255, frmt, vaptr); - - if (len == - 1) - { - len = 255; - logString[len] = 0; - } - - if (len) - logString[--len] = 0; - - logArgc = 0; - } - --void LogEventsMngr::setLogString(char* frmt, ...) -+void LogEventsMngr::setLogString(const char* frmt, ...) - { - ++logCounter; - va_list logArgPtr; - va_start(logArgPtr, frmt); - int len = vsnprintf(logString, 255, frmt, logArgPtr); - - if (len == - 1) - { -diff --git a/amxmodx/CLogEvent.h b/amxmodx/CLogEvent.h ---- a/amxmodx/CLogEvent.h -+++ b/amxmodx/CLogEvent.h -@@ -136,18 +136,18 @@ private: - public: - LogEventsMngr(); - ~LogEventsMngr(); - - // Interface - CLogEvent* registerLogEvent(CPluginMngr::CPlugin* plugin, int func, int pos); - inline bool logEventsExist() { return arelogevents; } - -- void setLogString(char* frmt, va_list& vaptr); -- void setLogString(char* frmt, ...); -+ void setLogString(const char* frmt, va_list& vaptr); -+ void setLogString(const char* frmt, ...); - void parseLogString(); - void executeLogEvents(); - - inline const char* getLogString() { return logString; } - inline int getLogArgNum() { return logArgc; } - inline const char* getLogArg(int i) { return (i < 0 || i >= logArgc) ? "" : logArgs[i]; } - void clearLogEvents(); - -diff --git a/amxmodx/CMisc.h b/amxmodx/CMisc.h ---- a/amxmodx/CMisc.h -+++ b/amxmodx/CMisc.h -@@ -337,17 +337,17 @@ public: - while (i=0; i--) -+ for (i=len-1; iI;li-nLj0V<)5d8u^{ -z&N2j*OsKGmiYtRS!>YTY=nSLGkzI=xL4292a45<-A_F_T>EZ!}L749E_dMU5doMVD -z?qA!U^XupHyxh0vKDoKiukg{iul_n*Q4}kMg(8PyK#@OO?p1#H=c8gpISumm!?7*@ -z1Okb0cS7$Q2>4x1e)IOjisbhE(|4VsT*jgrw+RIkL1WqJ@H@=g@1*|cie$O)dPTX( -zVm=0+4>#LyRg@o7+sScs%*z$UmvP$jGJbo0ro~>6aoYK(>Xp`lc2YAY3OJ?hfzP`@$4IGX=H -z0z+M&sZ~EcK-*aQn`OsGO&ynL9cf3jJGlXM|MWn!rGN02|Ktf;Dh^t9#9Tb4olWY3 -zk{m`8tdK9vl2p@YS#m_3%4$tsmWj~3qr;19r!G5La+A3kz9Z?ArDAJsceH65n{wZ6 -zvhVQpJ89LpX^2-Ak;!RC6PjiM4?lIu_B>3_4lyE&ibchW -zk~}fli|u^sE#jEz@6-8q%lp}FUK=jE@R2j+{CiTuUT9nT7S)p#*;2nJOBag~y0qJx -zY_~_XZkf@x9`|i@89g0&nJzVZtvwxT`duq+r4L9K{jzq+kJ5!5>wHA^_}uvg*}ZQ|}w@8ItOy;v%X+YS^_zinrWNDm4e#+=`*O5-frzsYbHgw -zbrQEmMC*sPrMGkI9=-KCQ>%?in1GEld&-CROdeUk?P$)ae``*CX+5=JPM}#km%~=$ -zx$L!S=klS|crI^Q&F8YoYCPI=RJv`uWshuo+|>4v)pRB!dnOMr>pk^+BKPXv)WD!P -z5j>F(pHDdDvFlC8uB1|pw)63(osZ%J?{U>PrjODU@&&%cJ4`LM=PQZf^zh41yTmgv -z?eeD^n$k5T^jf0Q6EIy6Z{1)+UaGGkFlV+rnmct? -zu|2er_D)}1#q=02q5bei;sHAc$I83-SgJUdtB?-hr@rTC=d|ljQ+;{7XP4W!a}V#_ -zyyK(mE&R~P*PpkdAT0eZKfCC{x2u^NC6iP~yqCyNZO^NoFhVQb+q01%_e^BbK2Aaw=FMqLfuzvZ_?`$KTzlVfx3{n?sKX$mhV;4 -zho9N^pptPZbz={CGk)rR(7NqlPTuY%A6RKJ>|3O8f7QOTs6^D#V=jQ%?Hinsw+)Zmvfao -ziDUtt@|@;-X3d#1C)Jlfdrsh69*RFvbW*IO_=e&yyd7W{Nu~CQ&>~@iN7m6z@??qnJ;zm*O1vrFmaUF_EH*qLJcxijOGvQ0%8TNbxnr -zIf{H5x@#%MP&g=fC>trdDW0czkK!c7^)yoa^!+J?lY&QX76m`YBNR!BpHns2oFDQ;td`FQ(H{=S6Ybfj#H&fJ6G*d(8E;uDG^6bC8(gJ$R^ip>;TDc+^nMRAPc -ze<;pVjG(p4wG{Q_+bAxOmr#^bR8h20L@Aa~?4cN%V?%T7|9Xzm-MUKrty4V(o&etj -zU(c81i~{o{cof_M{!aeQRP9s6>{NTft>6}LGx#dF5quHc0Imnuf@{Fl;3{whxEx#t -zE&&&V-CzQYf)Q{57y{>lEnpMq2kSsLSOq%4Dd1#q0$2`?1xJIUKs#6h7K24#Ay@$B -zgL$9|D&TpmTSSO>bnD$of|0VjhKz;bXbI2s%U -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 -zUxHGIQi*b6_qdVS(lNWzcTp$ue;F -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 -zfu0)#dU_DT0mBc<(8G+AJNpxfSZ8WoU* -zLdMt_xvxLk(Vs}sV+yYbuLhy7Y$ly#N`%vSFW!HPgx*+hw6ha#x1v+b)@S_A0vH|^cm9UNM9g*iS$*{*GWf6H<4~7eTQ^A=?>D}q#u*+CHL$IMbQ0+l(kjyFq_aq8lX^+( -UN&TeFq+!xl(uJgpN%`;p0C3oGl>h($ - -diff --git a/amxmodx/JIT/amxexecn.obj b/amxmodx/JIT/amxexecn.obj -index 70edf84ae043da56d677b8adaf47ae82f99bb890..059c2c833f384e96409edfd6902f17edd206ecf8 -GIT binary patch -literal 12621 -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 - -diff --git a/amxmodx/JIT/amxjitsn-darwin.o b/amxmodx/JIT/amxjitsn-darwin.o -new file mode 100644 -index 0000000000000000000000000000000000000000..0b21d6d5ec31a489100b53dde3c3e6097b2da816 -GIT binary patch -literal 24434 -zc%1EAd3+Sbww`1r3lJbcHdf&RN|YT$FsKa4kOZ<%0ttdcmVpdrV`dVA7Zn*0#v#fT -z*DK-zUQxMER8SCYgJJW!TvQP7iXx)2yC4z}$UCR%>*)^6Jl@~$_xMqK-#PVFb#--B -zb@%isK0SZ(QiQ=^Fj5Mk6iR8ILH=R8(Gd90pxy?!?-I~^B%eNHf -zw=O@or!3EZ`t>mw*6_hh`Z8t3?qa>2V$L_WF29}*SlLV3WrGcd=Pzp`wk$kZRLxFY5WM4|Z7+-$B1mCoNJyzXMmHE=5eB+|M|2DQ~%NWN0hJ5Soc@N<# -zKH843MLlJ`-j7=P_y)1Sv%~25>B1D>jV$nG#@vt@eR{P|l({4E8?P%m@x!F{T+G$O -zXKL%4*Vg3O66x7t@);7Fy{Q*up7XG=GRl|SBjgCV_uY^jrp*z-RO40}YKeV{d({*{mHJGJxT{tj;kv)!VjZrmyS#O={%V6_X&@+FLUqT|6&i6# -z*DvB&t1PTf4x%?+(sfNtJnL&&?+T*-;-ap1Wc@F)epL|ts*73&q5j>h|AO^lSL$6t -zzfnC`p2$i|5N)c^zN2afvi1i0XH&$L+U{Dt#t>FdWpz;y^~nqVnvI=U?Pc|1W8gvX -zzEFGpWAQB(uMZ-AM2h`m@p~437es8AV*gl-rX@w`U0+GiuW{|+=Nua; -z(IEQiLhpNxPt9u@!uswsAe63Qf%Sv*`WT^~#QO9g`itj<{#9N5e`WpLAo@@A`j{cg -z^Q?=yvbSFpx(3q%|15qm+4RDfT=nj-z_Z>diflR9Ib@f=kPD=lBLX*XyU_VUytk|&h4NBF;I4eOS-+;qbNM33 -zxwzz^`CLpSJ0C=rA!H3BM{@)FD}5pZpK^a$Taz~=1etWFHVpUwA{ENjV%uQzA8Sq~RmS(6XyU(?6S{uRQW7q4oZD|8_ob;`x@? -z=Xn94VwqelHAu0RGvW}rru)q%F4z+LBKeg%mbbsMMZ3>cJkoj68$A&7Rh -zthyJqp8k5fhWy#2eA-qwSasTZp>65^I=6YyBH41U>H3D$w%(NMO&;;U8mY8z7kD&` -zIpe>u{1|zJ|50vkr@KbFV@0(Vx9no|&0Br9l0Nr?R4*YJR- -zq4l9n`hw@UVC0nrGeyBRjU5+q>;H!eZjK6EL6lm-qN`N!*B}*qbeby|v+JrYcsED| -z52_Vhtpyi@RFJM#u;3~c+}b{H1(9k64_u{!`+`)k<2O{W_$n1N2C3iywF1voDhTNi -zxB`n>!P2W#Fg{2HCbfcxu2O*~NCi#5qJoF7Qo+_B6)aFIXb=;3GD -zgGEYo$H1ade$kO4<;EbQPJU5y5kEGSkxnV;82CPW_!m4jvGO5SE)Al5M=B2qp2W{vVqYfD*)xg~ty{2l(j`*5&AUq{ -zJ{}$T;p2884%wwdbqXxFSqKt$DT6u%ZhTiEIJ=MP$O%%%AE#K-XO}W3h+vNpwArOR -z5=5|G2!`!a-s}|kcE0?SY(>|`amwBxl~hBcGzSr6Nx?3@v;ULh-d>iB4*;tL|&+)DUZqq07T@R3%+M;es_L4=N0!p9qx@R-2Dajk?;G%7=a2;*A` -zmp3YfL4>D{>xC;CmHUGTx3vOWD6Oc6@2xWH{2AQWlJtwHi5MgBx? -zPB}@GnQ?)ebMUA*(!*-oA7k|4l<~}sGPuKi -zjwr9iAYSoX`u`IzUGH(}cjE((!3Ra@_v8V$p~TNz;#80lg-859BecYR$oJ{f@j=!< -zq2$M~q=sq6NdNp7Zq`Qmpa0+@tzLQZrz@0S376ta2)ycV7TGPm8&bp1?(-Zpdbg}w -zcKQ`>l5!vcZ9Ki&=Q7a=dA6H;9n5%A41d)(fgcv>U(fbP?>u^5+!pz2dhL&1k4ITTA1-$GGcflUi};i|D%kz>ofm -zWlZEkgOx{FYPhoYH-1FluX>kj+}t(r#q4|(bxAI4||4piEs&Faox&?mG -zP7>MsCz$qSMS4z{_V?&lsN57p+tIJB^J`0kXutnK)lTqh9}c2@+pnGJ*KY0>c%AnN -z?SJU9LwJ~lSyu{6gmAXO`@_@w?=ko+hMb{?^L&#dJ%@~24uwYUp8v6tX5Riv16MS` -zwCHnp=<(=%jr+oWpyL0bnm=nk9=`tqv#Ha)1N-eC*l)U$+no;9=gNbfIV{g0l4|;Pw_hJD8{K5Re1Mjp?1*ovk%O_^L^)qi{QW%TRqIT6)T)1##(ASjTK2SBL)dvd)cbL6uFnze{WbBN -zH?wzWd_ZAcuCC-iXZ0&dZ^gC=#8+nmE{?SH$vOm5xX-?#Qzc+2< -zXT0NYv+)!E=vmogjKehVXwyc1PCWi>k~z}#dy?7YjA$4*ddwN;k*1{FNY|mHT;aKy -zJYP0>_YC{ssrraEC*AdDFE$a(IeW3q=Wb)jv9zXT%fzobG@HF$#ayD(Iz|1_FfyWH -zY<%vPqoJo?Eb@G3JiVIQ$L{!su@S=>PyfRm*0s^IuZ6uNWZkQ_CQq|rUf7r;_k}cx -zADfR}ywuV{$0L*H&e2n3=1!)wNWA3D?cuHM?VDrrb@kRJc&EoS6eU=53R()NGotP& -zqKY~$dY|MzbAm6ohmU`8x}szVm$bwbw0z;&8d*e{o_jK=*b**=GELKSeVK-aiccaJ -zedunRWNCJXc}_+i`lHBLd7gNDoUFuZKd=Rr9L#g3MftPDeK_6LS&VzKK-zfcsMnfK@7~*3oEg=3+N{1+!Xn+o-R7`0( -zrL{D?2Ggj@rc^^|8Kw1<_EBoz#$dRGQZ=RLDQ%;4lu~b+`%@@+D7{8$H>K`$O)Zo> -zlo~08(26^rl84e(N@29NOrW%w(oRZk=;d)DB_E}aDg8<*j$WCQDA_4J%&*UszNZvU -z?~gZ7%BAF{^em;1DV?O$fnKMEQOcv_qVy=GjgE1G)QY|IE9c`zy -zpVA3R3ACK1P^zJ{g3>lh!@G-dRMlO?5}0NIX8}Ozm -zV9$X)1-1qD4Y0eyZs{uRlU=2K5cVg)4}h-$pMma4;1c-jU{8lV3HAiw_3$UaZb`s# -z6Qunu?7hIZfh&=JAM8rlGhk-|M*;f+qk!k*rT$F3v=0Gy!T%Ak3I27!mGD0W{2TmE -z;0*Y02j;)y01Dpzf8ti1? -zaQJ(}?hM-i``t)HcaipyF4F!C_WQ8cz9% -zU`N3|-&xwIrJ{;yzv -z1bY+gmta2z`vKT)*ml@f*eS4w!|nsSBWwfgQ_+~u(O5@dZ-@N`@HzOOg1s163x65x -zJlL7AZv_s7|2o)Rff4Zk(NWrmJ4$;u>vq+Y597i;;gj>@?tTU~lAigB=0>QQ8Ir&?CrpHz?H~<680isHE=rer@&4D -z4hHr>ejIEg@MJrQ|7j=l_rU%DxE}Zd@>jrK0(1grAb%?CRN!D>59Eiy{<*ERkG92n -z4%`L&0Jsji$6+soJsWl*Y%A;}U?TkefIZ+h0e@>F{U?F@+MwTIuZR5t><3}j!*&4+ -z;hzB83>*M|9PCcO(~;8uU8J{|4Iwdk*Xp*g3Gxu!q2og>8g=Dni;{ -zN8os{H^6=xwiot7pd0=Y*cq^IhW!`V(Xjsvm-f+cj3?Mlu>TA83fT9_GI8K@ZSLYT3~zl|1@De -z1s*U-|3|R512@C}PvFz=KLUFp&vz_;Lk8Td5Ni~Ks+Ww33)bog(AJsj8r{=91MCD;`*$sH4RAH^Ip7N5lfXxT%YaLP -zOMnY6yH4|f^*}eU23P?s2bKY60H*;9f%%tR?+joXFaI1)G%I1o4h*zdA& -z(*u|Qi~&Xiqkxe>6VL#>fa}`~{Qa`=cLI0>cvv?s#ry#71MUXy0)7nK3ET=)$ML(s -zjllK5b-=a2HNe%t=YT7KPXZqWE(0zFE&(nC&Iir|)&t$Z8ej#m9H`Et8Ng}4LSQ~H -z2bcj&1Ev7S0mlMI14jaf0tW&I0Q&)ZhiLOvTz_B;Fd7&Ij0Bp12H*wE<7VLRz+ZqT -zfJcCbfd_$KU$!3X2JQlW4BQFa3TyYz5I1V@#I2t$-I21S#H~`oW*jsl#q4??Zd2sR@ -z{tKMbdqDnu`crWJf%gD7{}zq)+YpZ5I+^ni*`2`ockDjk9MCx&oWClV!TDF>9B}@A -za|bv_J63}8`aKVv;|G?4(`&Th8E|@aH@pfSYmnbfna5Gu4$hwf_k#0&oFm{}DV+uH -z#^)pNn+E>XEiP2+lm4MvKa2|1&M`GqYjY8}fi9Lql&ST{ha2{8C!FddR1J2{}7&wpB -zpTT+j{tnJ#x&?d&Ut{?!WGLh70bb7I0lb2b4bJo8CZpCTW*tv8YWxZJ4q;opr~AFeWLeYn=B_2Jt_tq&W)c@Ay| -z=Xv=VIM3CCy7M||)aKoJqc+Ccn6!D<&7_@sqDh-~NhYlyGE7=OOgCx$P-)WU-MuEQ -zPZ~_xyjx+?`sWps)<2s}+PvFo(&pVhlQ!>;nzTMVYtrUjSeQ2NI)`cVu5Xyu&m+UM -zd6yif&AYrXZQhlHX?-#$OzVdQVcIz^57XNGVwg7XHmH2Q!LXHh2kK;ALq7+vHOS8- -z%sGVg6!_nWUjpC2=N~Tlzj#c5^Sx*QIB#(q0nVRxZUg80>O^q<+*1h78`tdM{0Ybf -z&U@76gYz@RgW$X^Z8s1LuuM{|4vJgI|O5wxc89{K@bP -zIPWgvJsiyWGhzpD-bB<5oX2KgaNaL82>d^ -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 -GDE|%fW>kCt - -diff --git a/amxmodx/JIT/amxjitsn.o b/amxmodx/JIT/amxjitsn.o -index 4b48453124d28e161a199b2a8e920c6d8f682a03..5f4b0e404c62d025d4b8752936943172735656a6 -GIT binary patch -literal 25728 -zc$}S_3wV^p+5X?%Y?4i~2}wvG98?gfL=XWHK~M?Fk_2+z1PFpl4hsZxVt0dBX+`5{ -zT~hIY+G5oTZT&n{Y|*0FZ8QkBYCkF-z=|SL1pyTi2?*x@%slt(&L+E;|Lf!G?EU_p -zxo6(fyz|b?8+)_8XqL%jGSokl5o3hNFlIm}$=}h2mGb{D|4c}6;57s{o)^kbg~r1d -z+{*=qvBeznS)j?fhyHaAH;ie$_9y-gq@)!$j0-8zeq%{?n7F=F-c9(KU1Jzy`uDBx -zB1#FGZF~h?qhzkfgyXYPn$XMF>ZEuq=bJTOm1Evqf8NLpf91$5|H6?&H;SOYz~-Nk -z>igfAWI-{p;@9+v?>tdxqo{3XtPS=0-s~CfzeE_?cgD1Tadw{nauN0yXN)OMJ+a9z -z%UqZJvCos5{f}wMqL^o>-;(HGooH!))!M$(;y1FpefeiO&wVha$>z@;YC1&WJ!5ih -zzTBbyn}%h7@1HX=`}7jOCo$n4-b}w`TF5}#r?QXVaAd34?{&^=7j^k_EgR1f1b(2O -zm&6_SO>6J6p4c=^-td0yb9(6C2>+d{=1xi%=8Ngd1xA}9o6l$SL&`i)n5&|gkN+sm -z?aF+cFy9)*yq(SW3v=L)!ju4$C1iR`ntC#aiK}Xfr%L^n+r_2Ycu3U!u_%_(x9(-( -z#YU+E%A}hg=x^5cr4_pDNA0@EeQmT0e{K|i%#Yfo$rvd7ZNl$~;@^EvyERiPG73hiL&6nPnm3OT0j-j8I;`@4sgzAkk3HJiw -zu8!h9b~adZOqy`}g!|5z$c^Cd((Mbj#TSKnOBC~cY!0@?&xHBYC}tO%gKaUD9>qY4 -zC9-)6o4GAsW{KPu`=8}THBw|*#QkXRHnoio)LA0mzt4UM`R}p}Z11*svjgjdIkB(# -zMa{f~Y7e{=rPhugdLPBcBjVH!NAWL`e*bgg)O?mpg?|V&h`^xO$o@-oe}?qW5&ps` -z{&Q!f|7orMn}q+yDE_x~f5xSO-wB_s@74aj^mSNn4L-$p=USe4UsU~WY~-ijEsMOm -zKi#w|SSVnk+x=2Z-}>#Ueo^fuaiaalMSfO>gsR;t`tvb#ii<>ng;5H8d0G^>T%2LB -zz^_Dsj=0Fp?++dQKgg_}5rJZ>b~0L9I(IGJBr5>^b8PBp(#Q1|JKNlO1|`#za%cKto6X@YEfvaC^RV{@}rxscCa%}^{NfR -zUoZSgefin{O<9ri*C$gsoo`~Yz#8sb9M^FFr4Kn@E75G=8)>t*~D(USRHANir -zB{n{CpXK6?{6t^g#g=wCV6_I4lOnf^<0mS( -zIZ6dPzeNRi{zL_xQ7X7YRnYzu6_`>YS728ato?}!W=5&NqAK{+PgKwzrGl>GsNkNT -zs9<}P3T{;ubjSzxNJ`|+;aX`c_x*eK{^~$#zsRP^LDQk?z~xa)X+cwWwHP+llP^%) -zFY^vl$2ZVEf6z39lewiLHr)nb=?PT(# -zqvF(;3j(83BcJc^Z+NUdU0mMTsoI1`GoAffzPjORjk34*zvjIiSP-~BHS&n}FVf@7saqe8Yb)t{3R{&>-_$&_$UT-&Io)ErIHqS -z0^LyzC2ZIw-s~5q(+wM*9{B|`N*ZI;K&MQ2i_;@Nh^LRqo7>PS+zSHU^vL^uN7}MG -z1M8z0o@c{5Vuzh#hk^9Sv&Fllai^R%8{BPdJT3}+9i_lLF3_$D1hV=^Zt~-f@l%`i -zYIj!Pswk!eHXX=%^-NZvw!gMZ&2;c6_fB$Us^0^h0e=+ZwlL%R&cK!^#{0sI_jLyL -zMKLyn86WHn#AQS_&ImI;)ET%mig93=@&3-h{3yn+j_AfmIs>;vF}@yVe6%z0R21VQ -zVaCTg1G}RbJz>V*c8W$3n@RWDlBta_wMH>h7Pv~zQ*o0-ndzd;l+4H@^pqpqhHp6| -ziiz7=n;CgZbMQ;yoDsM+O8$14KU3`S8L`KwG9ypK9+AGD;1bbZVg4YBxrNQLod?cl -zMxOf5W|Jj8aQ=YE$2M9z3IbP0$+yb<+2U}PktMKXK;*;Oe^~D69(C;Nh57y{=D)Dn -zFOPlefXK)GD>m8W^5H>I-GKp-?{59!&=jvHa|Xra3@>XSl^HNFa+&dAW%5*+B2i{` -zlrm=z>17I38NVp=OHpQE-!gB=GVM3o3~!vj!RE6Ya*E$GY7#oLzlqYX42;|c@0O+i -z#yc!RiLXV8ucDNge<-+&(34pv`o9wcqx65$DTZOwIu^!QgU`PV3$HCW{zHhoy7Sl< -zeViZ4P{5xRx!2z&vwMbhw+`@qDK7nTat9jpBHE?j_j&MU#bk>@;{p!|tI@aiKYxyEzws4OC?`w(-rZRQW2m>2r1cEh@A?h5|{0BTuxa$?UzeEPG0dxFU+TU(mZU -z=&g(5{p`QWJ1gkDCyMv4LGO~FciZ5|{k&g#|3kMO#)HCG($`okjmr(+e>d#?h2ggw -zW#bQ4_~%;N55&BBz-)bY&08__k^ -z)`CU8u_O169l0n_K7@8QyzkCV9^^ByQcWKo{$&4#NBiZ)){CtC*kwXy#x5q=D%$gP -z&gw;7^X67L^lxweqLIVekJ@@#hxW8)RXECfS~L7*7XLD^ -z9%<#J2j8bX?}hatB6!5?d#k+M-;nA%o_*R^JgnMZXz>+i`SuFR@YySURr9N}Z?v{= -zA9?Mf>zrL%MJIdY&8=c&e`Nc#71o=->)I;Dct`#!;0v+n*)()&gJt#MuB~F6c;vBZ -zIabei({e2C_>Qqtrk->k>Y7$=^&FU1E+bb`*T5qJ!zO`iibc$E5g<=>yAOJ#0Sl`|9>jV@_u9_<9cl+PT?$62cmk;%e6{kKWO`@bd -zqpD|j`*v$JWw!sKh>G1MilI!`qH=$+(b4#}_4a>w6Q|j`y|L}btOvfYj%hmE^WUwa -zp>`RO|MiH}gKhdZd8lC&P)eh8KBYaBKA;A;igW>`wUjnedWq6@N?%YKP7Sh((%kd7 -z4pA4rA7A69vhNC}z&J|RQaVa$D0Rz4lvY!^i+D4oXJ~s5B?~o>iIf&o>Y(&8r7tMG -zMpye=N*7Y2sGyWV+tVrCO54v;Iv~C`Q#&0`sfN=1l%AnhHjWxsDWz6Q>nLrZw1-l1 -zf?-@msfE(-D7{YUFr{JC1+7E1dlrP0VOmr@<2c1oKm?W5E~=>i(>Ttlgm(yu9Pqx3bU5%fl%M`=B!)0B2n -z%Az;urIcn;s;1OPse{sIl#WswNUxZgl-ekXx6%$udnp~IltsO29;H@Fk5GD@(!?RX -z8tgc)Yn9g+S6}0;F~)h8dAx3KO)YKR*u)BUyBgsXThblzpZ>QW7UOu2o)`X?A%e|D -zN?7E0Pev~uY=r)1L+}WL|L#HYCG>04SPZ{XHJ(bp85&#prLC#>MnI -zQsW9k{1r=xtLb;F#&z^NUE?PDEz;OazhxS)q2Ef4#e(R3jqj%4g&MD?-^Cg~PQUdU -zKTW^OH2y37HfsDD{kCfSwxRz!-t$2(-e-hg|AR*8Z*T;EYw+LPC>A$dzdu&G<%t@n -znZoba08{w=8e$5+Ul*Ff?^m`d{CrDFJ3mxxy%%uNa(D9zlrts_ecN70Dk>Y=w!msZEQ~32g -zVG6&#F=qYmgy{J(hhOgz#7P=YG>2dR8RqcoUrL;&@pZ)M8aEU7*Z5|0`2Ff2&eV7V -z@c@mVH1pq7DHhWS{r>)wc#y_>i3e+Zh -zEOiY3Gtm6$0@#-_%e-u6U$>f#hZxhG~P_ysBwUJoyPwp{*A`( -z#bUu7{AnzYD-|CjKCE$fERQ)Ai}B^4*bw)N9)Yj>oTx -zi-~`yab+BjZ53Zf{I14J<9OVw*iCGT3-RhW9uq6}(e@aP*JHe__zBuxsPUgLmR7ut -zwmUT5iE*~#U9|nO#vju5-!wiz+n;KDl(s+9_&eH;j}P&W#EBZmiSfL~skA*w<1E^q -zuknSny-?$eX?u;vqU^02Pp9oaYCJ2R=MaiZX?wTE)wKP-#x=BkM&s*g`<%ue+8%BV -z@h^xk()e!7R}?=;T&(f$;(0Ek_*vp+jm50GRpUr;ymJdjptZ-zNUC?FJ4Ui -zpvDbWp4%y2*^6%>?$p?C<$0ju2Z;}A{J53ph>HJ*I5jcE&s%x^s91cw%GbD)xLo76 -ztUT9L{4ViIjsIiid8pz8#7}5^$jWn6#orMBOXE{kp1&#<_bNFl#Bp>k12j%e;JL2i -z!NgZ;JR*VT!HUNa|5D?L2|Pzud}RX9mle+>KCN*fvB?(VGO<66=O*wxTk#^|n>4OV -z;5oSB>xo~{*qy-hbHz6ipVPQKf#>du{lr&md|v|3>lKSXrn*_i7(f9L?W+gC>~E-tMT+iUhhy`NW50#szhE3QCv&>qQ=dM -zyiTI{CgS}X-eR1h>s`oT94vxaep-aF_G7S6vxuDV@nHhQWCEbDHhN2 -zB^nP);`JlN7ZI0fd`S|oEh)Z?c!kDOl6c)o@ioNvX)OAJ2Q)4s{)@&HNxWXAxSIF_ -zjh#unmZi9XxLad)60dV9zKM8vdWc0|^D~V*h>JCTFp1a46hA@i)%e*YUOQ7PK7Xv& -zczY7Bt0{hqIH2+FBwlk`z~JR7emD!z{R -zQjP0vyxyp|iFm%oZ8lzuRQwC#TQt7S#_N=dJBXjsc)g9+Fctrnc(=xzY`ngycr&pj -zGsN3$y!NShC-D@G-?8z!sN#L%cs2gQ#%rdEza_p^kSW -zA80%{nb%{mHzRtatK;t!K~{aW!s;#V|2mdxwgicb@NrLl$HohLL-PT{q1#Y0kfOE<-mabCT`I9^%P#~S1iUN4`}>OFaB5@zs84C_#1)Z -z6Dj# -zU(|R^8h`s#d_@|62UTn*{+GsLthGmDC-FXwm#6VJRK=@^2b`x}zcl{78oYjK{H;~- -zGim(YRq@NjbsGPJxJlzvp~Z4Tu0*Hn>(6E*C0$>CHX8%d_4RkNF)UqQk2V|G#KSb6 -zlCFQxFdO;l`u7a8F)v;Jo?$kYr0d@^%tl+f{yoENtV!3uXP6CNy8gY&Y}}WwEr%0t -zNY~fD&Bi9;0*#+d*S~L>jjieW_bs#0m9Br^G8?;S?W9J+7sOv#zGGv9_k}dJ4H}+eDzD)o?CxHyO@l -zt{VDjyuomKyw{5#kqWG&rOxST_&FV1T}!=-H{~%0H>pg$I0be!)hunOqa$i) -zbU9bL+@6M(X4)AQ2*NUTxb?0j!J6f{i#$F(KCNYZ+O2K1jSY2Fpt;7|u+l{vjSaQ# -z8h3-(q|B8yZrb1zZ?0)_d24DLwIkyL%PF4kv{zI(OG-=ZL9ov+tPDbq!(p!op`$V< -zcMfd?12apjO7a{*EVdWtEW~nHh=dg#k!d_IGYtZxLbhkB&Lvw1|vf(au -zH9PBDnq3ArX&Gy5X=ycXa5s2e+|czr&5QQOb`Hth(lTdJX-=NAtfJ6ZPPx?B#G|Fc -zIYpH!EFLx$cIbXjSP6$-#uHX5SOV_6nF!U_Qb=t$sY4Oj74}(bFK*Y8;66kcdk|q& -zzX&^YzbCAOLoX9Ns@zg)>L^s#((Li7GMvFhI0Gee^71NBpr*dwt^6{~b{U4-QCX_o -z9&by~EyL`VVcqS}{hqKA4!w*gtW>ZB+!Zqsa*GQ(q1KRF%`M&uwKsZQp`3}xnG_zL -zR4c0q-2snw2OOb0;L+}YL%#!_ush(;?|>)l4ipvU%@?<&p?;M@=S&2g@+c@Gt}ewW -zBrdKNlvaeyD-jGn7~-WQ+O!yhP(Zx6i0Ose -z3Xww;SwTgqJX$yPpM({5QJ3501(Yx~%dUZ5ccNDiC0U%VDJnxgbuuQ8Yj#z!*yHlH -zCV5q6Qx7k7fnBucIvlDJPp}pTs_~#6M}cgy%NiLfBuJ|Rq_CjKnX9^l -zWsP+IRgWMu&>_eSb<+wev=VN;M1@wut(7RQl1J0j#)m`04T1FyD;26z6jFt%xKJAk -zRdJy<6sigpYSRi)kHh`Dthh?_J)X8&fZ9o0ZO~pK?c8ij#bs%c7iGTOUd2Eo8UpH= -zCD_G-+3b?fB@M*HNRIlqW*T*>1CS3D9fGq?ox6;Pv*!>stx{Y+YF;hs^2snCq7360 -zMHr!=%b`57fjC0_sYmNh9iiUTqjjdTop2-Jri+$~cBfh$w>h*pv^Uk-xUH#{hJwNN -zisq_Xt7@#lwu+{zTB^M~*qU4`LXAm=`RHXBM_*W?%ni*!uL!bL1Vc^^D2D_29u-iv -z$U5@us^WTAuwoJ9ibW6=Q;-A7;XuAe1yn7ni+6DMF7tDX%LLXnwMv{-D7z|}#>iG) -zz3UCZE4n?IiL-Cs~i9uguAp7pB6VGe@2vjb|&J -z+=(oqA+6Vmo`f^FJK+rUDV)Jw2xp)p;SBChI0KyuXH=F3b$+8p6eUvtrsy%O$T@fx$@1$`E~sIq8^DxQF(Ia>{>-laCw85r^P{{mt>o} -znT}Mx1nKqGI}mDdPGr#=o8Qm~7&O_(J3F}5*m8s6%q^HxoKulsSb{gZ$Q3W~UYYVO -zFY=mPO*M6OqTdkn$ii9G;`UQ_;&j!lGFH;hggzPdBBP!%XvXDKFBAFRSkh2mPxEoP -zy|ksJSvln30Ne6m#I}4A#d8>}OFoR)#semf5|5ZT0iGz!E?MNzt{UoH!9$U4Go0ui -zH+vhJ+j^O(0jvGU_Np@Z$)W)gKTiB`g;0)Cmb$#fHLG%I^5~GO8oihXVRB|k)6u5Z -zhDH|%%M_SbHn%kyaw;d@ee~{XSaKsZb~mnj2?RO4RS(9Cx{#B!7-kS~LL -zLs1J;jRc##Az$`lL-vDWL-v4TL-u`Q1J_yFxz`G9(qk?yZdc9q9OnLJDKGMfhP{*@ -z5_+H2xLqEvdpx)1U1!9PHgV>$k_SmrU%s}P?Hz82bqcsqDK_z%$M5q}Z-2IBvLeunr-ur&_H -z0lgrO<5R&`L(33f4sL*bBZ5?1OGV -z`~~n%@JHaUz~b*41!r2BF9qj-%fPkZ72tO8z2J@D7r;BgAAvuGo*Fefgc2K2EPX0 -z1$`fS82UAQrX=h?iFq72AG!d#82N7SUC>9MPauB__%-Nz(ElL+7&ykpIsiJ -zzlJ`J_@BW$pl>7o3HU3p7;p&gm&QCCJQ17+c7R=AFZd4ddhj2?FM;0#e+WJb{t+CL -z&YGFd@r%KiLURzG3tk4k0qg^B06z}>GvaT7{|)^N@iSmsf94DNGfx2Lf#-soz&C>* -z1V0J>JNVz=L*O&uv<&7E8O&FLi@|7JHelVKZkZBo|(x!7&8?g9~*aW8!U>*jZ2+jo;Ko=n13T}hmiTH28&w&39 -z-VS{q@h_n#5buU24&?ax(2EA*dO)v6yaIYH;)|hf#P5av8u3S=n-TAVzKQrQ=mEq} -zLeC&>%VHh@oeV98E`~N`p}m101^*TN0rV5-G357vvj#C=JcxM~cn)+C;w!;-fgc9{ -z7Wy3GuR-62?uQIIng6@L83sv*RkD&XZ2cd_cN1@+9zk_x| -z&q58%?<`O&)CNt3WH;!lF){fAniHfSm|1DXXL3RUX?BcY?A -zW1-`rlb}!Hh_jnG!87rF|%8miVOZiC(hT?<_Y -ZeE|9}^bzRe&`r=Mq0d0oI*0oA{{YwJoOJ*I - -diff --git a/amxmodx/JIT/amxjitsn.obj b/amxmodx/JIT/amxjitsn.obj -index 24682e0009dcb7981401fd089f48988f6f5bdd99..4981755744847fb0e5389254cde73c5001a0fe62 -GIT binary patch -literal 26143 -zc$|%#3w#vS+5acWCfVE|Kth6`f&sAVKJo%L1#pvAe-oX}!eT -zx}@H3m3qUfulm07Rq49*r96LzGA*Q7eSUw3wIb%c$)qoLxHGR?m)p*1~RI3{jC;hmET(?f-0 -z!q<$=`!0Oh_`GAw!-3S4KLxYHj@h<>^!IsRUv+R3ulMJk%a`_r3mxlE(L&?|{qu4X -z*K&4upY!k&v&Bvt+I?9+{hb}YrEB5z;cWgX?X<|mxaj6Hr1^f!yok-UG0b28Ak5vC -z`9?P15W~Dhn(taD -zK6DZ#Ck$hEh~2j&L~jJI33mu>@g+8IjA6b@n$Z?NW%DO7%wB0mTg;?WF*3vv-8@s8 -zWm~+!5xp&rI4K*|cusQg@#sDp*EuoLbAu=U7dIfW(&6gQ=ji+|pd3L0ZosPlIFOG`Uew9ZnPNeExmmIx%ZwX&GE_BJ$ -z46C&fB(KmU5EUhmT7k5G= -z^`9LncPbmBw54O;3-7i_TMWZaX?P=YI~(E#8~z{+cSW9eD*Hi6zh9*HtUeh^ifoVJ -z3BWUw&%(GAzWzI-pDM+|TlF&USW)WUWA&VA7H68C68+R2ZmnQzl66(}vA>!9X@mWH -zzcc;j)np3ic!+b{7bC|8paE6n5Ry!j5Vt5**XC!%e%~^EWjbze4 -zFJ}&3^9XDykgU=Q}uKfA(bJk=1O^7+j-m -zN38A33rz`43mwjz6?r^{_X%0_8B}}vFElFdL|^1DsY+v2yj{ZEKVc@<`P_6_^N{1G -zJ;kY^qMtgtMTgZH$w-Ud8fG2Afn~6t|A}0jrW_+>UFo{Hf1AF-ICX`;N{fD4zx^$j -zalmXvvVfkVT<8CP2{(%p^i@05jK?^mb8yCTkujxr=#9ppouw6UaeDLu(yan+`jG;z -ziBZ5ihq-`R+kUhLuf{0gHmiUitHG%l1(aF^-0&j>T$&NR0H;;J%|BAWwJ{3V`i)t@ -zEk9B~Z;S$NwhHL}kpkj|L@&T)6|nY43MhzCfWs=_*FRD~cZ>r1zBUWE{YMJe5~F|{ -ztO9z(343rz^ozsg!d4af>-IhMk<6jdO*3HHUmv+JhG`f~N9(!U)J(oex@E_r!26m(I_IN8&S;o{F+DMZ!`2{b!3K -z6EdT3@3^mIUwaPk-uaoz1CL@l`K7pZo34%+Yy0p^xwgHFBX?&;@A1AMETIqb-tW(z -zO62<^kw~U;!B(udO6!}UZHoC|X7tX-<-#1dEs{Pgy5VAB$lDeV6#!>~~prfrM7Ff97*{O&JgEk^aujeHcNkap7(IU2*T -zKpM93o&Bugbil?9kA8!hAdHDtN2ij#<-?<&h{q0zgX`;M_u@!!c=UC@FKl_ek$Ynp -z{#P2_=N0zy3M0d#KP}!Wj9bNHvmq}V>%Zm -zkxOEjQlx2b?(4^MBaI`JRVt=^pUbP07?~P+Pj4g~!?;;9-rF157{hp%X1uF6vO9*+ -zry1|-jU;77H_p|J_xDE5i($;sjCc1&>S7qbIH(%e^+v9bVSH0FKHM95CWdjHW_+YK -zvOR_|pc#ML%Z(y2n~t?3Tj^mcjiNwgxI{dsng@yV%;7vUv!nOWha8k``1<3VjSp*M -zcJxP@eV?&&Zsdj->03m40k82nUgI;_(I3Rt312^kh<360qZsCPX%_7~axy#mqyKzq -zawJF27#Y286NRHBa%qfor%0dA)mcfF$nufVtFz~TSkvuR-S1`d-7(BBNOM@!ebdP3 -zb^ov#Vf2P+|uGfj!y!&YN(>A(NCx$oD%$|Y_d75!j_g>ADu -zm^D_qmD>7mYyUeev{;}>+G)`rv}cRtUGp3}7dX2=ckCK7zAkc64DV2QSHs&B!~5yK -zEblycZ;#>q1H8-O-F#Z~>wH*v|4xV9H11>Lg2Bc{VZ6c!{p+D!zcj)wqjKuL>hMBm -z_uhop_r^PST=#AQoq4-j4K8S&XrH4B*!*y9Y8JLS+r -z=#%~rv}*{%gYltvtE$4j%+S|)$3o>}>%*mvP7cXUnTs5KEy867Uo!wi;U%vF` -zp1w_dkv;g%ChplE+%kKW^V)CwHgO;C;2(J5KRoE!I%by7vF1SEChjL5d}MaMGw|)~ -ze1|`|XY$NhNBsNyW>+}_duLY(axsw)`$8W~d*i{b4nINlW1Q17CwW@$;U|NM -zqk6k{_A@0T`=0gmbssg>B+lA@ZCsxiY(8-6hyH$AA1(5^bKnbFtXfE0k@rKWYD}ne -zYO|OwXoSz%68WZLbr$IU6IHxPCwtsu~ -z7H2&rcK@=Bvfawr%shQdtHR|*Ps@AGoBk9`o$WdrOzb}7-1}X9LhH%?e{JH1+DE-} -zgKL{)oC!4n>RhPvp=LtOgK|SPK(#}Kp?1>0@j~r}`Vy&$aTZI38WV>afL#Ptic}9+ -zGt_FNhQJ;I`!A@MpfV6hCSGZU=T8DO)a%8}X(=7YKhsds|i2lX^kBVc_{A0YK0 -z*jG^T4l6a=VX!!coq)|3&IcP;Vpk?@*s2^$3_V2{nZ}Gs#Mw1$HS^B~q^d -zYlpfXsq4W02doe51F!>NC%`h3Ep}G2#V!Ub18W2eg53xff_ez4FM@3a`v=$;U>psCKpjTvuoR1pgqoOQrRIapgQ`Pn0IUn@ -zHl#idwh`x*bK{eK3ECV!2QoZzI^B -zp>{)k3f~d1v>}!{18V#b%Qpk849WxLh3_h`9;ip5o`i1`*n40fgM9<$7;3Scp*RD; -zeg;+qwGgR3ur{dcka{=R15nQ(^^ah0Kjb+6>_MnUk@|bEx1iob>c?PTfEmLqHguT9#(|v=Rs`k-^MVDzZU(y->?yF9!QKJ; -z8`$SyKY%3+$Gu{>mHJb#^PuvPx)5w7*i~R5u!q1Nh59{G-v#?C)Tc;24wgQ`VrP!9 -z*fg*ru!Uf)VAq1(2lh1BYhZr`+YfdeY*?1X&d$R99IOni39J)rE!e|gFM@3a`vmOY -zP)CuPoo%txpeAQyAAl_cYX(~lb_>{AsE3id5$t8CcaZu|u&=<3kro?164zL;^T7(i -zN}v`awF9gZ>K3H_2JAVo*TA+weTdZ0pbjJTC{$_=uDej@cdbQklF|J4pO&4?M3PlsN+aY&$ZauP&1&)p_W0l=Hgrcdl>8wU>`w!40Q;; -zez4q87W?Tai_HVO3~DJ-SA*RO_5j##p`J(T8&K~-?SVRk9Q|OUPP5pg(=6r!TLiWW -ztQ+jNV9$fS1-26`XSAg*7;UAxz?MO+fNFyp_}9Qmm(VnPLmYe<;SCZWy%`3s0A2a9QSi>_78U-W|M5U<$?M6rWR!p=y^=tf9D- -zmN!s5M|vlPgPv5+r&vbOL-7j5e<p`OfqiZI2y6kk(}q&~xJ3NOX&Je^PRDMb?9 -zp(jyPQ3NR-p?H_#5XBI>J5HmhrU+2nL$Qfs7sYXkpU~Z@mSQ!<{SnPr&IDa&M=wP+-@lX??CPPhynhrG+Y7W#~s3NEms4}QZs2Zp`s3lMxP(i3J -zs5Ma6LEQ*-E7V%3JD~1?dH`x2)T2;OKs^oh9MlG=jZmAQUWMv~+5+`9)VomIpmspn -zBai=p+5@!@YCqKHP+viP3w0FgB$R=%KnIi)Djg~lDhn!C8}XECEYx_YiBOZFrb11J -znh7-rYA#d}R0&iWR3%gmR2|e3sAW;cTvtN1Ky^R`p}L^fKwSrQBh;->YoYFdx(Dh3 -zsC7_}LOlWXG}LoY8=y8qZGw6=%9!vLsJEfsh1v$S18OJKKcMzN?StA6^*NM1+Wall -zQK*wp{A0F1C?`}pR3=mwR4&vQsIgGvp(a92hMEdB9cm`j9H_ZaMNlPBWl;7Ac@0z@ -z)Doy=P|Z*)p<19ipn_0cP-~#BgSrvwR;aa5cR<|(^#Ig5s7IlmfO;D0IVgKnf68)S -zi`S5UKTtnqMO;H`*A>2CplwP+pjC49(>w0PB*gK@cTbxg8q=eEb{8)^{NdeWhURH# -z479g&ilVqrlwi=hJOMLR5>I18z^fB3IpAI40O3Dgaw;BgW9JIPNViFok8eUorcIXn -z#r9;`WTjVBIaeVqS1}o5lR)rFCSz41N*=G2+|sauHe;ezLw0wPA&?Ngg3P*ENQ?UMM6)k*w@_xfiu#x||D7RgP&pZ-9D~scj56$}8nj -zRgbbfV(L+rtwTA=9i5FWzNUb3l-nADzSZ8qc&*O&8R}8yT&o-W0sAO>f}$aaewUq# -z&w}Y1;hxA$jcnHTA^&kdBTge981me*3HKrrG;+ikxaYZNkf@Q7aRZOVIdST-;6J{b -zJ2k@h?G%mF6G_zw-;2{Ua#fsqy!h{?IQ4k(AKz1lX=FW-;Tm~?$Ow(_9WhHIJa3w< -z5x(Dz)W{(sIU4yPPHh|fHkkjbrghnPL$Y)-gOrxKP8kv(IpNVZUpMGjJvM515Guy;VKR0N^pCF&1 -zCAq@W(%#VQ@jaz^)+EShY}?b^=<)qi^W4nO*&4YkK|Zb90kjuI$Ghnn1WjSO|jQ3RWeA=0mri4Hl+ -zV3X-YCTZkn4mk>8lgo(IYhTDlsfqS8}V -zT2v=Si*OeBn(0CPF)dfSIhv$;JdHav&(-E=lX3)kDM=;2Hbz6IzGW#rUMv>bja%QV;)jEmv2P9KTdr9g*iXa(j{--&9&1?+uMSnIy+Ql~zZj -zUn8#*NlejNU6LFzwQAVW8K9o!bj|Zok{nURc2(B8OB5n=QO{h9Ot#kPl)VO>+G({FTCu4vi3l*q3KG4Kd6PL#Fbwu -z#)&Ntb;GHTU7V_xJe5kWQgc;SR}_koWo(zfy~!|EtDb6CjU0KlJbo{C`X3+QSs+HH -z6;B&o$5l^Zep#6qxwbq_4K4Jr!(YbQHJn2=9I26c$#Se)&E@f3oTijKzqY(mjD=gC -zD>_?g+kd5bs$FGbtlTDxUDa~r+{*O}FFg+)(>x0n8)9S~p0;0*x;S0+xT@sHJ3L-~ -zM!QDyEFe?2Rt}q9)jVY`w|k4~Y4HXE#;F0GDlxLJc&MC9GgMD;bxrj=)w9AM^c&ae -z9xCS+&BNvNW~h6fYYCTA{i7OdoF<%7DXTFz|P9y+83e|l+q*fese;t{3`hpKgMPL?wxHd#fa -zQ6s-hmNO?dxsAwLjoglj%oWzv#_Ot7Jr&e^#LSlE;SnM__Nu3jO##KzB}{jzo&^;(a%Rl(w6*g!^99Z0 -zDwZ>6@ObG4YkZ__MVeF2tXUpk+iI^rcyyS)4?Ts)hiUuJ(`4}1l}azgDQD)?_Ty

!QnQI~{i|7xzcr9^ml=zSKO6 -zoO0&SCQU^6^GTaO^-h|9B4 -zH^5URW>yss6?DDk;R=OSkEqZyx`)cysCl@Y?OE!czsV_QZf(Nv#_}hSHd*JCGrKl< -zn#fFzyx^2Gzcz^wY1GKuPB}Ad6Yf#okge3YbU~qe?934Dfi|8+4B+V0<*t -zQ@VSA$7h_>*1p>*XQpkkpIhcgm3-rrGuJjbMdZ?v%DReNg>q)wT354|>%4q`$K!6% -zJyhqr2YN~$9N_U8n^aGE#X`53Ik!Bm?W?Ih?^Qj8<&|zRvu=5sT06+YA2Gr+uax?A -zXXn_S%2D@5GWBq8(@4%BGA>2V?px(Fws*EQ2VT`Y -zlTzf&zfCS8@`aKsaCN}%U3FOV6r{*^2Gs3xiMI#rv%7SGOT0^9=c-JRZx$%MofP?= -zfzp>qk#8N?q=QIUBiE$Jw-S`IiOA+$rOsFRf=w%TYo0q(V{GRz{jT}vp -zZ(X3|f@)X(WxF&_e5!mS!zM$C@OOna8J#NM*s#e&A{S|7da8V*!zTGenl!@y+o2AP -zEGBZhMwX|_H$rUUC$d>1zf6^HjM!u?k$oEZ4UrL}Rl@JXpRJL1h~#PHpQ-Xa6q_6* -zQl*jaiTE`VPfs>$Od`jqhYljA6L~|+#qZPqMI$9dJ^BApsJoF?Bzvq^uNd@Ic+Y3cGEHA(my%4>f~^W>zS0o}MPuH$L>GG{Pn}pNlJ9IYTuMZY#VHgLMy#zgCc>p|xwJx1m|g-Pj)fq9Gkb%pXvf -zK2!6YAj4RVq-Gd+YfF+*83x|ok|Zy~z*}6B%*-(GHkTyD83x|!qN|@TD8@WyYJ{J_ -z=4gcPv2!)Tt)WOGeE%%b)>WNh;4LsomSz}u8%&aw83x`8lcY1lz}sPx@EE`njoe0L -znMvf)xi>@3LEGea83x`clVp=dT>M~V$p6)^EP3v7Z$og(RDMm#oHcuwa)_auMjpBH -zbOz`thUaR967Mc}IvV^9txa@45Aro7;0=noe^c_LGT*kv=ub1#mi8t&`7K(Hl;V8` -zNNzIJG2;E{_0VHez}Mbpc-Vu57GI;k!SC}1c*42W8*FH7QL@UC^2_TyuIg&K-_hOQ -zT5#2s)?gvu?RHh$i(~`7mtRx5(5@dnpO+Tdi}W1es#GgbQC*M4c@@>=`F8aex~ko!6$_N@u9?Rh -zpwza=RcEisRZv^3q$&HQmUc@~eoelX>Y1-ND)X!J%kBM8R8gK^YOlH2wZK)KUnZ94 -zmE{*J>k^BF73G!rg*7%PsIPHVR2JG`K}BJStMD?nVyUiJhX8B -zan(GE7A8@`;x%7ukamegD)%KT@{2r`)uq<# -zD8Ff9VeTxOn7hdqcB}q?mcy;)323=Wr79}$lwy{Z9{&ZccFnWO^m~`1M8;-$jIGib -zyH$Tc%i&h@pbmu<)UeG=P3>)gpp{1^$Sg9!%#mMIRBdKxXm0jfeu1T3VAJicsj%E) -zZqalLEZqXDZnx?WXgShL14?Uk+l@6~wN)_~h^_UmvNu*>=@uCE -zw9Gu_V|p1%D?`)C11{3ZBQ2(rp>#4d4=er9<-)VNp{3JnEz8TX*-hZe*VBnzCEAx9 -zs_--^nAang$_pyWOGHBoc+rLn^WCnR0$IYMd@Enz -zss<%rzSS@VR?ZRgio%WCx}=!ZE3#|dY}T_TzgUc@&<&}^!_x~_c$U+xin_y{Ep`IW -zDOd?SoqzfD!_y7Hm(-^7%RokV@LYZl%{sS-`f-%Km%9$ -z=v<7NWZlo@3JS|Bkxm_Zv#ryWvq;=fZbrsr)|DY -z$Vp(Y-|rcqTH3ENJcT8fmFHI%moAWfNs-EzlmUri+L+T?y{!#RO+0|i9l+9g^?ZQo -z`r@I-=|QNu%b@O&$C`8!mx1NJ=4R?V3%#P9I@hK{Obwe_3^|%w3@w^k3?Z7@JPWu^ -za&S*nSN3Pc)B>l_N__OlXjMWqJbj6dWLwbJ);YjLtBQ9o*;DbmBVcE9I+S0 -zgz^e+u)LwGkotIT@!TBRm&F7=FUpM-vnb|cCXctUG+L^w1_lOZAZ7$&CLo@|00AI=4Fh)I0K^-hG&>YCLgnJ)OHwOJ5NhM&LtG<5 -zuMlf5o0qB5(FW8%Zu$G87 -z|6nN*I{1pe`4MCDFNP9!u$tFQh6kc!4=Vwgd_cZ6khXxbZGp5P$QVY1zhP{K#N3LC -ec;|xB;L?JE{Gt+uctQetX^ELRn4+n9DGUJRIzk@+ - -diff --git a/amxmodx/JIT/helpers-x86.o b/amxmodx/JIT/helpers-x86.o -index 1727aba55a4d0134eb1f0e5ce91cfe50d45d4300..1d7e9590dfd2a57fb6712cff0ae3340c9fdf2561 -GIT binary patch -literal 592 -zc$}+u^>JflWMqH=Mh0dE1doBi0ZN;INeu>81||k_03#H$LHPoV2(!U_D9sMU%t+z^ -zKy`{}=74}85F@*!0Vq)bq*;KN6-tB5lteS{15jNo7V}^rwDW234iJNXQS%SR8tom7 -zV76)l&|wE(us8o;EfH`2!BQf0@D+daBgW=m3?=MfHLsZr4@AcvX3#51ttes8E6yk` -zDJn@!0Wq2~Sj -z&%lt*n30-OkXlr%TVY|Qmsp&O<`$4vW=01FbfA}*RGgnv3RdnPe?#7Eip3( -KQ#3U%g#iFvQ&CL- - -diff --git a/amxmodx/JIT/natives-darwin-x86.o b/amxmodx/JIT/natives-darwin-x86.o -new file mode 100644 -index 0000000000000000000000000000000000000000..9ad779d29ebf8ac2a2b709718302802ccbd40bbd -GIT binary patch -literal 708 -zc$_=;>+L^w1_lOZAZ7$&CLq4S00AKW0S4?K8Hm3?X?7@Pg386mm!wvdAk@akhqy+B -zpz4o@>IZ=cMu`0kEXaCN5=#=1`7Vwjj;Q)U%7YnkI1uU{2_P;2s^NhO905|Holm=6 -zITnMA*a6ZWdl)DZ9@bsUvCkUF-6;hm{(N2n2~GmWRHtSDBMvIW+L>zl;?jb -zN5FqkkRi=Scpx%TU^QU7eIVAcNJGMr1sXmqwLqE=C;+l(B9v_hq?bY2p&&gABsGbH9#RK&Yf<|TUOWtK3+qjKRq -z-^A=xBuOwA&T}ixOGc6ebKyMa{FKz<%qnEvScE`&f=d#MkX_)LUzX~hmR6ivf~L?l -TFNML~$KT1(C*IvL#FYU6FY|?U - -diff --git a/amxmodx/JIT/natives-x86.o b/amxmodx/JIT/natives-x86.o -index 45cc2aeda2e8fc664a4559c3ae387899da7bbb62..b8f58393cb700a956067ffb864952febbaa976fe -GIT binary patch -literal 1040 -zc$}+u^>JflWMqH=Mh0dE1doBi0ZN;INeu>epgcK%5sKNM`~)B;9!XvRO0z@N!E8AI -zVS-4q0x1rtc_6#x(aaM7a;{)8PaTLkk;Fd$ -z)k#3jVT95gNb;ebPrF??7K4~OK=QGNfg<5y-L)M1tbyE}Qb6L*=OsXX^Kq7LSDsGx -zxOjxZ9Tj0FLjOy7{+DtD{1*io(tLymA|nM>!+-(wN>VFI81zySOA;CMiZhB!ib@ib -zfUL?~2o2>IrRG3X5&+0)fra7Ye`Gn-lmg;2F=PN~Yb4z@K++D0KM@orNcTF#J54?dn4Ho;zy$K7bDpZ;%`OcGvpsDBp=_MBDG9>0! -zRK&Yf<|TUOWtK3+qjKRq-^A=xBuOwA&T}ixOGc8!!VNA-EJ8NiH@_^^KP{~|wFFI} -wYhDV%T<83h)Z)x4WQ*ZK?mqrbjz013jv=lnAq>u6z%(ljqJeqA2g-*509r1PT>t<8 - -diff --git a/amxmodx/JIT/natives-x86.obj b/amxmodx/JIT/natives-x86.obj -index 67b0b0bb6c8ab4c27eb8f96b6aafcce70e33c677..60855c6ab7206c8235be58de78974fbd33623d17 -GIT binary patch -literal 788 -zc%1WLWMbI*TOjZ$0|SEy0|e-mq*jzLAV542rvUL`D4!XK6&L~%^imQ_5|Pxg0P#a0 -zeu^aKz+iA7wDW1VE5~9GcLyVoh&>Dx2@mV8<=AHph#kpvn2HDNb7!UO-0w8;s39N>N0UhWiCKc!Bl!A@={~u-o -zOdTUsCj)~JhKM3m6d|IIAz}x_)+i!A7$VU~A`sj2p*j&FEkGQKA~Fq01Y*t#43XW) -zerIq&1 | cut -b1) -+LINK = -Lzlib - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ OBJECTS += JIT/amxexecn-darwin.o JIT/amxjitsn-darwin.o JIT/natives-darwin-x86.o \ -+ JIT/helpers-darwin-x86.o -+ -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _mm -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -Wl,-read_only_relocs,suppress -lz-darwin -+else -+ OBJECTS += JIT/amxexecn.o JIT/amxjitsn.o JIT/natives-x86.o JIT/helpers-x86.o -+ -+ LIB_EXT = so -+ LIB_SUFFIX = _mm_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared -lz - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DAMX_NOPROPLIST -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing \ -+ -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - - ifeq "$(BINLOG)" "true" -- NAME := $(NAME)_bl -+ LIB_SUFFIX := _bl$(LIB_SUFFIX) - BIN_DIR := $(BIN_DIR)BinLog - OBJECTS += binlog.cpp - CFLAGS += -DBINLOG_ENABLED - endif - --CFLAGS += -DLINUX -DAMX_NOPROPLIST -Wall -Werror -DHAVE_STDINT_H -static-libgcc -fno-rtti -fno-exceptions -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -DAMD64 -m64 -- LINK += -lz64 -- OBJECTS += JIT/natives-amd64.o -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- OBJECTS += JIT/amxexecn.o JIT/amxjitsn.o JIT/natives-x86.o -- OBJECTS += JIT/helpers-x86.o -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- LINK += -lz -- OPT_FLAGS += -march=i586 -- CFLAGS += -m32 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) -- $(MAKE) amxmodx -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- rm -f zlib/libz.a -- $(MAKE) all AMD64=true -+binlog: -+ $(MAKE) -f $(MAKEFILE_NAME) all BINLOG=true - --amd64_debug: -- rm -f zlib/libz.a -- $(MAKE) all AMD64=true DEBUG=true -+binlog_debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all BINLOG=true DEBUG=true - --amd64_binlog: -- rm -f zlib/libz.a -- $(MAKE) all AMD64=true BINLOG=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --amd64_binlog_debug: -- rm -f zlib/libz.a -- $(MAKE) all AMD64=true BINLOG=true DEBUG=true -- --binlog: -- $(MAKE) all BINLOG=true -- --binlog_debug: -- $(MAKE) all BINLOG=true DEBUG=true -- --amxmodx: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf ReleaseBinLog/*.o -- rm -rf ReleaseBinLog/$(NAME)_bl_$(BIN_SUFFIX_32) -- rm -rf ReleaseBinLog/$(NAME)_bl_$(BIN_SUFFIX_64) -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf DebugBinLog/*.o -- rm -rf DebugBinLog/$(NAME)_bl_$(BIN_SUFFIX_32) -- rm -rf DebugBinLog/$(NAME)_bl_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/amxmodx/amx.cpp b/amxmodx/amx.cpp ---- a/amxmodx/amx.cpp -+++ b/amxmodx/amx.cpp -@@ -43,17 +43,17 @@ - #include - #include - #include /* for wchar_t */ - #include - #include - #include - #include - #include "osdefs.h" --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #include - #include - #if !defined AMX_NODYNALOAD - #include - #endif - #if defined JIT - #include -@@ -431,17 +431,17 @@ int AMXAPI amx_Callback(AMX *amx, cell i - { - AMX_HEADER *hdr; - AMX_FUNCSTUB *func; - AMX_NATIVE f; - - hdr=(AMX_HEADER *)amx->base; - assert(hdr->natives<=hdr->libraries); - #if defined AMX_NATIVETABLE -- if (index=0 && index<(cell)NUMENTRIES(hdr,natives,libraries)); - func=GETENTRY(hdr,natives,index); - f=(AMX_NATIVE)func->address; - #if defined AMX_NATIVETABLE -@@ -927,17 +927,17 @@ int AMXAPI amx_Init(AMX *amx, void *prog - p = PAGE_EXECUTE_READWRITE; - else - p |= PAGE_EXECUTE_READ; - return !VirtualProtect(addr, len, p, &prev); - } - - #define ALIGN(addr) (addr) - -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - - /* Linux already has mprotect() */ - /* But wants the address aligned! */ - #define ALIGN(addr) (char *)(((long)addr + sysconf(_SC_PAGESIZE)-1) & ~(sysconf(_SC_PAGESIZE)-1)) - - #else - - // TODO: Add cases for Linux, Unix, OS/2, ... -@@ -1009,50 +1009,50 @@ int AMXAPI amx_InitJIT(AMX *amx,void *co - - #endif /* #if defined JIT */ - - #endif /* AMX_INIT */ - - #if defined AMX_CLEANUP - int AMXAPI amx_Cleanup(AMX *amx) - { -- #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__) && !defined AMX_NODYNALOAD -+ #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__) && !defined AMX_NODYNALOAD - #if defined _Windows - typedef int (FAR WINAPI *AMX_ENTRY)(AMX FAR *amx); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - typedef int (*AMX_ENTRY)(AMX *amx); - #endif - AMX_HEADER *hdr; - int numlibraries,i; - AMX_FUNCSTUB *lib; - AMX_ENTRY libcleanup; - #endif - - /* unload all extension modules */ -- #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__) && !defined AMX_NODYNALOAD -+ #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__) && !defined AMX_NODYNALOAD - hdr=(AMX_HEADER *)amx->base; - assert(hdr->magic==AMX_MAGIC); - numlibraries=NUMENTRIES(hdr,libraries,pubvars); - for (i=0; iaddress!=0) { - char funcname[sNAMEMAX+12]; /* +1 for '\0', +4 for 'amx_', +7 for 'Cleanup' */ - strcpy(funcname,"amx_"); - strcat(funcname,GETENTRYNAME(hdr,lib)); - strcat(funcname,"Cleanup"); - #if defined _Windows - libcleanup=(AMX_ENTRY)GetProcAddress((HINSTANCE)lib->address,funcname); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - libcleanup=(AMX_ENTRY)dlsym((void*)lib->address,funcname); - #endif - if (libcleanup!=NULL) - libcleanup(amx); - #if defined _Windows - FreeLibrary((HINSTANCE)lib->address); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - dlclose((void*)lib->address); - #endif - } /* if */ - } /* for */ - #else - (void)amx; - #endif - return AMX_ERR_NONE; -@@ -3690,17 +3690,17 @@ int AMXAPI amx_GetAddr(AMX *amx,cell amx - - assert(amx!=NULL); - hdr=(AMX_HEADER *)amx->base; - assert(hdr!=NULL); - assert(hdr->magic==AMX_MAGIC); - data=(amx->data!=NULL) ? amx->data : amx->base+(int)hdr->dat; - - assert(phys_addr!=NULL); -- if (amx_addr>=amx->hea && amx_addrstk || amx_addr<0 || amx_addr>=amx->stp) { -+ if ((amx_addr>=amx->hea && amx_addrstk) || amx_addr<0 || amx_addr>=amx->stp) { - *phys_addr=NULL; - return AMX_ERR_MEMACCESS; - } /* if */ - - *phys_addr=(cell *)(data + (int)amx_addr); - return AMX_ERR_NONE; - } - #endif /* AMX_GETADDR */ -@@ -4089,17 +4089,17 @@ int AMXAPI amx_UTF8Len(const cell *cstr, - int AMXAPI amx_GetLibraries(AMX *amx) - { - AMX_HEADER *hdr = (AMX_HEADER *)amx->base; - int numLibraries = NUMENTRIES(hdr, libraries, pubvars); - - return numLibraries; - } - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define _snprintf snprintf - #endif - - const char *AMXAPI amx_GetLibrary(AMX *amx, int index, char *buffer, int len) - { - AMX_HEADER *hdr = (AMX_HEADER *)amx->base; - AMX_FUNCSTUB *lib; - -diff --git a/amxmodx/amx.h b/amxmodx/amx.h ---- a/amxmodx/amx.h -+++ b/amxmodx/amx.h -@@ -19,27 +19,27 @@ - * 3. This notice may not be removed or altered from any source distribution. - * - * Version: $Id: amx.h 3006 2006-08-28 11:08:18Z dvander $ - */ - - #if defined FREEBSD && !defined __FreeBSD__ - #define __FreeBSD__ - #endif --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #endif - - #ifndef AMX_H_INCLUDED - #define AMX_H_INCLUDED - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -185,17 +185,17 @@ typedef int (AMXAPI *AMX_NATIVE_FILTER)( - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -437,17 +437,17 @@ int AMXAPI amx_GetStringOld(char *dest,c - #else - #error Unsupported cell size - #endif - - #define amx_RegisterFunc(amx, name, func) \ - amx_Register((amx), amx_NativeInfo((name),(func)), 1); - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack() /* reset default packing */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=reset - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - -diff --git a/amxmodx/amxcore.cpp b/amxmodx/amxcore.cpp ---- a/amxmodx/amxcore.cpp -+++ b/amxmodx/amxcore.cpp -@@ -175,17 +175,17 @@ static cell AMX_NATIVE_CALL setarg(AMX * - - hdr=(AMX_HEADER *)amx->base; - data=amx->data ? amx->data : amx->base+(int)hdr->dat; - /* get the base value */ - value= * (cell *)(data+(int)amx->frm+((int)params[1]+3)*sizeof(cell)); - /* adjust the address in "value" in case of an array access */ - value+=params[2]*sizeof(cell); - /* verify the address */ -- if (value<0 || value>=amx->hea && valuestk) -+ if (value<0 || (value>=amx->hea && valuestk)) - return 0; - /* set the value indirectly */ - * (cell *)(data+(int)value) = params[3]; - return 1; - } - - static cell AMX_NATIVE_CALL heapspace(AMX *amx,cell *params) - { -diff --git a/amxmodx/amxdbg.cpp b/amxmodx/amxdbg.cpp ---- a/amxmodx/amxdbg.cpp -+++ b/amxmodx/amxdbg.cpp -@@ -457,18 +457,18 @@ int AMXAPI dbg_GetVariable(AMX_DBG *amxd - while (index < amxdbg->hdr->symbols - && (amxdbg->symboltbl[index]->ident == iFUNCTN || strcmp(amxdbg->symboltbl[index]->name, symname) != 0) - && (amxdbg->symboltbl[index]->codestart > scopeaddr || amxdbg->symboltbl[index]->codeend < scopeaddr)) - index++; - if (index >= amxdbg->hdr->symbols) - break; - /* check the range, keep a pointer to the symbol with the smallest range */ - if (strcmp(amxdbg->symboltbl[index]->name, symname) == 0 -- && (codestart == 0 && codeend == 0 -- || amxdbg->symboltbl[index]->codestart >= codestart && amxdbg->symboltbl[index]->codeend <= codeend)) -+ && ((codestart == 0 && codeend == 0) -+ || (amxdbg->symboltbl[index]->codestart >= codestart && amxdbg->symboltbl[index]->codeend <= codeend))) - { - *sym = amxdbg->symboltbl[index]; - codestart = amxdbg->symboltbl[index]->codestart; - codeend = amxdbg->symboltbl[index]->codeend; - } /* if */ - index++; - } /* for */ - -diff --git a/amxmodx/amxdbg.h b/amxmodx/amxdbg.h ---- a/amxmodx/amxdbg.h -+++ b/amxmodx/amxdbg.h -@@ -44,17 +44,17 @@ extern "C" { - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -151,17 +151,17 @@ int AMXAPI dbg_GetLineAddress(AMX_DBG *a - int AMXAPI dbg_GetAutomatonName(AMX_DBG *amxdbg, int automaton, const char **name); - int AMXAPI dbg_GetStateName(AMX_DBG *amxdbg, int state, const char **name); - int AMXAPI dbg_GetTagName(AMX_DBG *amxdbg, int tag, const char **name); - int AMXAPI dbg_GetVariable(AMX_DBG *amxdbg, const char *symname, ucell scopeaddr, const AMX_DBG_SYMBOL **sym); - int AMXAPI dbg_GetArrayDim(AMX_DBG *amxdbg, const AMX_DBG_SYMBOL *sym, const AMX_DBG_SYMDIM **symdim); - - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack() /* reset default packing */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=reset - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - -diff --git a/amxmodx/amxjitsn.asm b/amxmodx/amxjitsn.asm ---- a/amxmodx/amxjitsn.asm -+++ b/amxmodx/amxjitsn.asm -@@ -298,24 +298,16 @@ - %endmacro - - %macro _DROPARGS 1 ; (TR) remove function arguments from the stack - %ifndef STDECL ; (for __cdecl calling convention only) - add esp,%1 - %endif - %endmacro - -- --%ifdef WIN32 --section .data exec --%else --section .text --%endif -- -- - global asm_runJIT, _asm_runJIT - global amx_exec_jit, _amx_exec_jit - global getMaxCodeSize, _getMaxCodeSize - - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; ; - ; void asm_runJIT( AMX_HEADER *amxh, JumpAddressArray *jumps, void *dest ) ; -@@ -431,25 +423,16 @@ reloc_code_done: - reloc_done: - mov eax,0 - pop esi - pop edi - pop ebx - pop ebp - ret - --; GWMV: --; The code below modifies itself to store the arguments to the Pawn opcodes --; in the compiled code. This is fine, but the .text section in an ELF executable --; is usually marked read-only, that's why this code is in the .data section. -- --%ifndef WIN32 --section .data exec --%endif -- - OP_LOAD_PRI: - ;nop; - putval j_load_pri+2 - GO_ON j_load_pri, OP_LOAD_ALT, 8 - - j_load_pri: - mov eax,[edi+12345678h] - CHECKCODESIZE j_load_pri -@@ -1047,17 +1030,17 @@ OP_RETN: - OP_CALL: - ;nop; - RELOC j_call_e8-j_call+1 - GO_ON j_call, OP_CALL_I, 8 - - j_call: - ;call 12345678h ; tasm chokes on this out of a sudden - _PUSH 0 -- j_call_e8 -+ j_call_e8: - db 0e8h, 0, 0, 0, 0 - CHECKCODESIZE j_call - - OP_CALL_I: - ;nop; - GO_ON j_call_i, OP_JUMP - - j_call_i: -@@ -2586,9 +2569,9 @@ amx_opcodelist_jit: - DD OP_FLOAT_MUL ; DA - DD OP_FLOAT_DIV ; DA - DD OP_FLOAT_ADD ; DA - DD OP_FLOAT_SUB ; DA - DD OP_FLOAT_TO ; DA - DD OP_FLOAT_ROUND ; DA - DD OP_FLOAT_CMP ; DA - --END -+END: -diff --git a/amxmodx/amxmodx.cpp b/amxmodx/amxmodx.cpp ---- a/amxmodx/amxmodx.cpp -+++ b/amxmodx/amxmodx.cpp -@@ -141,17 +141,17 @@ static cell AMX_NATIVE_CALL server_print - message[len] = 0; - SERVER_PRINT(message); - - return len; - } - - static cell AMX_NATIVE_CALL engclient_print(AMX *amx, cell *params) /* 3 param */ - { -- int len; -+ int len = 0; - char *msg; - - if (params[1] == 0) - { - for (int i = 1; i <= gpGlobals->maxClients; ++i) - { - CPlayer* pPlayer = GET_PLAYER_POINTER_I(i); - -@@ -492,16 +492,25 @@ static cell AMX_NATIVE_CALL is_amd64_ser - { - #if PAWN_CELL_SIZE==64 - return 1; - #else - return 0; - #endif - } - -+static cell AMX_NATIVE_CALL is_mac_server(AMX *amx, cell *params) -+{ -+#ifdef __APPLE__ -+ return 1; -+#else -+ return 0; -+#endif -+} -+ - static cell AMX_NATIVE_CALL is_jit_enabled(AMX *amx, cell *params) // PM: Useless ;P - { - #ifdef JIT - return 1; - #else - return 0; - #endif - } -@@ -1000,17 +1009,17 @@ static cell AMX_NATIVE_CALL get_user_tea - { - // SidLuke, DoD fix - if (g_bmod_dod) - { - int iTeam = pPlayer->pEdict->v.team; - - if (params[3]) - { -- char *szTeam = ""; -+ const char *szTeam = ""; - - switch (iTeam) - { - case 1: - szTeam = "Allies"; - break; - case 2: - szTeam = "Axis"; -@@ -3838,17 +3847,17 @@ cell AMX_NATIVE_CALL require_module(AMX - } - - static cell AMX_NATIVE_CALL amx_mkdir(AMX *amx, cell *params) - { - int len = 0; - char *path = get_amxstring(amx, params[1], 0, len); - char *realpath = build_pathname("%s", path); - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - return mkdir(realpath, 0700); - #else - return mkdir(realpath); - #endif - } - - static cell AMX_NATIVE_CALL find_plugin_byfile(AMX *amx, cell *params) - { -@@ -4701,16 +4710,17 @@ AMX_NATIVE_INFO amxmodx_Natives[] = - {"get_xvar_float", get_xvar_num}, - {"get_xvar_id", get_xvar_id}, - {"get_xvar_num", get_xvar_num}, - {"int3", int3}, - {"is_amd64_server", is_amd64_server}, - {"is_dedicated_server", is_dedicated_server}, - {"is_jit_enabled", is_jit_enabled}, - {"is_linux_server", is_linux_server}, -+ {"is_mac_server", is_mac_server}, - {"is_map_valid", is_map_valid}, - {"is_module_loaded", is_module_loaded}, - {"is_plugin_loaded", is_plugin_loaded}, - {"is_user_alive", is_user_alive}, - {"is_user_authorized", is_user_authorized}, - {"is_user_bot", is_user_bot}, - {"is_user_connected", is_user_connected}, - {"is_user_connecting", is_user_connecting}, -diff --git a/amxmodx/amxmodx.h b/amxmodx/amxmodx.h ---- a/amxmodx/amxmodx.h -+++ b/amxmodx/amxmodx.h -@@ -27,17 +27,17 @@ - * to your version of the file, but you are not obligated to do so. If - * you do not wish to do so, delete this exception statement from your - * version. - */ - - #ifndef AMXMODX_H - #define AMXMODX_H - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #include - #include - #include "sclinux.h" - #endif - #include //tolower, etc - #include "string.h" - #include - #include -@@ -81,17 +81,17 @@ extern AMX_NATIVE_INFO file_Natives[]; - extern AMX_NATIVE_INFO float_Natives[]; - extern AMX_NATIVE_INFO string_Natives[]; - extern AMX_NATIVE_INFO vault_Natives[]; - extern AMX_NATIVE_INFO msg_Natives[]; - extern AMX_NATIVE_INFO vector_Natives[]; - extern AMX_NATIVE_INFO g_SortNatives[]; - extern AMX_NATIVE_INFO g_DataStructNatives[]; - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLOAD(path) (DLHANDLE)LoadLibrary(path) - #define DLPROC(m, func) GetProcAddress(m, func) - #define DLFREE(m) FreeLibrary(m) - #else - #define DLLOAD(path) (DLHANDLE)dlopen(path, RTLD_NOW) - #define DLPROC(m, func) dlsym(m, func) - #define DLFREE(m) dlclose(m) - #endif -@@ -102,24 +102,24 @@ extern AMX_NATIVE_INFO g_DataStructNativ - #else - #if defined AMD64 - typedef __int64 _INT_PTR; - #else - typedef __int32 _INT_PTR; - #endif - #endif - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - typedef HINSTANCE DLHANDLE; - #else - typedef void* DLHANDLE; - #define INFINITE 0xFFFFFFFF - #endif - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define PATH_SEP_CHAR '\\' - #define ALT_SEP_CHAR '/' - #else - #define PATH_SEP_CHAR '/' - #define ALT_SEP_CHAR '\\' - #endif - - #ifndef GETPLAYERAUTHID -@@ -134,17 +134,17 @@ extern AMX_NATIVE_INFO g_DataStructNativ - #define SETCLIENTMAXSPEED (*g_engfuncs.pfnSetClientMaxspeed) - - char* UTIL_SplitHudMessage(register const char *src); - int UTIL_ReadFlags(const char* c); - - void UTIL_ClientPrint(edict_t *pEntity, int msg_dest, char *msg); - void UTIL_FakeClientCommand(edict_t *pEdict, const char *cmd, const char *arg1 = NULL, const char *arg2 = NULL); - void UTIL_GetFlags(char* flags, int flag); --void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, char *pMessage); -+void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, const char *pMessage); - void UTIL_IntToString(int value, char *output); - void UTIL_ShowMOTD(edict_t *client, char *motd, int mlen, const char *name); - void UTIL_ShowMenu(edict_t* pEntity, int slots, int time, char *menu, int mlen); - - char *UTIL_VarArgs(const char *fmt, ...); - - - #define GET_PLAYER_POINTER(e) (&g_players[ENTINDEX(e)]) -@@ -271,34 +271,34 @@ enum CountModulesMode - }; - - int countModules(CountModulesMode mode); - void modules_callPluginsLoaded(); - void modules_callPluginsUnloaded(); - void modules_callPluginsUnloading(); - - cell* get_amxaddr(AMX *amx, cell amx_addr); --char* build_pathname(char *fmt, ...); --char* build_pathname_r(char *buffer, size_t maxlen, char *fmt, ...); -+char* build_pathname(const char *fmt, ...); -+char* build_pathname_r(char *buffer, size_t maxlen, const char *fmt, ...); - char* format_amxstring(AMX *amx, cell *params, int parm, int& len); - AMX* get_amxscript(int, void**, const char**); - const char* get_amxscriptname(AMX* amx); - char* get_amxstring(AMX *amx, cell amx_addr, int id, int& len); - extern "C" size_t get_amxstring_r(AMX *amx, cell amx_addr, char *destination, int maxlen); - - int amxstring_len(cell* cstr); - int load_amxscript(AMX* amx, void** program, const char* path, char error[64], int debug); - int set_amxnatives(AMX* amx, char error[64]); - int set_amxstring(AMX *amx, cell amx_addr, const char *source, int max); - int unload_amxscript(AMX* amx, void** program); - - void copy_amxmemory(cell* dest, cell* src, int len); - void get_modname(char*); --void print_srvconsole(char *fmt, ...); --void report_error(int code, char* fmt, ...); -+void print_srvconsole(const char *fmt, ...); -+void report_error(int code, const char* fmt, ...); - void* alloc_amxmemory(void**, int size); - void free_amxmemory(void **ptr); - // get_localinfo - const char* get_localinfo(const char* name, const char* def); - cell AMX_NATIVE_CALL require_module(AMX *amx, cell *params); - extern "C" void LogError(AMX *amx, int err, const char *fmt, ...); - - enum ModuleCallReason -diff --git a/amxmodx/amxxfile.cpp b/amxmodx/amxxfile.cpp ---- a/amxmodx/amxxfile.cpp -+++ b/amxmodx/amxxfile.cpp -@@ -37,17 +37,17 @@ - **********************/ - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #else - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ - #endif - #endif - -@@ -122,27 +122,27 @@ CAmxxReader::CAmxxReader(const char *fil - DATAREAD(&m_Bh.numPlugins, sizeof(mint8_t), 1); - m_Bh.plugins = new PluginEntry[m_Bh.numPlugins]; - PluginEntry *pe; - m_SectionHdrOffset = 0; - m_Entry = -1; - - for (mint8_t i = 0; i < m_Bh.numPlugins; i++) - { -- pe = &(m_Bh.plugins[i]); -+ pe = &(m_Bh.plugins[(unsigned)i]); - DATAREAD(&pe->cellsize, sizeof(mint8_t), 1); - DATAREAD(&pe->disksize, sizeof(int32_t), 1); - DATAREAD(&pe->imagesize, sizeof(int32_t), 1); - DATAREAD(&pe->memsize, sizeof(int32_t), 1); - DATAREAD(&pe->offs, sizeof(int32_t), 1); - } - - for (mint8_t i = 0; i < m_Bh.numPlugins; i++) - { -- pe = &(m_Bh.plugins[i]); -+ pe = &(m_Bh.plugins[(unsigned)i]); - - if (pe->cellsize == m_CellSize) - { - m_Entry = i; - break; - } - } - -diff --git a/amxmodx/amxxlog.cpp b/amxmodx/amxxlog.cpp ---- a/amxmodx/amxxlog.cpp -+++ b/amxmodx/amxxlog.cpp -@@ -30,22 +30,22 @@ - - // amxx_logging localinfo: - // 0 = no logging - // 1 = one logfile / day - // 2 = one logfile / map - // 3 = HL Logs - - #include --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #include - #endif - #include "amxmodx.h" - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define vsnprintf _vsnprintf - #endif - - #include "svn_version.h" - - CLog::CLog() - { - m_LogType = 0; -@@ -132,17 +132,17 @@ void CLog::UseFile(const String &fileNam - static char file[256]; - m_LogFile.assign(build_pathname_r(file, sizeof(file)-1, "%s/%s", g_log_dir.c_str(), fileName.c_str())); - } - - void CLog::MapChange() - { - // create dir if not existing - char file[256]; --#ifdef __linux -+#if defined(__linux__) || defined(__APPLE__) - mkdir(build_pathname_r(file, sizeof(file)-1, "%s", g_log_dir.c_str()), 0700); - #else - mkdir(build_pathname_r(file, sizeof(file)-1, "%s", g_log_dir.c_str())); - #endif - - m_LogType = atoi(get_localinfo("amxx_logging", "1")); - - if (m_LogType < 0 || m_LogType > 3) -diff --git a/amxmodx/binlog.cpp b/amxmodx/binlog.cpp ---- a/amxmodx/binlog.cpp -+++ b/amxmodx/binlog.cpp -@@ -41,17 +41,17 @@ bool BinLog::Open() - { - const char *data = get_localinfo("amxmodx_datadir", "addons/amxmodx/data"); - char path[255]; - build_pathname_r(path, sizeof(path)-1, "%s/binlogs", data); - - if (!DirExists(path)) - { - mkdir(path --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - , 0755 - #endif - ); - if (!DirExists(path)) - return false; - } - - char file[255]; -diff --git a/amxmodx/datastructs.h b/amxmodx/datastructs.h ---- a/amxmodx/datastructs.h -+++ b/amxmodx/datastructs.h -@@ -210,18 +210,17 @@ public: - return NULL; - } - return data + (which * cellcount); - }; - // Shifts all items from this item, and including this item up 1. - int ShiftUpFrom(size_t which) - { - // No point shifting this. -- if (this->count < 0 || -- which > this->count) -+ if (which > this->count) - { - - return 0; - } - // First make a new item. - this->Push(); - - // If we got an InsertAfter(lastitem), then which will equal this->count - 1 -@@ -249,18 +248,17 @@ public: - return 1; - - }; - // Shifts all items from this item, and including this item down 1. - // This deletes the item specified. - int Delete(size_t which) - { - // No point shifting this. -- if (this->count < 0 || -- which >= this->count) -+ if (which >= this->count) - { - return 0; - } - - - for (size_t i=which; icount - 1; i++) - { - memcpy(GetCellPointer(i), GetCellPointer(i + 1), sizeof(cell) * cellcount); -diff --git a/amxmodx/debugger.cpp b/amxmodx/debugger.cpp ---- a/amxmodx/debugger.cpp -+++ b/amxmodx/debugger.cpp -@@ -609,19 +609,19 @@ void Debugger::FmtGenericMsg(AMX *amx, i - { - const char *filename = ""; - char native[sNAMEMAX+1]; - - CList::iterator a = g_loadedscripts.find(amx); - if (a) - filename = (*a).getName(); - size_t len = strlen(filename); -- for (size_t i=len-1; i>=0; i--) -+ for (size_t i=len-1; i - #include - #include - #include - #endif - - // header file for unlink() --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #include - #else - #define WINDOWS_LEAN_AND_MEAN - #include - #include - #endif - - #include "amxmodx.h" -@@ -779,17 +779,17 @@ static cell AMX_NATIVE_CALL amx_ungetc(A - FILE *fp = (FILE *)params[1]; - - if (!fp) - return 0; - - return ungetc(static_cast(params[2]), fp); - } - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define _rmdir rmdir - #endif - - static cell AMX_NATIVE_CALL amx_rmdir(AMX *amx, cell *params) - { - int len; - char* sFile = build_pathname("%s", get_amxstring(amx, params[1], 0, len)); - -@@ -812,17 +812,17 @@ static cell AMX_NATIVE_CALL amx_rename(A - { - build_pathname_r(f_old_r, sizeof(f_old_r)-1, "%s", fold); - build_pathname_r(f_new_r, sizeof(f_new_r)-1, "%s", fnew); - } else { - snprintf(f_old_r, sizeof(f_old_r)-1, "%s", fold); - snprintf(f_new_r, sizeof(f_new_r)-1, "%s", fnew); - } - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - return (rename(f_old_r, f_new_r) == 0); - #elif defined WIN32 - return MoveFileA(f_old_r, f_new_r); - #endif - } - - static cell LoadFileForMe(AMX *amx, cell *params) - { -diff --git a/amxmodx/format.cpp b/amxmodx/format.cpp ---- a/amxmodx/format.cpp -+++ b/amxmodx/format.cpp -@@ -24,16 +24,21 @@ - #define is_digit(c) ((unsigned)to_digit(c) <= 9) - #define to_char(n) ((n) + '0') - #define CHECK_ARGS(n) \ - if ((arg+n) > args) { \ - LogError(amx, AMX_ERR_PARAMS, "String formatted incorrectly - parameter %d (total %d)", arg, args); \ - return 0; \ - } - -+template size_t atcprintf(cell *, size_t, const cell *, AMX *, cell *, int *); -+template size_t atcprintf(char *, size_t, const cell *, AMX *, cell *, int *); -+template size_t atcprintf(cell *, size_t, const char *, AMX *, cell *, int *); -+template size_t atcprintf(char *, size_t, const char *, AMX *, cell *, int *); -+ - THash BadLang_Table; - - static cvar_t *amx_mldebug = NULL; - static cvar_t *amx_cl_langs = NULL; - - const char *translate(AMX *amx, cell amxaddr, const char *key) - { - const char *pLangName = NULL; -diff --git a/amxmodx/format.h b/amxmodx/format.h ---- a/amxmodx/format.h -+++ b/amxmodx/format.h -@@ -1,11 +1,14 @@ - #ifndef _INCLUDE_FORMATTING_H - #define _INCLUDE_FORMATTING_H - - //Amx Templatized Cell Printf - template - size_t atcprintf(D *buffer, size_t maxlen, const S *format, AMX *amx, cell *params, int *param); - -+//extern template -+//size_t atcprintf(cell *buffer, size_t maxlen, const cell *format, AMX *amx, cell *params, int *param); -+ - const char *translate(AMX *amx, cell amxaddr, const char *key); - bool translate_bcompat(AMX *amx, cell *source, const char **_key, const char **_def); - - #endif //_INCLUDE_FORMATTING_H -diff --git a/amxmodx/helpers-x86.asm b/amxmodx/helpers-x86.asm ---- a/amxmodx/helpers-x86.asm -+++ b/amxmodx/helpers-x86.asm -@@ -38,14 +38,14 @@ amxx_CpuSupport: - je .fail - - mov eax, 1 - jmp .end - - .fail: - xor eax, eax - --.end -+.end: - - pop ebx - - pop ebp - ret -diff --git a/amxmodx/md5.cpp b/amxmodx/md5.cpp ---- a/amxmodx/md5.cpp -+++ b/amxmodx/md5.cpp -@@ -180,17 +180,17 @@ unsigned char *MD5::raw_digest(){ - } - - memcpy(s, digest, 16); - return s; - } - - - --char *MD5::hex_digest(){ -+const char *MD5::hex_digest(){ - - int i; - char *s= new char[33]; - - if (!finalized){ - /* cerr << "MD5::hex_digest: Can't get digest if you haven't "<< - "finalized the digest!" <::iterator a = g_forcemodels.begin(); a; ++a) - { - PRECACHE_MODEL((char*)(*a).getFilename()); - ENGINE_FORCE_UNMODIFIED((*a).getForceType(), (*a).getMin(), (*a).getMax(), (*a).getFilename()); - } - } - - RETURN_META_VALUE(MRES_IGNORED, 0); - } - --int C_PrecacheSound(char *s) -+int C_PrecacheSound(const char *s) - { - if (!g_forcedsounds) - { - g_forcedsounds = true; - for (CList::iterator a = g_forcesounds.begin(); a; ++a) - { - PRECACHE_SOUND((char*)(*a).getFilename()); - ENGINE_FORCE_UNMODIFIED((*a).getForceType(), (*a).getMin(), (*a).getMax(), (*a).getFilename()); -@@ -726,26 +726,26 @@ void C_ServerDeactivate_Post() - { - if (g_memreport_count == 0) - { - // make new directory - time_t td; - time(&td); - tm *curTime = localtime(&td); - int i = 0; --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - mkdir(build_pathname("%s/memreports", get_localinfo("amxx_basedir", "addons/amxmodx")), 0700); - #else - mkdir(build_pathname("%s/memreports", get_localinfo("amxx_basedir", "addons/amxmodx"))); - #endif - while (true) - { - char buffer[256]; - sprintf(buffer, "%s/memreports/D%02d%02d%03d", get_localinfo("amxx_basedir", "addons/amxmodx"), curTime->tm_mon + 1, curTime->tm_mday, i); --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - mkdir(build_pathname("%s", g_log_dir.c_str()), 0700); - if (mkdir(build_pathname(buffer), 0700) < 0) - #else - mkdir(build_pathname("%s", g_log_dir.c_str())); - if (mkdir(build_pathname(buffer)) < 0) - #endif - { - if (errno == EEXIST) -@@ -1078,26 +1078,26 @@ void C_StartFrame_Post(void) - if (g_memreport_count == 0) - { - // make new directory - time_t td; - time(&td); - tm *curTime = localtime(&td); - - int i = 0; --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - mkdir(build_pathname("%s/memreports", get_localinfo("amxx_basedir", "addons/amxmodx")), 0700); - #else - mkdir(build_pathname("%s/memreports", get_localinfo("amxx_basedir", "addons/amxmodx"))); - #endif - while (true) - { - char buffer[256]; - sprintf(buffer, "%s/memreports/D%02d%02d%03d", get_localinfo("amxx_basedir", "addons/amxmodx"), curTime->tm_mon + 1, curTime->tm_mday, i); --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - mkdir(build_pathname("%s", g_log_dir.c_str()), 0700); - if (mkdir(build_pathname(buffer), 0700) < 0) - #else - mkdir(build_pathname("%s", g_log_dir.c_str())); - if (mkdir(build_pathname(buffer)) < 0) - #endif - { - if (errno == EEXIST) -@@ -1280,17 +1280,17 @@ void C_TraceLine_Post(const float *v1, c - pPlayer->aiming = ptr->iHitgroup; - - pPlayer->lastTrace = ptr->vecEndPos; - } - - RETURN_META(MRES_IGNORED); - } - --void C_AlertMessage(ALERT_TYPE atype, char *szFmt, ...) -+void C_AlertMessage(ALERT_TYPE atype, const char *szFmt, ...) - { - if (atype != at_logged) - { - RETURN_META(MRES_IGNORED); - } - - /* There are also more messages but we want only logs - at_notice, -@@ -1324,17 +1324,17 @@ void C_AlertMessage(ALERT_TYPE atype, ch - if (retVal) - { - RETURN_META(MRES_SUPERCEDE); - } - - RETURN_META(MRES_IGNORED); - } - --void C_ChangeLevel(char *map, char *what) -+void C_ChangeLevel(const char *map, const char *what) - { - int ret = executeForwards(FF_ChangeLevel, map); - if (ret) - RETURN_META(MRES_SUPERCEDE); - RETURN_META(MRES_IGNORED); - } - - void C_CvarValue2(const edict_t *pEdict, int requestId, const char *cvar, const char *value) -@@ -1366,17 +1366,17 @@ void C_CvarValue2(const edict_t *pEdict, - - break; - } - } - - RETURN_META(MRES_HANDLED); - } - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - gpMetaUtilFuncs = pMetaUtilFuncs; - *pPlugInfo = &Plugin_info; - - int mmajor = 0, mminor = 0, pmajor = 0, pminor = 0; - - sscanf(ifvers, "%d:%d", &mmajor, &mminor); - sscanf(Plugin_info.ifvers, "%d:%d", &pmajor, &pminor); -@@ -1530,17 +1530,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - Module_UncacheFunctions(); - - ClearLibraries(LibSource_Plugin); - ClearLibraries(LibSource_Module); - - return (TRUE); - } - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll(enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals) - { - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll(enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals) - { -diff --git a/amxmodx/modules.cpp b/amxmodx/modules.cpp ---- a/amxmodx/modules.cpp -+++ b/amxmodx/modules.cpp -@@ -24,18 +24,21 @@ - * L.L.C ("Valve"). You must obey the GNU General Public License in all - * respects for all of the code used other than the HL Engine and MODs - * from Valve. If you modify this file, you may extend this exception - * to your version of the file, but you are not obligated to do so. If - * you do not wish to do so, delete this exception statement from your - * version. - */ - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) -+#if defined(__linux__) - #include -+#endif -+ - #include - #include - #include "sclinux.h" - #endif - - #include "amxmodx.h" - #include "osdep.h" // sleep, etc - #include "CFile.h" -@@ -81,17 +84,17 @@ bool DirExists(const char *dir) - - if (S_ISDIR(s.st_mode)) - return true; - #endif - - return false; - } - --void report_error(int code, char* fmt, ...) -+void report_error(int code, const char* fmt, ...) - { - va_list argptr; - char string[256]; - *string = 0; - va_start(argptr, fmt); - vsnprintf(string, 255, fmt, argptr); - string[255] = 0; - va_end(argptr); -@@ -101,17 +104,17 @@ void report_error(int code, char* fmt, . - AMXXLOG_Log("Error:"); - AMXXLOG_Log(string); - } else { - AMXXLOG_Log("!!! There was an unexpected module error."); - AMXXLOG_Log("The server may not work correctly."); - } - } - --void print_srvconsole(char *fmt, ...) -+void print_srvconsole(const char *fmt, ...) - { - va_list argptr; - static char string[384]; - va_start(argptr, fmt); - vsnprintf(string, sizeof(string) - 1, fmt, argptr); - string[sizeof(string) - 1] = '\0'; - va_end(argptr); - -@@ -335,21 +338,24 @@ int load_amxscript(AMX *amx, void **prog - strcpy(error, "Failed to initialize JIT'd plugin"); - - return (amx->error = AMX_ERR_INIT); - } - - if ((err = amx_InitJIT(amx, (void *)rt, (void *)np)) == AMX_ERR_NONE) - { - //amx->base = (unsigned char FAR *)realloc(np, amx->code_size); --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - amx->base = (unsigned char *)VirtualAlloc(NULL, amx->code_size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); --#else -- //posix_memalign((void **)&(amx->base), sysconf(_SC_PAGESIZE), amx->code_size); -+#elif defined(__GNUC__) -+# if defined(__APPLE__) -+ amx->base = (unsigned char *)valloc(amx->code_size); -+# else - amx->base = (unsigned char *)memalign(sysconf(_SC_PAGESIZE), amx->code_size); -+# endif - mprotect((void *)amx->base, amx->code_size, PROT_READ|PROT_WRITE|PROT_EXEC); - #endif - if (amx->base) - memcpy(amx->base, np, amx->code_size); - - delete [] np; - delete [] rt; - -@@ -636,17 +642,17 @@ int unload_amxscript(AMX* amx, void** pr - a.remove(); - - char *prg = (char *)*program; - - if (!prg) - return AMX_ERR_NONE; - - #if defined JIT --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - if ((flags & AMX_FLAG_JITC) != AMX_FLAG_JITC) - { - delete [] prg; - } else { - #ifdef free - #undef free - free(prg); - #define free(ptr) m_deallocator(__FILE__, __LINE__, __FUNCTION__, m_alloc_free, ptr) -@@ -715,17 +721,17 @@ const char* get_amxscriptname(AMX* amx) - return a ? (*a).getName() : ""; - } - - void get_modname(char* buffer) - { - strcpy(buffer, g_mod_name.c_str()); - } - --char* build_pathname(char *fmt, ...) -+char* build_pathname(const char *fmt, ...) - { - static char string[256]; - int b; - int a = b = snprintf(string, 255, "%s%c", g_mod_name.c_str(), PATH_SEP_CHAR); - - va_list argptr; - va_start(argptr, fmt); - a += vsnprintf (&string[a], 255 - a, fmt, argptr); -@@ -741,17 +747,17 @@ char* build_pathname(char *fmt, ...) - *path = PATH_SEP_CHAR; - } - ++path; - } - - return string; - } - --char *build_pathname_r(char *buffer, size_t maxlen, char *fmt, ...) -+char *build_pathname_r(char *buffer, size_t maxlen, const char *fmt, ...) - { - snprintf(buffer, maxlen, "%s%c", g_mod_name.c_str(), PATH_SEP_CHAR); - - size_t len = strlen(buffer); - char *ptr = buffer + len; - - va_list argptr; - va_start(argptr, fmt); -@@ -766,17 +772,17 @@ char *build_pathname_r(char *buffer, siz - } - ++ptr; - } - - return buffer; - } - - // build pathname based on addons dir --char* build_pathname_addons(char *fmt, ...) -+char* build_pathname_addons(const char *fmt, ...) - { - static char string[256]; - - va_list argptr; - va_start(argptr, fmt); - vsnprintf (string, 255, fmt, argptr); - va_end(argptr); - -@@ -870,29 +876,31 @@ bool ConvertModuleName(const char *pathS - } else { - *ptr = '\0'; - } - - path.assign(orig_path); - path.append(PATH_SEP_CHAR); - path.append(tmpname); - path.append("_amxx"); --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #if defined AMD64 || PAWN_CELL_SIZE==64 - path.append("_amd64"); - #else - path.append("_i"); - path.append(iDigit); - path.append("86"); - #endif - #endif - #if defined WIN32 - path.append(".dll"); - #elif defined __linux__ - path.append(".so"); -+#elif defined __APPLE__ -+ path.append(".dylib"); - #endif - - return true; - } - - bool LoadModule(const char *shortname, PLUG_LOADTIME now, bool simplify, bool noFileBail) - { - char pathString[512]; -@@ -1174,30 +1182,26 @@ void modules_callPluginsUnloading() - (*iter).CallPluginsUnloading(); - ++iter; - } - } - - // new functions - int MNF_AddNatives(AMX_NATIVE_INFO* natives) - { -- CList::iterator a = g_modules.begin(); -- - if (!g_CurrentlyCalledModule || g_ModuleCallReason != ModuleCall_Attach) - return FALSE; // may only be called from attach - - g_CurrentlyCalledModule->m_Natives.push_back(natives); - - return TRUE; - } - - int MNF_AddNewNatives(AMX_NATIVE_INFO *natives) - { -- CList::iterator a = g_modules.begin(); -- - if (!g_CurrentlyCalledModule || g_ModuleCallReason != ModuleCall_Attach) - return FALSE; // may only be called from attach - - g_CurrentlyCalledModule->m_NewNatives.push_back(natives); - - return TRUE; - } - -diff --git a/amxmodx/modules.h b/amxmodx/modules.h ---- a/amxmodx/modules.h -+++ b/amxmodx/modules.h -@@ -30,17 +30,17 @@ - */ - - #ifndef __MODULES_H__ - #define __MODULES_H__ - - #include "amx.h" - - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) - #define WINAPI - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT -diff --git a/amxmodx/natives.cpp b/amxmodx/natives.cpp ---- a/amxmodx/natives.cpp -+++ b/amxmodx/natives.cpp -@@ -30,18 +30,21 @@ - - #include "amxmodx.h" - #include "sh_stack.h" - #include "natives.h" - #include "debugger.h" - #include "libraries.h" - #include "format.h" - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) -+#if defined(__linux__) - #include -+#endif -+ - #include - #include - #include "sclinux.h" - #endif - - //Written by David "BAILOPAN" Anderson - //With the exception for param_convert, which was written by - // Julien "dJeyL" Laurent -@@ -474,22 +477,26 @@ static cell AMX_NATIVE_CALL register_nat - - regnative *pNative = new regnative; - pNative->amx = amx; - pNative->func = idx; - - //we'll apply a safety buffer too - //make our function - int size = amxx_DynaCodesize(); --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - DWORD temp; - pNative->pfn = new char[size + 10]; - VirtualProtect(pNative->pfn, size+10, PAGE_EXECUTE_READWRITE, &temp); --#else -+#elif defined(__GNUC__) -+# if defined(__APPLE__) -+ pNative->pfn = (char *)valloc(size+10); -+# else - pNative->pfn = (char *)memalign(sysconf(_SC_PAGESIZE), size+10); -+# endif - mprotect((void *)pNative->pfn, size+10, PROT_READ|PROT_WRITE|PROT_EXEC); - #endif - - int id = (int)g_RegNatives.size(); - - amxx_DynaMake(pNative->pfn, id); - pNative->func = idx; - pNative->style = params[3]; -diff --git a/amxmodx/osdefs.h b/amxmodx/osdefs.h ---- a/amxmodx/osdefs.h -+++ b/amxmodx/osdefs.h -@@ -34,16 +34,20 @@ - # define __32BIT__ 1 - # endif - #endif - - #if defined __linux__ - #include - #endif - -+#if defined __APPLE__ -+ #include -+#endif -+ - /* Linux NOW has these */ - #if !defined BIG_ENDIAN - #define BIG_ENDIAN 4321 - #endif - #if !defined LITTLE_ENDIAN - #define LITTLE_ENDIAN 1234 - #endif - -diff --git a/amxmodx/sclinux.h b/amxmodx/sclinux.h ---- a/amxmodx/sclinux.h -+++ b/amxmodx/sclinux.h -@@ -15,36 +15,40 @@ - * - * So we stick to getchar at the moment... (one needs to key ctrl-d to terminate input if getch is called with a controlling - * terminal driven by a tty having -raw) - */ - #define getch getchar - #define stricmp(a,b) strcasecmp(a,b) - #define strnicmp(a,b,c) strncasecmp(a,b,c) - --#if defined __linux__ && !defined _snprintf -+#if ( defined(__linux__) || defined(__APPLE__) ) && !defined _snprintf - #define _snprintf snprintf - #endif --#if defined __linux__ && !defined _vsnprintf -+#if ( defined(__linux__) || defined(__APPLE__) ) && !defined _vsnprintf - //#define _vsnprintf vsnprintf - #endif - - /* - * WinWorld wants '\'. Unices do not. - */ - #define DIRECTORY_SEP_CHAR '/' - #define DIRECTORY_SEP_STR "/" - - /* - * SC assumes that a computer is Little Endian unless told otherwise. It uses - * (and defines) the macros BYTE_ORDER and BIG_ENDIAN. - * For Linux, we must overrule these settings with those defined in glibc. - */ - #if !defined __BYTE_ORDER - # include -+# if defined __APPLE__ -+# include -+# define __BYTE_ORDER BYTE_ORDER -+# endif - #endif - - #if defined __OpenBSD__ - # define __BYTE_ORDER BYTE_ORDER - # define __LITTLE_ENDIAN LITTLE_ENDIAN - # define __BIG_ENDIAN BIG_ENDIAN - #endif - -diff --git a/amxmodx/sdk/amxxmodule.cpp b/amxmodx/sdk/amxxmodule.cpp ---- a/amxmodx/sdk/amxxmodule.cpp -+++ b/amxmodx/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/amxmodx/sdk/amxxmodule.h b/amxmodx/sdk/amxxmodule.h ---- a/amxmodx/sdk/amxxmodule.h -+++ b/amxmodx/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/amxmodx/sh_list.h b/amxmodx/sh_list.h ---- a/amxmodx/sh_list.h -+++ b/amxmodx/sh_list.h -@@ -14,17 +14,17 @@ - // MSVC8 fix for offsetof macro redefition warnings - #ifdef _MSC_VER - #if _MSC_VER >= 1400 - #undef offsetof - #endif - #endif - - #include --#include -+#include - - //namespace SourceHook - //{ - //This class is from CSDM for AMX Mod X - /* - A circular, doubly-linked list with one sentinel node - - Empty: -diff --git a/amxmodx/sh_tinyhash.h b/amxmodx/sh_tinyhash.h ---- a/amxmodx/sh_tinyhash.h -+++ b/amxmodx/sh_tinyhash.h -@@ -49,22 +49,22 @@ - val = other.val; - } - K key; - V val; - }; - typedef List * NodePtr; - public: - class const_iterator; -- THash() : m_Buckets(NULL), m_numBuckets(0), m_percentUsed(0.0f), m_items(0) -+ THash() : m_Buckets(NULL), m_numBuckets(0), m_percentUsed(0.0f) - { - _Refactor(); - } - THash(const THash &other) : m_Buckets(new NodePtr[other.m_numBuckets]), -- m_numBuckets(other.m_numBuckets), m_percentUsed(other.m_percentUsed), m_items(0) -+ m_numBuckets(other.m_numBuckets), m_percentUsed(other.m_percentUsed) - { - for (size_t i=0; ikey)->val = iter->val; - } - void operator=(const THash &other) - { -@@ -77,20 +77,16 @@ - { - _Clear(); - } - void clear() - { - _Clear(); - _Refactor(); - } -- size_t size() -- { -- return m_items; -- } - size_t GetBuckets() - { - return m_numBuckets; - } - float PercentUsed() - { - return m_percentUsed; - } -@@ -117,17 +113,16 @@ - delete m_Buckets[i]; - m_Buckets[i] = NULL; - } - } - if (m_Buckets) - delete [] m_Buckets; - m_Buckets = NULL; - m_numBuckets = 0; -- m_items = 0; - } - public: - template - V & AltFindOrInsert(const U & ukey) - { - size_t place = HashAlt(ukey) % m_numBuckets; - THashNode *pNode = NULL; - if (!m_Buckets[place]) -@@ -224,18 +219,16 @@ - } - } - //reassign bucket table - delete [] m_Buckets; - m_Buckets = temp; - } - } - public: -- friend class iterator; -- friend class const_iterator; - class iterator - { - friend class THash; - public: - iterator() : curbucket(-1), hash(NULL), end(true) - { - }; - iterator(THash *h) : curbucket(-1), hash(h), end(false) -@@ -299,18 +292,16 @@ - // Remove this element and move to the next one - iterator tmp = *this; - ++tmp; - delete (*iter); - hash->m_Buckets[curbucket]->erase(iter); - *this = tmp; - - // :TODO: Maybe refactor to a lower size if required -- -- m_items--; - } - private: - void _Inc() - { - if (end || !hash || curbucket >= static_cast(hash->m_numBuckets)) - return; - if (curbucket < 0) - { -@@ -449,16 +440,18 @@ - } - } - private: - int curbucket; - typename List::iterator iter; - const THash *hash; - bool end; - }; -+ friend class iterator; -+ friend class const_iterator; - public: - iterator begin() - { - return iterator(this); - } - iterator end() - { - iterator iter; -diff --git a/amxmodx/sm_trie_tpl.h b/amxmodx/sm_trie_tpl.h ---- a/amxmodx/sm_trie_tpl.h -+++ b/amxmodx/sm_trie_tpl.h -@@ -29,17 +29,17 @@ - * Version: $Id$ - */ - - #ifndef _INCLUDE_SOURCEMOD_TEMPLATED_TRIE_H_ - #define _INCLUDE_SOURCEMOD_TEMPLATED_TRIE_H_ - - #include - #include --#include -+#include - #include - - enum NodeType - { - Node_Unused = 0, /* Node is not being used (sparse) */ - Node_Arc, /* Node is part of an arc and does not terminate */ - Node_Term, /* Node is a terminator */ - }; -diff --git a/amxmodx/strptime.cpp b/amxmodx/strptime.cpp ---- a/amxmodx/strptime.cpp -+++ b/amxmodx/strptime.cpp -@@ -5,17 +5,17 @@ - - Localized strptime(). - *-----------------------------------------------------------------------*/ - //#include "config.h" - #include - #include - #include - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define strnicmp strncasecmp - #endif - - #if _MSC_VER - #if _MSC_VER >= 1400 - // MSVC8 - Replace POSIX stricmp with ISO C++ conformant one as it is deprecated - #define stricmp _stricmp - -@@ -331,18 +331,20 @@ char *strptime(const char *buf, const ch - ti.qZ = /* 0 = STD, 1 = DST */ - ti.qU = /* week in year (0...53) */ - ti.qV = -1; /* week in year mode: 0=U, 1=W, 2=V */ - - if (0 > time_int(&ti, (const unsigned char **)&buf, fmt, addthem)) buf = NULL; - if (0 <= ti.qS) (*defoper) ( &tm->tm_sec , ti.qS ); - if (0 <= ti.qM) (*defoper) ( &tm->tm_min , ti.qM ); //tm->tm_min = ti.qM; - if (0 <= ti.qI) -+ { - if (0 <= ti.qp) ti.qH = ti.qI % 12 + ti.qp * 12; -- else (*defoper) ( &tm->tm_hour , ti.qI ); //tm->tm_hour = ti.qI; -+ else (*defoper) ( &tm->tm_hour , ti.qI ); //tm->tm_hour = ti.qI; -+ } - if (0 <= ti.qH) (*defoper) ( &tm->tm_hour , ti.qH ); //tm->tm_hour = ti.qH; - if (0 <= ti.qZ) (*defoper) ( &tm->tm_isdst , ti.qZ - 1 ); //tm->tm_isdst = ti.qZ - 1; - if (0 <= ti.qy) ti.qY = ti.qy; - if (0 <= ti.qY) (*defoper) ( &tm->tm_year , - ti.qY += - (ti.qY > 99? -1900: - (ti.qY < 70? 100: 0)) ); - /*tm->tm_year = ti.qY += -diff --git a/amxmodx/util.cpp b/amxmodx/util.cpp ---- a/amxmodx/util.cpp -+++ b/amxmodx/util.cpp -@@ -27,17 +27,17 @@ - * to your version of the file, but you are not obligated to do so. If - * you do not wish to do so, delete this exception statement from your - * version. - */ - - #include - #include "amxmodx.h" - --#if defined __linux__ && !defined _vsnprintf -+#if ( defined(__linux__) || defined(__APPLE__) ) && !defined _vsnprintf - #define _vsnprintf vsnprintf - #endif - - char *UTIL_VarArgs(const char *fmt, ...) - { - va_list ap; - static char string[4096]; - -@@ -152,38 +152,38 @@ void UTIL_IntToString(int value, char *o - - *output = 0; - if (value < 0) value = -value; - int tho = value / 1000; - int aaa = 0; - - if (tho) - { -- aaa += sprintf(&output[aaa], words[tho]); -- aaa += sprintf(&output[aaa], words[29]); -+ aaa += sprintf(&output[aaa], "%s", words[tho]); -+ aaa += sprintf(&output[aaa], "%s", words[29]); - value = value % 1000; - } - - int hun = value / 100; - - if (hun) - { -- aaa += sprintf(&output[aaa], words[hun]); -- aaa += sprintf(&output[aaa], words[28]); -+ aaa += sprintf(&output[aaa], "%s", words[hun]); -+ aaa += sprintf(&output[aaa], "%s", words[28]); - value = value % 100; - } - - int ten = value / 10; - int unit = value % 10; - - if (ten) -- aaa += sprintf(&output[aaa], words[(ten > 1) ? (ten + 18) : (unit + 10)]); -+ aaa += sprintf(&output[aaa], "%s", words[(ten > 1) ? (ten + 18) : (unit + 10)]); - - if (ten != 1 && (unit || (!value && !hun && !tho))) -- sprintf(&output[aaa], words[unit]); -+ sprintf(&output[aaa], "%s", words[unit]); - } - - char* UTIL_SplitHudMessage(const char *src) - { - static char message[512]; - short b = 0, d = 0, e = 0, c = -1; - - while (src[d] && e < 480) -@@ -237,17 +237,17 @@ short FixedSigned16(float value, float s - if (output > 32767) - output = 32767; - else if (output < -32768) - output = -32768; - - return (short)output; - } - --void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, char *pMessage) -+void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, const char *pMessage) - { - if (pEntity) - MESSAGE_BEGIN(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, NULL, pEntity); - else - MESSAGE_BEGIN(MSG_BROADCAST, SVC_TEMPENTITY); - - WRITE_BYTE(29); - WRITE_BYTE(textparms.channel & 0xFF); -diff --git a/compiler/amxxpc/Makefile b/compiler/amxxpc/Makefile ---- a/compiler/amxxpc/Makefile -+++ b/compiler/amxxpc/Makefile -@@ -1,46 +1,107 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --BINARY = amxxpc -- -+PROJECT = amxxpc - OBJECTS = amx.cpp amxxpc.cpp Binary.cpp - --LINK = -lz /lib32/libstdc++.a -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -L. -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang -+ -+LINK = -+ -+INCLUDE = -I. -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_SUFFIX = _osx -+ CFLAGS += -DOSX -+ LINK += -lstdc++ -mmacosx-version-min=10.5 -lz-darwin -+else -+ LIB_SUFFIX = -+ CFLAGS += -DLINUX -+ LINK += -lz /lib32/libstdc++.a -+endif -+ -+LINK += -m32 -lm -ldl -L. -+ -+CFLAGS += -DAMX_ANSIONLY -DHAVE_STDINT_H -fno-strict-aliasing \ -+ -m32 -Wall -Werror -+CPPFLAGS += -fexceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX) - - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) - endif - --CFLAGS += -DLINUX -DNDEBUG -Wno-deprecated -fexceptions -DHAVE_STDINT_H -DAMX_ANSIONLY -fno-rtti -static-libgcc -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif -+ -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -m32 -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) -- $(MAKE) amxxpc -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amxxpc: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) -m32 $(OBJ_LINUX) $(LINK) -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - - default: all - - clean: -- rm -rf Release/*.o -- rm -rf Release/$(BINARY) -- rm -rf Debug/*.o -- rm -rf Debug/$(BINARY) -+ rm -rf $(BIN_DIR)/*.o -+ rm -f $(BIN_DIR)/$(BINARY) - -diff --git a/compiler/amxxpc/amx.cpp b/compiler/amxxpc/amx.cpp ---- a/compiler/amxxpc/amx.cpp -+++ b/compiler/amxxpc/amx.cpp -@@ -37,17 +37,17 @@ - #endif - - #include - #include - #include - #include /* for wchar_t */ - #include - #include "osdefs.h" --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #if !defined AMX_NODYNALOAD - #include - #endif - #if defined JIT - #include - #include - #endif -@@ -810,22 +810,22 @@ static void expand(unsigned char *code, - /* when all bytes have been expanded, the complete memory block should be done */ - assert(memsize==0); - } - #endif /* defined AMX_INIT */ - - int AMXAPI amx_Init(AMX *amx,void *program) - { - AMX_HEADER *hdr; -- #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__) && !defined AMX_NODYNALOAD -+ #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__) && !defined AMX_NODYNALOAD - char libname[sNAMEMAX+8]; /* +1 for '\0', +3 for 'amx' prefix, +4 for extension */ - #if defined _Windows - typedef int (FAR WINAPI *AMX_ENTRY)(AMX _FAR *amx); - HINSTANCE hlib; -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - typedef int (*AMX_ENTRY)(AMX *amx); - void *hlib; - #endif - int numlibraries,i; - AMX_FUNCSTUB *lib; - AMX_ENTRY libinit; - #endif - -@@ -960,47 +960,47 @@ int AMXAPI amx_Init(AMX *amx,void *progr - } /* for */ - } /* local */ - #endif - - /* relocate call and jump instructions */ - amx_BrowseRelocate(amx); - - /* load any extension modules that the AMX refers to */ -- #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__) && !defined AMX_NODYNALOAD -+ #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__) && !defined AMX_NODYNALOAD - hdr=(AMX_HEADER *)amx->base; - numlibraries=NUMENTRIES(hdr,libraries,pubvars); - for (i=0; iaddress=(ucell)hlib; - } /* for */ - #endif -@@ -1024,17 +1024,17 @@ int AMXAPI amx_Init(AMX *amx,void *progr - DWORD prev, p = 0; - if ((prot & PROT_WRITE)!=0) - p = PAGE_EXECUTE_READWRITE; - else - p |= PAGE_EXECUTE_READ; - return !VirtualProtect(addr, len, p, &prev); - } - -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - - /* Linux already has mprotect() */ - - #else - - // TODO: Add cases for Linux, Unix, OS/2, ... - - /* DOS32 has no imposed limits on its segments */ -@@ -1099,50 +1099,50 @@ int AMXAPI amx_InitJIT(AMX *amx,void *co - - #endif /* #if defined JIT */ - - #endif /* AMX_INIT */ - - #if defined AMX_CLEANUP - int AMXAPI amx_Cleanup(AMX *amx) - { -- #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__) && !defined AMX_NODYNALOAD -+ #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__) && !defined AMX_NODYNALOAD - #if defined _Windows - typedef int (FAR WINAPI *AMX_ENTRY)(AMX FAR *amx); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - typedef int (*AMX_ENTRY)(AMX *amx); - #endif - AMX_HEADER *hdr; - int numlibraries,i; - AMX_FUNCSTUB *lib; - AMX_ENTRY libcleanup; - #endif - - /* unload all extension modules */ -- #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__) && !defined AMX_NODYNALOAD -+ #if (defined _Windows || defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__) && !defined AMX_NODYNALOAD - hdr=(AMX_HEADER *)amx->base; - assert(hdr->magic==AMX_MAGIC); - numlibraries=NUMENTRIES(hdr,libraries,pubvars); - for (i=0; iaddress!=0) { - char funcname[sNAMEMAX+12]; /* +1 for '\0', +4 for 'amx_', +7 for 'Cleanup' */ - strcpy(funcname,"amx_"); - strcat(funcname,GETENTRYNAME(hdr,lib)); - strcat(funcname,"Cleanup"); - #if defined _Windows - libcleanup=(AMX_ENTRY)GetProcAddress((HINSTANCE)lib->address,funcname); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - libcleanup=(AMX_ENTRY)dlsym((void*)lib->address,funcname); - #endif - if (libcleanup!=NULL) - libcleanup(amx); - #if defined _Windows - FreeLibrary((HINSTANCE)lib->address); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - dlclose((void*)lib->address); - #endif - } /* if */ - } /* for */ - #else - (void)amx; - #endif - return AMX_ERR_NONE; -@@ -1661,17 +1661,17 @@ int AMXAPI amx_PushString(AMX *amx, cell - #define CHKSTACK() if (stk>amx->stp) return AMX_ERR_STACKLOW - #define CHKHEAP() if (heahlw) return AMX_ERR_HEAPLOW - - #if defined __GNUC__ && !(defined ASM32 || defined JIT) - /* GNU C version uses the "labels as values" extension to create - * fast "indirect threaded" interpreter. - */ - --#define NEXT(cip) goto **cip++ -+#define NEXT(cip) goto *(const void *)*cip++ - - int AMXAPI amx_Exec(AMX *amx, cell *retval, int index) - { - static const void * const amx_opcodelist[] = { - &&op_none, &&op_load_pri, &&op_load_alt, &&op_load_s_pri, - &&op_load_s_alt,&&op_lref_pri, &&op_lref_alt, &&op_lref_s_pri, - &&op_lref_s_alt,&&op_load_i, &&op_lodb_i, &&op_const_pri, - &&op_const_alt, &&op_addr_pri, &&op_addr_alt, &&op_stor_pri, -@@ -1841,24 +1841,24 @@ static const void * const amx_opcodelist - NEXT(cip); - op_lref_s_alt: - GETPARAM(offs); - offs= * (cell *)(data+(int)frm+(int)offs); - alt= * (cell *)(data+(int)offs); - NEXT(cip); - op_load_i: - /* verify address */ -- if (pri>=hea && pri=(ucell)amx->stp) -+ if ((pri>=hea && pri=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - pri= * (cell *)(data+(int)pri); - NEXT(cip); - op_lodb_i: - GETPARAM(offs); - /* verify address */ -- if (pri>=hea && pri=(ucell)amx->stp) -+ if ((pri>=hea && pri=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - switch (offs) { - case 1: - pri= * (data+(int)pri); - break; - case 2: - pri= * (uint16_t *)(data+(int)pri); - break; -@@ -1914,49 +1914,49 @@ static const void * const amx_opcodelist - NEXT(cip); - op_sref_s_alt: - GETPARAM(offs); - offs= * (cell *)(data+(int)frm+(int)offs); - *(cell *)(data+(int)offs)=alt; - NEXT(cip); - op_stor_i: - /* verify address */ -- if (alt>=hea && alt=(ucell)amx->stp) -+ if ((alt>=hea && alt=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - *(cell *)(data+(int)alt)=pri; - NEXT(cip); - op_strb_i: - GETPARAM(offs); - /* verify address */ -- if (alt>=hea && alt=(ucell)amx->stp) -+ if ((alt>=hea && alt=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - switch (offs) { - case 1: - *(data+(int)alt)=(unsigned char)pri; - break; - case 2: - *(uint16_t *)(data+(int)alt)=(uint16_t)pri; - break; - case 4: - *(uint32_t *)(data+(int)alt)=(uint32_t)pri; - break; - } /* switch */ - NEXT(cip); - op_lidx: - offs=pri*sizeof(cell)+alt; - /* verify address */ -- if (offs>=hea && offs=(ucell)amx->stp) -+ if ((offs>=hea && offs=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - pri= * (cell *)(data+(int)offs); - NEXT(cip); - op_lidx_b: - GETPARAM(offs); - offs=(pri << (int)offs)+alt; - /* verify address */ -- if (offs>=hea && offs=(ucell)amx->stp) -+ if ((offs>=hea && offs=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - pri= * (cell *)(data+(int)offs); - NEXT(cip); - op_idxaddr: - pri=pri*sizeof(cell)+alt; - NEXT(cip); - op_idxaddr_b: - GETPARAM(offs); -@@ -2383,47 +2383,47 @@ static const void * const amx_opcodelist - op_dec_i: - *(cell *)(data+(int)pri) -= 1; - NEXT(cip); - op_movs: - GETPARAM(offs); - /* verify top & bottom memory addresses, for both source and destination - * addresses - */ -- if (pri>=hea && pri=(ucell)amx->stp) -+ if ((pri>=hea && pri=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if ((pri+offs)>hea && (pri+offs)(ucell)amx->stp) -+ if (((pri+offs)>hea && (pri+offs)(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if (alt>=hea && alt=(ucell)amx->stp) -+ if ((alt>=hea && alt=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if ((alt+offs)>hea && (alt+offs)(ucell)amx->stp) -+ if (((alt+offs)>hea && (alt+offs)(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - memcpy(data+(int)alt, data+(int)pri, (int)offs); - NEXT(cip); - op_cmps: - GETPARAM(offs); - /* verify top & bottom memory addresses, for both source and destination - * addresses - */ -- if (pri>=hea && pri=(ucell)amx->stp) -+ if ((pri>=hea && pri=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if ((pri+offs)>hea && (pri+offs)(ucell)amx->stp) -+ if (((pri+offs)>hea && (pri+offs)(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if (alt>=hea && alt=(ucell)amx->stp) -+ if ((alt>=hea && alt=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if ((alt+offs)>hea && (alt+offs)(ucell)amx->stp) -+ if (((alt+offs)>hea && (alt+offs)(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - pri=memcmp(data+(int)alt, data+(int)pri, (int)offs); - NEXT(cip); - op_fill: - GETPARAM(offs); - /* verify top & bottom memory addresses */ -- if (alt>=hea && alt=(ucell)amx->stp) -+ if ((alt>=hea && alt=(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); -- if ((alt+offs)>hea && (alt+offs)(ucell)amx->stp) -+ if (((alt+offs)>hea && (alt+offs)(ucell)amx->stp) - ABORT(amx,AMX_ERR_MEMACCESS); - for (i=(int)alt; offs>=(int)sizeof(cell); i+=sizeof(cell), offs-=sizeof(cell)) - *(cell *)(data+i) = pri; - NEXT(cip); - op_halt: - GETPARAM(offs); - if (retval!=NULL) - *retval=pri; -@@ -3587,17 +3587,17 @@ int AMXAPI amx_GetAddr(AMX *amx,cell amx - - assert(amx!=NULL); - hdr=(AMX_HEADER *)amx->base; - assert(hdr!=NULL); - assert(hdr->magic==AMX_MAGIC); - data=(amx->data!=NULL) ? amx->data : amx->base+(int)hdr->dat; - - assert(phys_addr!=NULL); -- if (amx_addr>=amx->hea && amx_addrstk || amx_addr<0 || amx_addr>=amx->stp) { -+ if ((amx_addr>=amx->hea && amx_addrstk) || amx_addr<0 || amx_addr>=amx->stp) { - *phys_addr=NULL; - return AMX_ERR_MEMACCESS; - } /* if */ - - *phys_addr=(cell *)(data + (int)amx_addr); - return AMX_ERR_NONE; - } - #endif /* AMX_GETADDR */ -diff --git a/compiler/amxxpc/amx.h b/compiler/amxxpc/amx.h ---- a/compiler/amxxpc/amx.h -+++ b/compiler/amxxpc/amx.h -@@ -19,27 +19,27 @@ - * 3. This notice may not be removed or altered from any source distribution. - * - * Version: $Id: amx.h 3736 2008-08-16 20:13:12Z damagedsoul $ - */ - - #if defined FREEBSD && !defined __FreeBSD__ - #define __FreeBSD__ - #endif --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #endif - - #ifndef AMX_H_INCLUDED - #define AMX_H_INCLUDED - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -183,17 +183,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -411,17 +411,17 @@ int AMXAPI amx_UTF8Put(char *string, cha - #else - #error Unsupported cell size - #endif - - #define amx_RegisterFunc(amx, name, func) \ - amx_Register((amx), amx_NativeInfo((name),(func)), 1); - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack() /* reset default packing */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=reset - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - -diff --git a/compiler/amxxpc/amxdbg.h b/compiler/amxxpc/amxdbg.h ---- a/compiler/amxxpc/amxdbg.h -+++ b/compiler/amxxpc/amxdbg.h -@@ -44,17 +44,17 @@ extern "C" { - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -151,17 +151,17 @@ int AMXAPI dbg_GetLineAddress(AMX_DBG *a - int AMXAPI dbg_GetAutomatonName(AMX_DBG *amxdbg, int automaton, const char **name); - int AMXAPI dbg_GetStateName(AMX_DBG *amxdbg, int state, const char **name); - int AMXAPI dbg_GetTagName(AMX_DBG *amxdbg, int tag, const char **name); - int AMXAPI dbg_GetVariable(AMX_DBG *amxdbg, const char *symname, ucell scopeaddr, const AMX_DBG_SYMBOL **sym); - int AMXAPI dbg_GetArrayDim(AMX_DBG *amxdbg, const AMX_DBG_SYMBOL *sym, const AMX_DBG_SYMDIM **symdim); - - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack() /* reset default packing */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=reset - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - -diff --git a/compiler/amxxpc/amxxpc.cpp b/compiler/amxxpc/amxxpc.cpp ---- a/compiler/amxxpc/amxxpc.cpp -+++ b/compiler/amxxpc/amxxpc.cpp -@@ -1,10 +1,10 @@ - #include --#ifdef __linux__ -+#if defined(__linux__) | defined (__APPLE__) - #include - #else - #include - #include - #endif - #include - #include "zlib.h" - #include "amx.h" -@@ -24,57 +24,58 @@ static PRINTF pc_printf = NULL; - void ReadFileIntoPl(abl *pl, FILE *fp); - bool CompressPl(abl *pl); - void Pl2Bh(abl *pl, BinPlugin *bh); - void WriteBh(BinaryWriter *bw, BinPlugin *bh); - - int main(int argc, char **argv) - { - struct abl pl32; -- struct abl pl64; - - #ifdef _DEBUG - printf("debug clamp\n"); - getchar(); - #endif - --#ifdef __linux__ -+#if defined(__linux__) - HINSTANCE lib = NULL; - if (FileExists("./amxxpc32.so")) - lib = dlmount("./amxxpc32.so"); - else - lib = dlmount("amxxpc32.so"); -+#elif defined(__APPLE__) -+ HINSTANCE lib = dlmount("amxxpc32.dylib"); - #else - HINSTANCE lib = dlmount("amxxpc32.dll"); - #endif - if (!lib) - { --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - printf("compiler failed to instantiate: %s\n", dlerror()); - #else - printf("compiler failed to instantiate: %d\n", GetLastError()); - #endif - exit(0); - } - - COMPILER sc32 = (COMPILER)dlsym(lib, "Compile32"); - pc_printf = (PRINTF)dlsym(lib, "pc_printf"); - - if (!sc32 || !pc_printf) - { --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - printf("compiler failed to link: %p.\n",sc32); - #else - printf("compiler failed to link: %d.\n", GetLastError()); - #endif - exit(0); - } - - pc_printf("Welcome to the AMX Mod X %s Compiler.\n", VERSION_STRING); -- pc_printf("Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team\n\n"); -+ pc_printf("Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team\n\n"); - - if (argc < 2) - { - pc_printf("Usage: [options]\n"); - pc_printf("Use -? or --help to see full options\n\n"); - getchar(); - exit(0); - } -@@ -238,17 +239,17 @@ void ReadFileIntoPl(abl *pl, FILE *fp) - //we get the full name of the file here - //our job is to a] switch the .sma extension to .amx - // and to b] strip everything but the trailing name - char *swiext(const char *file, const char *ext, int isO) - { - int i = 0, pos = -1, j = 0; - int fileLen = strlen(file); - int extLen = strlen(ext); -- int max = 0, odirFlag = -1; -+ int odirFlag = -1; - - for (i=fileLen-1; i>=0; i--) - { - if (file[i] == '.' && pos == -1) - { - pos = i+1; - } - if ((file[i] == '/' || file[i] == '\\') && !isO) -@@ -334,17 +335,17 @@ void show_help() - printf("\t-H window handle to send a notification message on finish\n"); - printf("\t-i path for include files\n"); - printf("\t-l create list file (preprocess only)\n"); - printf("\t-o set base name of output file\n"); - printf("\t-p set name of \"prefix\" file\n"); - printf("\t-r[name] write cross reference report to console or to specified file\n"); - } - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - bool FileExists(const char *file) - { - FILE *fp = fopen(file, "rb"); - if (!fp) - return false; - fclose(fp); - return true; - } -diff --git a/compiler/amxxpc/amxxpc.h b/compiler/amxxpc/amxxpc.h ---- a/compiler/amxxpc/amxxpc.h -+++ b/compiler/amxxpc/amxxpc.h -@@ -1,24 +1,24 @@ - #ifndef _AMXXSC_INCLUDE_H - #define _AMXXSC_INCLUDE_H - - #define VERSION_STRING "1.8.1-300" - #define MAGIC_HEADER2 0x414D5858 - #define MAGIC_VERSION 0x0300 - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - # include - #else - # include - #endif - - #include - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - # define dlmount(x) dlopen(x, RTLD_NOW|RTLD_GLOBAL) - typedef void* HINSTANCE; - #else - # define dlsym(x, s) GetProcAddress(x, s) - # define dlmount(x) LoadLibrary(x) - # define dlclose(x) FreeLibrary(x) - #endif - -@@ -60,13 +60,13 @@ struct BinPlugin - { - int8_t cellsize; //cell size - int32_t imagesize; //uncompressed image size - int32_t disksize; //compressed image size - int32_t memsize; //memory image size - int32_t offs; //file offset - }; - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - bool FileExists(const char *file); - #endif - - #endif //_AMXXSC_INCLUDE_H -diff --git a/compiler/amxxpc/libz-darwin.a b/compiler/amxxpc/libz-darwin.a -new file mode 100644 -index 0000000000000000000000000000000000000000..03964e8e745100720d199fbdcfabe399f3aafdaa -GIT binary patch -literal 87176 -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 -zT*tA;11$Q-Y| -znW$HmR)6HK?3&3P6lBXOxjm}!N;T<pXs;CfXNoIzUPY4+@6H! -z(9K>CmC|#ylKqPHS4l7U$AmV9#Zt)Jq|UrMDtWoXmFPfqxiX(?iM8$zl{%_i -z;_p^!jf^k4c=c3y-k=#*mPRUGonYj2BlR5bdKNSoDOYapXTD64+Fx>sZ^(W0_JXkF -zkjm(%bkV?PA^jCRUqu;t?V7n_rQ#{a6=4d6O0|b1ay!SIr^sJQkPSE6iL{g)WyCE1 -zKpobVBje}n;PIuv*L%Y%ecs?VGX4Rp)yleFj4MSQ!=AA2&wcJ2SbeRdqd9YnX=du6 -zM_Vqs)gOKQIAUk<;oO`GgM}ZeZCZWPi+vq3PCS=Mo;6SZvgMO;iWOFB@)thOmC|<$ -zqnq4ncB{6p_C3|SC4du}>1VO|ihIEjkxxcaN#H2`m&+IK7BcTkaTU_94Wx~nI9l31 -z)9Cu`u?jaX?{K_2j=tiG(@9Br4yUjv8B3@fKlFUnvWq!h2S$JJY&v*!g+PAiO4?}| -zxr4Lxl^UacWrGJeP^34`y}4UCEbZm_ahKK_sHHFuY$@5HnEB{+YV)&oBdVV&l$Dfj -zn*Fk@wf)NTpNx2A80vL -z+1>Q5)R++Fb0uxAdoE3Fx$~}Zf!b3u6|NrM!n~zcE$t|7rorugiU~(;@J0{)Nw*g1 -zjHBP?d6~Bf!#ACDT%5PZ#D)=9nLj5zr#P;@xwD|M?G@7|`K)!s`Q$A+qJ%H$@-oHAPjoyf5E=^3Qo^=f*?} -zv$6O61O2`Stv>J1F>H3!Rv#}XtFY35-T$M$MfGJ_=R2$Hg5K$R`?r1hsGXjY!#N_@ -z&PFFE$!`0akvQnOI7%tB>hvgs=F8J1p&vssE$df=tKBx4u3fc6+9tHcEW)E9M#m=S -z4%_Z2HBM!hak`RNRIhO&r_$i2;_V~@tG4tJTTkwhf4E0HK#p?X$&yoUj(Kzj+*?#5 -zv~y0suEI+?`goQ&cCXT&?F-_|tNNY3pI6dZ)3mdo^OIA#NAS?PQ2(lAJLAMCo25(o -zD-9g1p@KXKGSEC=qA}y7|99^?$GUZ+yobO%hwii8`kyLQMQ$J3WF1vmI8oP{3hTbPn&5IWq$)AoN -zdABoJF1Fx2%f`9cRf*ST@nBZv%FRkSeAE7pA88sUZ?l7V*&9rR72IkQWekZkS+y+Pad~{b(6q9W=QzwpN5wTlpLtM6ZOn5vWoCa${Ix|KQPMV#^H}ks -z@`gYtG$uGN<{`p32V+8M5b3iP@?CRh)y`&DzoLLjCWZwG1i^RC8{hplwl8 -zqhIBdBzt?kr(M0>Nbir2RG_;~I2`oawV -z(;L1!UfwrTF7fhugQznXHQD1^Rb;13vd|tDBIL+ktqHRHROD}~FR};|UUv4JU*1`O -z)YX*SPrlzFjw*jKxBs3C3L4^+{Gg;ms7ZR1g|mi~EYDy_?kp8fw35=;+3_~MQm5@A -zvN}WUBMUsNhTk@bbZOIwKXg**%CkKx|EN*yUORGZzU}kyD6d!)`f!j<&78#%oeOsB -zl&>vg-}e|0C)Qb*zGw3G`t;#Nl}R#9A0u4O<#=-gwp;QhCM^=w>-V2_T2@YDg`Fm2 -zocFALwV@~X9JkEa>Z7*(*ck1&8!s{nJ{%SoHF{Ki&(dhFtGrQ@q5Q4rq~a`5+~|nQ -z+h<+VEDCB@DeyD0sGA)o{Jt#N-}_mcW5n&La*N)tHn9A1>AYN8OJe`SdiQ6=1%KCs -zkL@T^SL9Fw%A%x}W?ImmosyGn%qft$yiQDy9%v(-W;;M>t5GrXIC`&QO|w1It7C}V -zqMa2Cd7T9L8C)lYprfPN+`F|yhY61i*Ba_J?5x5>wFB<&hU8SAQT>$cH#q;pl>U)P8!~Ui)jF+rPeVm2cH?39jGsm{ESLxhZeP#Uq -z{7)0k9ho{YOT0hm%bO*u&MzGnvQO_>FniQa;W!)H)xoWU_~r*53D!JABWzOUtslrx -z3?Jc9xb7H#L+H+7v)9~9qKAFIcW3Rz2^qW?vxt>dod$so+d2byo09#PH3?VH7IKzP -zG5F}mSbxD|mdZ*`pEKj!ZL=HP%F0i8zq;Y&bzN$tkJ#^puX;hb<)FhVbLJ0UG%r-J -zeeO5UDw_g1_WT{Gj#kH?$6Lqm&$YPFBE$VW-`G4`bEBErqz5J;OAur2x;e9lZpKU( -zEN`{*rRmwv%n&%pJx*P`Ijen9`ajbazEobf;88@TZN1@3$LdAu%Qn69S$Zkv*pkWH -z8=a-TYB@QY2fD1Bc+Pc$+LW5qRbO7bFTC`!@_5KArz_Lz{42ZOO!7^8Ev*<MDK>4^{l=ETqjHs4=4i>GuOyt^*jw|@oxm*0@fyCysoAa7VhpE>q -zl+bTa3}4NBn(=8>6_$9Vx@5$s=db5YeOAHrFK_la{Wztfxh(Rs&LjFUk0QN?NyRII -z>Pnr5XqK?LTyBrqbuc$V`^lX-#;SSu7dzy9oxc0lk&UI=|Hi@Nj77A(B^&E54%<-tZZsm!MjE*o7!u6Q7GF4=oy7nhGL -zPj|Icxi0g0Q5xsq_G?$;sxm|`*f*ZIINp3WIX)APe{bK6G%R24pZ6D%`#bFQ*gC1D -zYU(pr|54Wr$`3V^YPs06)QgI39DZ$W_d12bQrv#Q}=ki -zaw4m9Rr}f5`B`hL&z;QkHDv?~Mh8B85VZc>ZWYyjI$u+d%}OXzjTuv4IAr$LkRxZ+ -z?_9jg4P(r_FezzS{ub3_UnBV>oZ()f{T -z*0+`OixQ`dOVtqHR^5}Bv|fA6VD9(p>(otXJGQp5zSLWunz2Orz>-;~G*Y$=<&=Io -zjIJnLt&E(yceX}$eP)!~Et!&_B$w1d?7F3Cr`x7it5`+9$tixZA;M2-V!>K}OW~~} -zh+;wB@=GCFd31NHq_oOU@quRBB&FXX7WlkZoBCw2^_Xi)V~wR#?lfOKb~KjB9&+(% -z&Fm^iww+mh%6i!K!qyW_)jPV- -zv4(P5%+MU(Fv4Vw{k{w3FR*(To%D=SmcDZ-err`#l8@CG-^kwdO?sl%oI!Kvf4cB-^~gzk`X$7z$s89yv~sWdyt{2{CY-m-%A$TR -zIqqY!g6*>BOQ@l?&E7qU&L3JeUP}-5w|0vt|Fosp<4t2qmFvPSaye5QlEW%3D9bZO -zWE8#SRL5>z?5XSC@pvRXVa5I%CvM1AWK(bI2V6b3NRFYhe}3>#iPpp8{Wh&l<=5mP -z4=PzZPGz3ew&*w5Kx6gs4FaD#6)b9)Ti5x*-~)F_&g9s!!;@%6YSJV9n%*6ZB7?nG@H~yl$41dZZ|Q_4XI9 -z27Go}_I+u?ocNjcts`VM^32?4mi_Y(yHj|2YJ`Ew`p3?rZv|XISFd~g{$6h2-Z{DhEDR(H>PCHL|B%Bwjf=Rn?#7!m9ocO+hi)I5%JN!qQT@ZmYpX1yGEJ(6JShub`MkEVtt{DA -zR2rQ(fET~m%l}l?caM&+IPben%2X#CPZ?fiCo;oR%uxJf6ri4O<;QY)H`tE&cH;yA?X=w?r(y@#?%*xA`6dE)q2Cj=) -zvfQd)w)@aCDLy(gRzEY@Mt!Hqxlg_d)1|AR3;^Pc;e04yuEdvPE>z?+cq}O-6Pstx8j2bWj;@4_d7M}@wFQn -zZP}lYTnF!qm3R85HY~t0)82l&7Q4>l`Os>WCpvRBm#+Kxwam)f`m+0yY00(^k7iK# -zW$C&v=T;v#nNhL3{8(}B%F@SeUrqfQR!k14{C3Va*5Zj<$sqepeB}FRbC6j-tWdGYoT*E^p!VC1Lqg6tl4HUid -zROr9U%P2~5<%*eMD;!VNDitd1l#?8ir<@-XE}L+v1=(p9!#G+pjQU}@pG;2I7Y_&L -z4c@*5gL(R^0{ms(bd{;CMoY)NU_A+Q^nE_}e#f=yz%7~09fMLcP2DbTdGz@4(fY&1 -zJ0lD#a&m2|KP)Ux_ia6q;ov(fS?0OrW&L>-isPPKkXN(Pmzw+8gdXNr?bdwjly9{? -zCtypng?&0c!+#M{@6GB4jy7(4E& -z;|`}QE9g1pl9S0rg`Dw~3D~l#^Ft4Ks?{4iRu;^;xz%AN8D*io|O!0ShuitC;=rz$+H9td$B%10GeG$CeDR98m5&{t8CNU#Osz0#Ih}ES -zQB``vZSLj5^}5NDh8s6NuZiCc7Kr>^GJqbIHx=}SK-m)U7o<)Ece>3j2vPuPT9 -z_ql1#%hhPwf#Y^vRmhxri@D{nqja^J4y{=X$Nyk8j>#l_kB#GW7TxmV-KK{N+sqd` -zp4?<(vL`RUGLBK4lRl@jxjybyTV=u7WE*Dk`3UO-kdgf`Ndux5oiTaO4Z*EnIG@snQ?CtD){vR`o#Ku7X`(sxJefKlu -z_@7tTc5GIVl^frmZLqT1LjU6(XW7f|g6vkc`Frc8Yk&N5gp-qkvbPJi$tF!6l$h~V -zDN1~O)ak0w>6e=gLOzB{R@7T&n%q_kUs9z#y(QE}y1^sDEXPJC=BXX~&MuWWs#q!A -z_=HBi=%ztsjzQ9G#S!UkR`PpJZXF=r^U&!&Mb5mOV;RutfeC9C-MgOdYMVvtVbiN4b-KXx&g_yX2~+Hc^QKmHID1R5S)_8U#I= -zp~TlMQ?I%eh;0>ST^nl5c0IMMbSLi5s%q -zF@2e-us+_AS6Qi|V>67YAK^MiP3PcD3j6uBcuM~y5oZy0-ecR2NW4ck>eYFykM%UgxpZ2{fvE%W_`_l^RzpveJ+CO98WykNA6Xj-} -zi85F}o~?OtimXcOFl~!TvK(QEWl+skTmPa@VHP5NPv^_Rg3j{!B{g+O$Nl8{FUq6D -z7xwg@nS*bG|G8L@b6xz28n`|L6uaom8( -zd(syUPp{uDlT=yc67jK#>z#9sXSqE)kO0+sgJ -zbrwd;z6-;idHW~dj&N*yzesNC7fXZHX>#W;9qyml5;yC<-cHT$!EpRjb5=~1iYg1B -zS!6Dil{@uJrXZ)0E?#$8+Gb$1(g52uq}XVy;@;@TO#9{5j_EUAh_r)3$^S3ahm?u(o(%xOIHF(cK+erYW>vn`QQX`pivH3e&TuEu2AH;H~d6 -zXvx%r;ek`0+|r+{dYZ~{xEZCp`_Yw2rT%aA`ca>2`oG>b>h#u=W12Z#qji?u)$p*k -z8ksa^t$N+Qks~xes%WpdI(FRks^MDS+$_ek -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 -zQO0)l47*O~u -z(RyPFUtYA{jKZgbj?~KI()YvuhW(iddJ8jFMJ-g($(r>GVTI-`qTKQL`9$=d=w%l* -z2iSaEgOxA1%W$UO$M2(VJLA;r|G0v@}uznMIhc@LTeao&b2B1+GcgzJq3RvH%x|S+*#biOceL^1#QZE9T5V*_!pMrJ>dW -z(L^Ugc`RdNrsJtusOfaf)C`+v<&$S-2^*i1deScv43!E8;(WEo`sm{x;#@JZdFX32!LDdJkeEB^YTpB&~V^JfaL_y64$Mk -z?soOMr(;F*uQda9>Pt8@ZQ1Yue>py6nG_`I0VIZj&ZQwy*^nxsq7Mb~qAKmx&F%t99oEe1SOO}6|Vux6-*E@oYyXF`}LlktWXtL4$~e6#`! -zXEx4_mVmHeI$DTv&A=f0jr2BwGV-{D1h|9*V!E4-amS+_TDL$+)M{)XYM+HIrla<` -zs0AIJi9W1XgUrq6VHSK*yA-l9mGbkwG}OB2CKQ=g9yZ??wXVhHPe!d@VDk-7>t~pY -z88+VzwXVSCFF~!#u*H_5tS;32J|-yg`H?@o2{V6&q?qZ_Fzd3?mz*38`wBSb7FeQ{ -zJ{aBB2Q~iyY}beu%(>PF3;*DQPB+EEn|#p8wrGI`SCEOB-%AyFY}1e!d(c^6M9=4;^PSL5u<0NvE(Z&u<1L7ex4=6d%tV-V77D&{QA;o{nF7hPPlA -z2A~n>I!%U{Y0%wEFWMy%t%x9)xC5}N72$+gm|=^pe!5qfx^6)i=jpicreG-_^s5i* -zw4iIQpaHWm1``s{&p*Y7w@3j=55#8E;j9=2JJp46*p67VM@t0q97zNG@dS{cS|H_O -zpw$la5}i%QXplqP27p0p(he2A9y4JBBMPJ{(7;S|@dU(NfELsb14$Z3_vTmBP8AIK -zCEe#QKt7eIi7wTU8p;5ipw1Oyx)Exgg<9~jEwF#YbOx?)X|O*QgQWiCMF|VLkE_<3D`@_Vmh`3&UuE} -zAud=1Un+uU*b$=%ZwQd=HMQo~LE3e}Y(aX7*plQU1*zD4mK<|)LGz}z_E5_`B4#vSSwF1!5$PCDJ!{mTcd`rb`8q2Wyi1{%Ew+s(lj4NPeyW(*94!FjzMPTkWe_)HE4bOSV{ -zHuT62=(z!6IFpVxU7MIB)Ne+i3QuS!FrA5)37&F^%+ -z@B_{nu#*^9S!_u~ZIm$^#vM9!cpn_=gEKH2+}qp?mfIpj3bH%rB25%Jo+6;>W-*F% -zOGKe8%2f)Vc9qU}Aqr)K&}9Ze*MwmfW}_@#MMZ_mj3Uf|5lfc`<%1&Q=Fr6psHlT7 -zBr<8;MCsoVWqwDL{fW30b_rmtLyoU}kuJIkdyKkX4wz2lU{=-(8sx&ZJADri%%4kU -zi`K9xeC;@67%%%;RjBy!oJ^*jn+N^}>jJ?X1(A5FQZ5#woS7Z#x`=2B4$ -z{G#NoxnU5Du#iUDRQYM8AVeTP_<~ItuJ6B&rY}GRkNt7N(9q -zMp73j8V>eVA-S=Ffgtz=r0E7 -zH@weIHsf;x6bl=j4(7jRILWdwS7pOn2)82oDSryy-Av4e1-xJUz(&7fYt_+vfI;UL%$OBNH-O_LL>UVK -z5>WziTy(8ETxkW6gD -zMy;DfYuKRMRdJFsnhm7KRW{;+?%j&dD@|B`Q5dKicr&ZnWW9@Zf!j&ctE^dn=N(Zm -zh;U&;Uo`n0(Zg$%aqlNu@}r06v2a(DWLON+Q6retwJd6cvQ`8OGgSu8ttsqbQwC~^ -z_b^vE9Zs--AvBw>g*m8;gMsN&2Obf&nhl)IfjvWyO^betM9;*3-~zL5!sMV)(meQK?6M%P7P)1?UFobq)C6ODn#qkF;W% -z{!Uu1P5)6^<9eheXu|Zd)tbMP*Yy7)ucwVa%gYx`k(3|uk_CeD?Ge;?AgD{kxDsX2 -zAWz{fs~5sT2}7`@@$U?QPvgHE0yuPNz!nIBAI6BAuiJZ8iL>DRrE&cB7H=MD*G21< -zDSUUh9{j=b)3?8}{0qM+Z~ui~3s!U%U|L|@FqDC>XW{BYFbOlS6}8jFz;8*+MpEvI -znRm7FfnO(P_7`>1k;EJ%r9`Y;qE&2|y*4+hG4VCf -zI^fM@!7$N!K1Bdm%=kt~6Ic`yxsj+6;6Y;eE*f0iMX$oQ=0IUPM!~D>_#P{lKSK&= -zSjbegqdoylC6EA@J3@J)xU16mdLn9u6dX2g6uc~&5W%>-hN;vaG&tYb@POkE+#q#0 -zmew1@nIV#CbVT4h&CHN0Z~)&lfvwoikS0E82y2*ThDZtKf^WKj3%;cV7T{Y(U=F@z -z1!mxzAut8sa)Q}nAp->D1&ZQzh`cC=VOWiR3C^s3^*jZe)mZWE!PJIkH+$B6DE1K$i`35N;93hB~;xi~jk+tFV|P=*Mq` -z%Lbo3x(Ss64fj?^jLd;QP>A8Xld;NFBqaxTOZMO*q*Hw)Q8Dp!SZpl}#>&C8cwu|t -zhAGB%)8g`_xIC20BSkgWu(;6*voV0VF?|1%$N=h{3%8}I=w2c}UL#!|7P|{)0WT1b -zl-Te=2N;7w=NR5Yc0uielAi!?gF86ETkmV6K^4?ut)d^MYWk1ggQeCXGAB4>0FPV)YCh(`)4GSx|7JhfgvP&KzZaX(dJ&we -z{|%>KU;jI&NE+N%fQu9)ss?(<@Tp-#ITSCk6;JMtPS^C$Vglut?4k|>+TV~&>E3+Z -zO8vEcw<&+!zQwP9*FNLdf6+d*|I|LdG~PC`WtXUfDwHLkRzUOi0Jm#YBY3E*%3q1WK<5qb$OzR~S)?+7(n$H{`*h}*jNhu{+!v572d-jZD}Ma>tl -znw9-t2D4{Gm+(EYFg9?ZoiGPg&QpK~fUnfse&(9u;x!V^yz^U%^xAUMQdbJTSQq3ji#bbsz4zff8q_+?*eIJ -z18%)8A{Z%JzW@=i(fsUsCT8D4&4D2$u>5ZrOwFcNqWO(7Vlx?OYK175@w@##HYp?g -zSE%%;_!Dus<24orm$Kon@WE%B9}t#_?gykFR~LrH!q8Y4QimaR7*d5HRTyHy5cpzI -z!QUJPz--``EZqE}|MJjU;-HS+Ny8sgelYbRV47_|j|z})BAGKjr}x_~tT{s>eQfj>@;z#k_+6{tXs9t<=Z -zXT1COrKUcvhGi*M5yz_I^Q#^`+%?Ar3 -zX77j`7-7R22UdI*4EQXIMK%C`a9xTf^gOuU0-X}^Cg_i#n^YBG7`lPzCQUrNP9BDJ -z6`E%aH?Gp<=Ran&S(q!n&P~KgEG(p#t>NN}++MaO3?!lonbZ&#Rj8~b -z#22|OKP_?@7y>Lh?tL^<30`e@TG^Px_)PdJECp?5NjH-@KenTKamf0W!|%`j -zg2Reuf6rm`TEJ0*$H3J7iN3nvwtz$VDZT4<;xxZ;mhqMm;;q+ -z`)s^%)uD7Z^0bQQ2Qn%Re3JvI(ft`Owi(kD!YJL!3U+!2NMemvmsTmRjbG_ -ze>LbLq=xf<32Te20Y9a%*d{nm8RhP;AI%g<3HGhG*0z++wnm@z1 -zK=c(rbZ|lS)A<7dsDp=Dzd%y>R2pVoQTmeeLBswT+?KGlM5}$U$qqhXKE?#KBko|% -z^*)$2kR~$($QC34a&*|^tI(KzYH^Ft{i55#mYIq@|(Fq4)@iXDdv^riF#r$_@xfNKe7mjb}eVqNh6}=1(m{lih)<;zkhR5ZH*NYpT`9FERt{@TBl}UABQC*d_T!EJhyAeBxW+A|A992^gT8RC=q-N9sL;&)?^?#!+a#>8~n+}e%-@15l|c2h+&I4 -z@Ie=gFG8z7PUwXtLYbhQ*mYw5n7mf(N=5hMn~>S~1hOBO4ATfnxr>G8V>cf&;GDoj -z&~hNFt@spjhnPYhMt0zHh+KAqY-Bb*iGZ5SSl^*_2U@(L1kXxm{FqLJYjD-qY9TrW -zwaz6r*Qi{+*rE$e2cV-xcfQX-t+U`DG`}ylltQh`#Ku(Ayoggm$OFs|n0XOA>ciz3 -znLiWS;0kV8S_g);lyw>4Ri4vI>bKAsP832jQ~;)l$@9UqQ3s#*O&*a4)EhqvWL^if -zJOZu81oarep~i#xN4RGGY(x7B!A>yvi2Vm#@8A(5GZqz2Pv%*M=DA3;-8U#@C&IUd -zb|ss%D46wqt!%MbKPt2`KQyJN)kH?3tum(_`kWM|3~Z3`IXIKf5T=+(SLVI -zt@@rnos3#P!!4+k$#`rPk0U`pYTZICs!`_(%w#fjQ$r2V@LJ4d4Qk#bX6u4gHRjwB -z=QLar>--Xi*u!I;UtyufXm}BJ4eo(pOV=4iLa!%SD!UPQQnlhJCHQy(KO^@HGv=c} -zi{ax#G#u!)5)Di};!RXMK`vU|xVYQ?)Y}N=Ho#W`aT{Q)D38|A0o#x#)zFGVdP4&a -zr5kE+DAQ1hL)nI63UQjcw><~k(`j+euMF5!B>Fw{_`>VsoL?F^Q6)$;EFg~FZyKG0 -zL_dOIGkNMXGY%C#gULstb0En|S8AFSOA3kRffXCT=l}!C=tW@C0Fy?dT?kADU@}Pb -z5(1M2m@E>#kiZxKV<6F11SSVCIV9SGz~seCV6?nINo=MoFUn&Wfi-JIut>a4k2Ws6 -zMH~YKX=L6Mp@&&NLv4eM%xkcbmzLHd(!CfLKyG>LK^Xb|*M8U%f} -z20_;(>5`EIy=f#t-#C(>JCpReB>m|KqMm6Zi1-mClp$fGIstE~6X`f4K5!TTTZa1)F -ziS&a8_Vg2^-&3I+WB0->R7iQL5aq$f0+A^0Q6}gC$^?CcGC@ByfS?No5Ol8r1iiIC -z0R#IJ@!bAIygo_K>_p9QVI?BHjv@hFm_2e$ -zP@qs2^ucHM!6)~@)tH2wzAF4o|Ii2LD-it7lgHnkp=c;i@T(?I@Zl{-=!qc-Wf(+! -zl`IjTE=#nVO~U0eM7@{Dd&2NW3CuT1n#i|`-cx@UnBzVB;P!oRZXeu$PVzw~$}c4E -z8^@7w9j!;MF5v4Sg>r0sFZ?XP$M(W!Q;2+g0@9b0(20Z#NN7ev0}_rWp*jhbNys1} -zbVa}rW8bbk2A(ykR)rS9tgZjkqTW!(`ij+ -z5#}8n_@}q|{diZ+O7E4P@XdPU?c$!7#r^Spe}8zZVBh!9{r;7Ne|SG#uXow~{DQjQ -zy<_lycvE8Um+Afa?Rmex*zU(W?>qwoeEfU`!R}B}-B+Z2fP>@;-yat!?5T<1vj-<$ -zTgVFx@bw1Ou5{;nF7K6?2eSV6_qk2&e$9`%o4j9ukB7Ub|G(a=hL_5KLxtm(RLXBZ -zmSD2GPbFaYz3T3}z<+bEn#UsY!#v7hLLWn+{HJ@>F#ic)tPJ}9`8{r+j1Yb>RJ7lh -z(H~4C6F}ywAwTEq{l1=myAy3Zgm@1SlTGBa8v5(|e!A~OI}Ii7LB9YHUW@5{Ct9l4 -zAAC3~P5JMipYLESO~bD*+bhHCgz!YmhG}4R1LhO3idHp1qT$%-fllb52Ve$(l%tCwsEeFi}qy -zPFT1l91t_f2-uX_!O1pdeh?~i@!3#W=E94mISV0K&e0Qtg!bgJ`;)meVTp(3sH2vu -z2)3%Fr!}t4ohn>{9(EP1BBougg5|`t+x0>kZX%lAb`>ljroFC$xhRbY1vE8D1+a2H -zPR#YLinj#(W&?O&!X&PBfRd|XTr&FCQ2%7~n<`xu4^q#Yu8N)1v%^*4qn_=qioa3M -zHdn>-)U(r7VWXa{u8Q>0=-J|`xQ=?9u8INrs+`oN*TU+J?DyX-Zw`8U(1_c4DKmi> -znCC4Lm6Kh*M6hsW564=h_H -zW24x8ov`_4;PJ%Te~I0(!sf;CcxqEGm6ydpvH8Y1K!ZncpnyAyc&^F78prk=p5K*o`;`tGc$4Fd?GC*2_{c=I*Fhe+mF|7f -z2+1@;5^>WzsnEh4b{&(5qOXs`YeSci+i&<#$nC@1&)#*=z -zY!uy2$$iZ2ixNK?n@I{5OXd#uXG6q~1+h*;<}VcYUvNLwG4y`qzDlFSp0UMuP+8SC -zNnWxi=6Z@%Su}`~g>fvN -z?A%p2QY{s`hZlb$8Q;cpxZHeC?p&OpB;#Q~E=e+;1t&o=?gmFE8FwMZIARUwf)}jc -z>BT$9f@2>J3$|8L*dExId`v1>%)5p1<#_A3C|`nM;m8L#jFH}!k7tfIcL-J4FY!~2 -z?W>=b?5&Og+qg)o;KjUgczeQwTVl!NoMh_64N)@?Cs8VF2l{*r?VWGJ?tNa7+Z$Jh -zcbxO`A^8{i0-zlrWoRvZo!DE6vCWnJqRJmbJuj)Cnk*7$5xWIQt@H+|U@5&-wbVkg -z3sy;{HvJ)p3mw(>GNcWkB}leb6l`pBtx@@Jf(MDV=`^JF7ha*_41Fa(f*Sv5@EV^E -zJhuO@G>I4=6*#z3DuTF;_0|6#Jf$9(Uj1&0Gc<{o&!A{fzequxyM^lP+!a72aeqH) -za(h)!e(__qSf_^a`N-AsEy=zz_72SRuQgxO*`-b2$hYEAGUkq%sA(oKcpdx3nx4VG -ziJ{*-C)UN$F&dFBS`2uriym|75)7xL!nV~>etSs6@1PBRrmcgvwhr3NmP+#%^L2Pl -zWET?mzfkh#!*OlL_x^dHl1a8TunR_Q~U -z33TJVq>J?(eH7isC%JPxxeKBLeFxH}$(Z+olOUOQgM$}wwJzwraynQR?<6@Lp9W`f -zT(XM&(YS{xj>fK+OS_(_jrP5kPYcG|J1X*Pc%iDc84y=89d{!B-$0k!>9z?nyr$1qH79L2Rq?1>9WFz;b!gq%KC0Rh>>j$TB8SV_^ -z=7o;TI4tvKHh%0cu9tu&rZ%TrX;6UCxRYu-P}NJ;W&qLj`<-r9*`Hz4n?FZFKC+E? -zT0SLB-?6#Q`Nqw)R*g+$@0FWtMWRr3@c&#B%}{@vCOYTaH&Hb-&|sq!s_LMbK&u=D -zjh439Y`MK8l3sGuzlM%{PT#$#GXikGYUP)!u3h=rSFZeQta(=HX0Mbr(U5hkWNIo_ -zr615Y0_VD^jZRE}&K6*)$Vs2`k~~ar^G8#6dw>zco>21TzyR`D_g|UVE&SCuEJ&ny -zzsw!-Bv(Tko4sP28gEZ+z8`tTW?-hI@{M;OPv11q=81`?odgrbspdF=l>{s*>X7~A -z$qV& -zZ;}I-Z*0Pf;*?p(KgJV-niTxQB*z*WRZFtu`XL9AH+`x@?fX3>CU&RTra*z^5vs{> -zuwM?e5%2(-^pgCgJLrAfvtR7dv -z>@JT35;_Cx-4|sS!LJJX5iS7#`v_F35&S;_C?3jmR)`%*K@C&Z@l?B%HAR{?0T${b -zLKHO}ll3&=iahDj!u<(cB8OMgwOkAr%SCfTxF{};({MUY&Bb#nZYald0{0kl-P$<- -z30#u4gc}w!7W}}WYhjfiTgxTH028cz3?LQ4Z?dfvEi6v884zxR_b}yZ7XZMDH+CyG -zJZ38R*8og`a1)mplL&rb%e50BybD}NK -zgz(35{XYUQ8p1!3>whhP0m8@R`d -zmFpkl42SaXm+QX-0O}#OL9TzKDLjt_ZbpmWivUp1vHy_k|AzoT=h#=|`hOMx=n#8C -zuKyncK)GV8z{T_=fLRc}B-j6ZfKeg!UkY$9ygwq>|C0bWL--HiVt$(eav}V=T>nJ? -zP;arX%k}>p!1p11POkrz0CzxmAGnwvEcdhp5bnQ5|9409|F^jC{{K-#|9>%}|2IeU -z|983Y{(t@&{r^Bj|Njja-v50O{r|Oy{(mZ>|HJ$g*8h91(f|J%(f@zNh4=seiRk|? -zNA&-{NA&+cbK(8}U)SjWe~akn(-qW`}X(f?Z_`af{7Vg3K&HTwUdi2naOF1-KyBl`c(BKrTCi2naR7vBH-uF?NJ -z5&i$yTzLQgG@}2%8qxnxM)dz`F1-JDU8DaWjp+aHaN+&`i-`XJMnwPrFrxo|z=ik! -z0WKkm=SD^G{P3tm?z$*GAu%e78y&@KMnq+D*GKUg2~lb;If_>$MUCT9qWIKdQL)^Z -zC|)}l7LX-yMtCOPAF@D;xsCbO88yV%M -z@t3Vwy=eKe#i{ftFx9$t)sny?cK9a0VP|_KoOR{O)Tb7$SSvqBU0IxpM}Uh~Jh3FT -zWbIRruUuXdNB|E4m58Z$gc`_fnN^8jykymqMb_{rx80Wd)UuM2Whizl*ciehfR -zhO5MLH~77USMUx-gg0R0h40iVrfc2DbCsQ=gYVlQtQ!*ypM>y@A>ktswuF5DR|r2B -z65b2peIemLLHKk?__q*#EhLOO(6d6q+aY{YNO%i`hlPYUK=>!g!Eh;tL&~=vb$HA8 -zqRwKNcPcYN!g#Z>VAUPC&?$KtMixR?hO3r}FW2NDO*);IiXy%d#~~ -z7SoSQZii+F!SH9;;ON7Ulx|;HjF$qwo4)Wn)9wvD*GBBGd9FP%e%fpHq$ES+Y*gE@9&u+%$Y#gBNBG3)L6Jj|E#Cv3XH& -z+}PoN0ClW1m5jnogsNwGr@Q4-wY^iU)lMgc?S8dn@60CE38@e{$&T9PiA0Lce2{g3%x -zauPB$oGKYh?5(H4EGW&Qqkj#f#)@nq;hp -zP+wp-@y?bVUAhE)4>_qn?<(ab^WKQ_;tI_WXLL@ct;?6m%Qx)x-TF?xDg6>TPfnr~ -zUikNOwf)Yy0uSy0xT=aIEjVh|+`GOO8@?9ZYOz;UdfITv7Q-L)?ZS?6v0^SyqlkSf -zVdHC%r;j_ -zg1(QOoK(1rm8L>72GE~w>jF9et{4Y5rX}-s*W^+B5f;tfNcLC6IHPlOX4$%EWluuA -z#kDStmT!{mhxu-`sh&UTe*_TX@t(G=NirYzt*6_4JN*SvrFmB+>YD*7?xCrhSnA1q -zBP3l|&wmK0`31?i1GiJl^^Iy{BRPp%hBTw%Nul)3 -z#r=*7}dxlCg7KgHYYVUkH3?>Yxo) -z*`97YO`#nI8PeeXTuoJ>(fZM!=bK5dWY-eGH500@ofPO?x_@Ez`bHqeC$q*wkqbNZ -z7bMeh!$EzsRM;fCqey{9G95OY(jO|@PY?f#5+FCp+({msLNcd`^=p`h0U4*eF2@OV -zo7fLShCY;NVEdr14I`rI4lv0~hR*HbDDr^$N&F7gv0a^^ygCy)7~9IJqq)lQ%qRur -zsZK|6m6;*o90<=32_wzMDid5dGxOc-kiffpf_%j{vP1Gs?#t~;WB1+A{Vwg>g=quC0<9(a^ay!%L8iBLk$>L?-edYUd -zbMK~i>bWhz^seH=`5TQ4csCe%=m>V{8~p-0o>3i(P!7v}PMV4P-|Ib@bh8_8sZoci -z63UX*=A&hVXgo;CO7l=!dNSGFvP`CWD3ji8^JJ#7&=lrOL&sG{Zzr(>xseoDnU95iNreErSs)gApx*5zR@7mbaYb%^`XDo(%z_ZBU3NAMj8E -zA}LqUF`dHr?|t+>rzrtxh}Sqb7}5pDFFCx=nKVUkAon5_YWLCmoM)K$p=UZP#H>`u -z0b7FP>_sCMvr;|N+0D&o>CMdz{nWI@1ZldWUnlJ5W;5~ZV^(0S2Gl(LY>FqBQdrjK -zpMJ?ZoQjckLY<7lMAoq*qlYJWrc=VAY-_N1*D4>?B=mcwd{lkBJzero`mP_l;%xyO&cN( -zq?X>SEEmQb6P(R0Z9J@F)=%>f_2jT7l|!2pQ!f>&Q>3f|*;IDrmzWN-{0g;5q9;ZH -zZVyv?A`8%4qQj$N6JAp_9hTyNW<$hhQTh0N_*Nx$$Jr7*Ds0wL9DH1ZK4RNTOkP(7 -zy&h}Y>6*C;ud>cuj<;ef*!9>qT{9QpZPuA{iKzzlUCrntrft&9Da6!H%x9&U)9}Q< -zS$bAO>|3RW6Nq`2$GDqP*<4HdfbH;W@qVuqP0owmHwc^m3-vo0w|_LPN(g>l#}c-bw;R$^8TU+wX-IBqNx>;3+ZP_VMqD^N_!W!`Qv3Y -z$3nQ2qWOyvgQJ-WXaZU%7$QAZHObRp_Bn|vYr50a>3r%us_RN{8ZWqg$xhS7%do+b -z%A2HMqaFmCF)}s+VsmTw{aHXQ<_f4KgrU}J9V%2EBzam&DUzq7C|;FB&vna4A&Tk8 -zlv}Vl376_Mf&;e_A!%|R2kr}~p*4eU#QFY#il!OHsex*KJn3rm6ONJ-WPLJP30RZn -zi5?P~pST`X7rdWzMcw(Ni=6Pb;FXaJq#y8QYVE`$xsibyAfOFy{&)y&_D_z%W<_lLJFkEg(#zhCB&+t29=9){ -z>^!||-6%NlJ|~bdC&LpxloC+1>!M{M3g!Pb9I+B;k8UTO(y9!{B^XL5$0p$#$CnCt -z8O{m07bSbGpw{i)H)1c!wJ)KUVb1DTW$?DW`YvLx6k(y6l-;*E5%1>XA}!H){t;IVHZR$ERUj!p@9gKS=g -zZ@z{;@_m7$Wv67Kx`fNH>I_Bwe_G;$v^VMNTtO*1I!KVd!;*K2{iUX(C6 -zi9<%|O<3NeiMV|83RNn($XUef4XMR5l6e&Bd9aXl(+m@Uv-ok1OnUk(iTW(e54JA~5PFu(jnDv(dk;o^K0=J_$-LQa#5xy0@b -z84_9`A2KgPnw^R~6L~O+s+dS0xKyvQ-pmFA990J!4px0hhXZn+^vbP@9Pvcs6&x5! -zG`1LW-bXd2sTq~C!QRGMHHLG=ZpnW3QZ5X% -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 -z%fQ2_1Pb?l3DofR)4lM -zQ-|^Nrvf$&vGzTLdk(K`jOSy(x -zU#1rbY&t1Md`^qjNVm -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 -zB`nr*pzZW+$(xD!ErGMP2EWq2P -zLg*_x$)*+eQIZPJ--Y+(qe+*z=2n$$>7M6m2QH=`OTR?>*CjV^jkAb*U&W!Fv*kAX -zvc%rhbzY13K@EM92EM)2_dW16QeVm*RJ)me$@SowvR=G6^_*Z4r@g?rX7E-&TX?U! -zmGrw_!I^@b_nw5A%k|0x7C49^Al0wDg5=wj5=U?5SUlyMP*=&oz#ddlf(B>trhoP+ -z;bpf_<%UW^S)LADl=*K6YcGbA!pr-Gsxz+XYVlAsv3H=-z)o^9{nAuZr|`l~BtZ2x -zCnlbmV>o9Q3@5Gs6B2)_&1=6-sNPY7BPoB8G+4-vedza_nY_V(Ek*1f^4uNpW?&PJ -zYW``V`A>x$8?0K(Ksk*C-{27FPo|&a*cWmChHB({9}8)590PQP@>#exz8hCM4M3KP -zSR~8DAX%P|{bpnt#m38TNDoZ)|9N`2U6gh3Ziks;4_+bK_aHVJ7z;PFk4F|E8&z|V -zLt>wL-3_kduTfQHVW&`)oClKywCOk20&KJ%tH=ooiNQV_X3`3C)CnB3*c^49^jpaD%BVG6%1I(!IBu0DNu_k$3d|)>D-Sh8Nx!ry -zbmaQXLS9iuE>t2&=v&Fu?kd{|JS)*maJ`5^0pz^z4BfFxqJl_ho^Kr!-uZnu5Vu|> -zBdYnofoK#WdQe7nAMNn=HtBiV#7$n;3uw|;sD>Iki>msB>VvVTWCSF0r|Th}m^;L7 -z-MVbR#5IQ}^OB@_fQPDL6UAe85*nLf4>d!=u#n7W1Bj55V(q^Wl_+vlp_&(RRTzn* -z$VAAc*1@FmZS%rO<#kqKIh#XDHl1beuW1o`AhQdkA4z=($b2G@Vf?zRZ=c~8#NKHk -z`&gb|;zXt)rcRcrXzzew|JT@Z-Pm1fjzM=Jjd(v;s1l(6KaV{F(Akf|%Ps!^B!%h& -zfKvl$C5M!fK=nU}c)>h0J4u>NXE6mYauKV)BuOfv)qn1a)lbZw{=`swmW7>xhMPNJ -z>JS`1qPu8q*m(ER^#w{W{GFP%^y0(U>Ehx%Iqj{Dr#hzS2VZLGWb(I*c*!)0v#yk$ -zXB?)e^pI`uK8Bsg(@>tcfQs`SAUZ|eCU8SevXE0~gy5IR{q@PjJhoR$- -zH1(%3b@HK*-%s{#3?^NJN#7?YePp15CcP13U{bZjyqB1EqDW<)Ch(Xv3tPtH74!!8 -z=VSSX=KhfOW!oj~cy}Svr*O9`=^jI!@IosN%=TSuzOdID>gkd)p}CC2fqQlCE8RBb)-vp -zJ`d;jk!*gKZ1tqaA4~e>J$=Fo%RZNEyJkBs2`_Z@2hKdC7in8D?{duq!~DqtYU{k-nu3=VJ^}ep}WTYpgY#0D5g>G&S!=d!Rrs-Bt@R)j)k81bV&7=v7!_ -zF{C&ty~<^J?Y@us$VG)-Etk>jBGBt%D7}pJP#hSMdOO7d=wp -zF0$jr1(&}dg{<48 -zf`6~8$R3&@?ZcG9l-A;aiqr{PP;&&1&rmIf{t$ZCAiWRC^sWUS{wUDF%WIl31p?7Zty$_KKK<^7-^lqf|-u;qH?{|UTr?7njy&D7cPM7Jun>EqN!&pfS -z{iG?B-sXC83h3P%pm!r-eJz6+8(A}j(MfpW2^4S{tO^uL!!VkqMWHoYrL;y%>^0I9 -zDMLeyyQMLt@J%U8gDv=irz|5*8B(VOe0c$1cEC3$;L8vA76g2AWuL^FK{+KqjKZP{ -z1xfh(r{U4S3vE1dz(P6leZ;;aePAoG!MNHe?WRMrP@VlJVE)#Ls$Ag13woj2A^e7M -z*Hl~ma~Z%BuSFDLB)&MQux4Gf1ZB}|C&ssVk5u@kP_6ls@J=_shmL^u9YVFWTBWwV -zExgmozxy^-%4ggK?Fv4&)#jA-BSy9j{%6w%!s_=M<8vE1eFcp8Zqg!DCjmB1{EHMD -zbLC)}zl5Z~iyW@<2OpqAO6^w3SR2OQTclNAiM9O}$0h5Rvn^y*zeVH#rQHu=zVLu~ -zL{GnC;JN)M3u1>zAK=93A4>TZ`1C$ZyAG3hRH$xgM9QRO&by#wY(QxmWd -z7GgCu;bL3H_oVnKAKT@c{Qc(7W;hN!_l1Q_6Cs@pLz8X4WZbT>4pWVtu!65&NSO@p -z>d$~T2-^=!MS1o{v4-xK3FWKRL3NfL&?18LaBjy6+*(N+&}4&9t$QXHSVuG)xPkWn -zHo){}TQ)+9m4bfyUM=FplX -zR}oJZBuNW^W11?}1UbTPt1TR7zg#V@{82JB{iEdZ -z)&kRM9N(iL-6Gk%v&;H%YoA;wjw2V`pT(5b(V)#M*?{oy9d6Rw@#G(docC131|*;M -z9@^yw)MH!Zyy(pg{RKnw`g}wfnCLl4(j2J%ApwL*Unt7tw6r~l^eJ2vYz+{4bf-U# -zwr5Ju)1)PYqF;%;ANk33& -zFm8~H!OG7FtNawD@)snzN&=L;fzeTa+Sv>%;s708`C~i%Dy6E$`qaRBgl_0=MI@zN -zm6YN-3(?KP%GpJq7A8o$a9D7rjD(>ogAN=&7}&6jjuE@Zcw%tlrhFIfyUZx-!PZh7 -z>-NQzxzQ_BZ5iT;qF*?1Y39exp6yi8pmPVLFvH-a^r3QrkN)rq`mIxm37T1!O00_} -z=HsNU2DgCrC>vajXpr?~NT5?}PSL<4(78|3f5fhZOx1FVC -zyN^p|uWQ=YeHfKq$swK4j9k`{{8XD(c)_E=n#+Gx`aUvYEvhnXk`fW -z_KeT1#yz*-d|>QAO))Q1&U1+H!rQDULiJ|c%R_50GO -zRSs!-Eo3trV@GzPPJRA-u*hFusmQ`QQ;i6mR*NSenUoE<0Sg!kUm)v9Q -zte}%(n}we4kw&3B0k0x;qtaV>{O5R;TBC`IiiTed{Iv2fR{jl%_{By1bl3RBU*k9Q -z-~0*x=8xkN5{C^NK0FD2Bj7hu{*97<$q~QN5x+6l_+596U&_DvyZ+z&(fW^yj=>to -z+EwaIp>2ZvOO$`Z5M;{}dgk<+cFi0~`jp72s`v -z(3$04jiu09gQa05<~s0^o6gj{$}O`~=`3fMWo60{ju6 -z7~lfH5P%ARnE(d?ZUOi$z>fev0~iDFQ-B`;oCdfL;5~q60D1wU0X6~T05kx658%H5 -zECBxi7zywSz&wBx0QUe?0jvhN1TYlfd4SmfM*waI_yfQSfX@ML0C*kXQGjy*4*=`~ -zSP#$-zyp*4WCFMW#sRzqun6EIfJA^70UiWs21o~Z7vO1t^YlKVmLmW&01g1?0e%Cp -z48R948sIg6M*vO%7y$MFtOe)+hyri`7ye*v%qd<`%hN-&&{Nb}0#^ce7Pzy(Jp}F{a3_H~3Eba- -z`#W%d4DOG?^@HmN_d0N|1NUd({tVn7g8M^o&wzUd+^OJB1^0b$-v{?uaGwRY58OU* -z@m6LGxSPS<3~nyCx!`)h^?-XbxHp6QYjA%J?vvm?3GS!hehTg=a7TgrD!8wLJ0INn -z;GP8cB)Ip2doQ@v;8ufM3T`R5UEp?sD}XD2`vSNxfLj1=0k}uOJqqp};NAi5JK(+p -z?n-c1g8K!yUw}In+_B)k0qz^%7J*v??uX!h2=4d6{XV!KfcpWs&w=|KxC7u0@OUjM -zhRXm*1$Yb~0bmY58o(-gV>X7%1DFV~6d)O30l*Z1H2@lbY=8*>ivf}V<^oIxumY$d -z1rcC6z8E>u!5Bkt@kT+Pj)Hz0 -z1${FL`d<|Eu_!1_6!euS`Zod~9^iTaHNbGHK_d#<3f{tvf;x-5VR-qEj{sE!s3SlV -z0Z|bUnyxA&4!(=#*xgN}2A;s9&>9**K$Zv3dGOvMs=P@BKz%qUYleDjGB|d3@iBl^ -z0JxxflVf&A+pbZr$Z|yD9UX#~f*V4t3`1mylR+m#ybObtHCj$XCzmZ*E>oIZmdE5W -z)XI@Je1`;po8h!EvC%`K;xsySylN;fT!9kb{HLIRbl7zx$L&P>W`G-7aKO~lAiQ-V -z`xZ4$DLHP_GdI+B*vK*5FYw+h{ND17=D06MLwH;;yfvAt)UtSQ?HU1mE`;T@Y50>- -z!T1<{U=&xG67oJB!ib*|{?W)_`WW6cg2`hRkAQf$u;;f!h20w;9)3f|Hm$x1~%#ALjpjIz6oWA022 -z=po~URevXhztjiAV<6lX626tymnKG`F<&>w -zWJ0lj{Z00#0)0@$BHn4ovV0=@v7F~+Khj`8{(cT1IYgE%-3s&{!?SO&o^F=?Scj8k -zKh}4q?8ml{FZ;1QAzj9**xlNDIn)K4Y^kTYeQef^Q<{i87Wbr-|-&k@MWd1?4<NGYK;G^+;2jE -z;Wi&5Wf8*V2(WB83~o`ec%fNR4= -zj$X~aT&LK}T-cp$_Wd5rZIVeVl{*iIzZW~Sk}*Me$EZVPkUyjP%CwR1>AUBYcPo}G -zLER7macHQ5C5xUyH5D9ZS+;yh>XPE(mBoR_G(c5FFz>PzB{qv?*%Ql_tgxm&wdARl -zki_HgWJz)01MCRUM;?c?Rxc?=T^}5k$ilK2bG<` -z6Cs6e`c$PVB=(skl#3ROR)PSFiIvHJsHOxAs4m*MOb$Z>| -zamhACwi!vqot)U!yLnq8-g$|EH{R9sJO427??dgQj#|Ok>3xhI+O=M#%Tr -z?@_G@rbW%VbHToE;DY))#&E&DKR(2-<3h&-r5E1G0do?nAVUrXJXE`d@^#RcwbBMJ -zt~d@%9()|Q=bkBnall4L@8WCPo&F}{z&jl4$LM~Sao{&xa2)uO|MvU?#>Y7SjNoqu -z8wV!Hga2F=8}kPn2b4AP|HW~@wE?C5!+O4!_WZYLr?AZk?MB;aFBkiHn-J(o<#^aT -z9(~WCpgdKp+pn@Fiv4}IA)nkB7Eh`5RWW -zfGu>T-CxHA+w_DGe>@l3*5#H)+wY*-V8T?nTvh+c725UWw8?>X{p2%GEMHl2ZF}nN -z_#%~s*Il75srn_Jxk|fM%Jog!wGtmI4f_#ok0I?^X_HgfI7Q`A0i~<9$?wRIGSwPF -z*_wm`;FxUjg}zU*nemea!AHjvzuT1fPr>HpSEmi7s -z@b%4=>NEZBdxG@|9Me_SH{WD@dOePfFX(=k@u@s6I6k%O7@zoU#wU!A^FpI8Jl#RZ -zr=iTv7MR|t(6*qo0o-3g{#JX1@?Py1x>kSziC*&XB0<=CB0@f{2ye}q+SAXVmh&kp -zs<0hxLwNrzGbBR!jZ`>BD{GARf{fq88EWd$4q<*q39Q2hp(t{11qIkKv<-Y9WM5j+D1XV -zch^EZ{O3OlXwd{(#J*zN5qO7v=so=BuLWG`yK2CNdj0?&tW5u}DBmLNJGH^xw4o=q -zbcDFSi9DL^cZID5#Xh63c@&P;eUk*o3cP{Rz@haz+E0gzb}uJ5b~Cck^tE{D6D_i% -zQJrZMypy00XW+u`#(rvM1od}g(y{?@ZyfSmDBtq3TY5Ah{a9HarfmJ*duWB>173yF -zFP)rV?5)A}{T{ZdvOX-gklhs9D;e7ywUE=AD3X)p&k?HJ?zZIEI%+6j8l9!804wi* -zq3!aVB(ZzIHWuxhLcTBIqsbGz5?Y&}O81!n2q3{wu-(s$>`}G+k%j@hb1^#Vx}Q9* -z36o6;m?)>F)BQTJkGI9h_2i)(L)m&ZxQ&p_m@5`YbC}ln9NHtLoP{tDju6)`_{yq9 -zJpEr`%aohz0_HGH@i`2m9Gnt4a?v*hDrYOU$&W+eM!Th@!Dw2cb##4XcYaT%-%^y2KtR-E&XNzF?s=+ -zB>DmL*gpB~5Am%@e%!;er<;u`cB9a)L)~7koVjRtaQ$4)I#SA+qh6n%xZkgvv|fAN -zqdN9ZGIn@q)j`&b#K>oh>(h9_@hjS*b<#X7-<#M9UEhg&+N66@G&v=nqGDNSQiB=# -zQ2Ls;y9X)G(CQtKi;GvDSU(EyK7s5n>pAcCT;6jijiq@y^?EH?uT4Bn=IMN>V$pF% -zAUL)wG^8Uaqte|xEd#_z+)rOS&agMm>u_%Y2EfZH%hNbX((K97yg?h)h{1|@h*OFf -zQmKjQk -zKU*W$;XyJ_D>iW?N2fn3o`HIdZAB|29ZZiJd2|k0pU;R3ll_kIlAI_f{>_ -zPyDEs>D_%u%g%%IWEZWVWByq&%>6W)@n-j7+21xKsOJ}TUA-gw-;534 -z3%OtRKc;49wCK-(yk3_5O+eQY*`E-_alcl+fpmVZc$&w!{aqpRo -zzQrt=qN0*ju=cfD@MIRBvqK{E6;rLY=)>47RuMZqqQ|+#Pb{)3v6S?!OO`KZU!srZ -zXt9(mv9f2(kG>@)(iqz$l;eF3a+H|8p>iHW -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 - #endif - -+#if defined __APPLE__ -+ #include -+#endif -+ - /* Linux NOW has these */ - #if !defined BIG_ENDIAN - #define BIG_ENDIAN 4321 - #endif - #if !defined LITTLE_ENDIAN - #define LITTLE_ENDIAN 1234 - #endif - -diff --git a/compiler/amxxpc/sclinux.h b/compiler/amxxpc/sclinux.h ---- a/compiler/amxxpc/sclinux.h -+++ b/compiler/amxxpc/sclinux.h -@@ -27,16 +27,20 @@ - - /* - * SC assumes that a computer is Little Endian unless told otherwise. It uses - * (and defines) the macros BYTE_ORDER and BIG_ENDIAN. - * For Linux, we must overrule these settings with those defined in glibc. - */ - #if !defined __BYTE_ORDER - # include -+# if defined __APPLE__ -+# include -+# define __BYTE_ORDER BYTE_ORDER -+# endif - #endif - - #if defined __OpenBSD__ || defined __FreeBSD__ - # define __BYTE_ORDER BYTE_ORDER - # define __LITTLE_ENDIAN LITTLE_ENDIAN - # define __BIG_ENDIAN BIG_ENDIAN - #endif - -diff --git a/compiler/libpc300/Makefile b/compiler/libpc300/Makefile ---- a/compiler/libpc300/Makefile -+++ b/compiler/libpc300/Makefile -@@ -1,46 +1,108 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing -fvisibility=hidden --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = amxxpc32 -+PROJECT = amxxpc32 -+OBJECTS = sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c scvars.c scmemfil.c scstate.c sclist.c sci18n.c \ -+ scexpand.c pawncc.c libpawnc.c prefix.c memfile.c - --OBJECTS = sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c scvars.c scmemfil.c \ -- scstate.c sclist.c sci18n.c scexpand.c pawncc.c libpawnc.c prefix.c \ -- memfile.c -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## -+ -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - - LINK = -lpthread - --INCLUDE = -I. -+INCLUDE = -I. - --BINARY = $(NAME).so --BIN_DIR = Release --CFLAGS += -DPAWN_CELL_SIZE=32 -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ - --CFLAGS += -DLINUX -DNDEBUG -DHAVE_STDINT_H -DENABLE_BINRELOC -DNO_MAIN -DPAWNC_DLL -static-libgcc -+OS := $(shell uname -s) - --CFLAGS += $(OPT_FLAGS) --OBJ_LINUX := $(OBJECTS:%.c=$(BIN_DIR)/%.o) -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ CFLAGS += -DLINUX -+ LINK += -shared -+endif -+ -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DENABLE_BINRELOC -DNO_MAIN -DPAWNC_DLL -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall \ -+ -Werror -+CPPFLAGS += -fexceptions -fno-rtti -+ -+BINARY = $(PROJECT).$(LIB_EXT) -+ -+ifeq "$(DEBUG)" "true" -+ BIN_DIR = Debug -+ CFLAGS += $(C_DEBUG_FLAGS) -+else -+ BIN_DIR = Release -+ CFLAGS += $(C_OPT_FLAGS) -+endif -+ -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") -+ -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif -+ -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.c=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.c -- $(CPP) $(INCLUDE) $(CFLAGS) -m32 -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< - - all: -- mkdir -p Release -- $(MAKE) pawn_make -+ mkdir -p $(BIN_DIR) -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --pawn_make: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) -m32 $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - - default: all - - clean: -- rm -rf Release/*.o -- rm -rf Release/$(BINARY) -+ rm -rf $(BIN_DIR)/*.o -+ rm -f $(BIN_DIR)/$(BINARY) - -diff --git a/compiler/libpc300/amx.h b/compiler/libpc300/amx.h ---- a/compiler/libpc300/amx.h -+++ b/compiler/libpc300/amx.h -@@ -28,27 +28,27 @@ - #define chdir _chdir - #define stricmp _stricmp - #endif - #endif - - #if defined FREEBSD && !defined __FreeBSD__ - #define __FreeBSD__ - #endif --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #endif - - #ifndef AMX_H_INCLUDED - #define AMX_H_INCLUDED - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -192,17 +192,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -420,17 +420,17 @@ int AMXAPI amx_UTF8Put(char *string, cha - #else - #error Unsupported cell size - #endif - - #define amx_RegisterFunc(amx, name, func) \ - amx_Register((amx), amx_NativeInfo((name),(func)), 1); - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack() /* reset default packing */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=reset - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - -diff --git a/compiler/libpc300/amxdbg.h b/compiler/libpc300/amxdbg.h ---- a/compiler/libpc300/amxdbg.h -+++ b/compiler/libpc300/amxdbg.h -@@ -44,17 +44,17 @@ extern "C" { - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -151,17 +151,17 @@ int AMXAPI dbg_GetLineAddress(AMX_DBG *a - int AMXAPI dbg_GetAutomatonName(AMX_DBG *amxdbg, int automaton, const char **name); - int AMXAPI dbg_GetStateName(AMX_DBG *amxdbg, int state, const char **name); - int AMXAPI dbg_GetTagName(AMX_DBG *amxdbg, int tag, const char **name); - int AMXAPI dbg_GetVariable(AMX_DBG *amxdbg, const char *symname, ucell scopeaddr, const AMX_DBG_SYMBOL **sym); - int AMXAPI dbg_GetArrayDim(AMX_DBG *amxdbg, const AMX_DBG_SYMBOL *sym, const AMX_DBG_SYMDIM **symdim); - - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack() /* reset default packing */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=reset - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - -diff --git a/compiler/libpc300/libpawnc.c b/compiler/libpc300/libpawnc.c ---- a/compiler/libpc300/libpawnc.c -+++ b/compiler/libpc300/libpawnc.c -@@ -25,28 +25,25 @@ - #include - #include - #include - #include - #include "sc.h" - - #if defined PAWNC_DLL - --#ifndef __linux__ -+#if !defined(__linux__) && !defined(__APPLE__) - #include "dllmain.c" - #endif - - # define MAX_ARGS 100 - # if !defined UNUSED_PARAM - # define UNUSED_PARAM(p) ((void)(p)) - # endif - -- static char *argv[MAX_ARGS]; -- static int argc; -- - #if PAWN_CELL_SIZE==32 - #define EXCOMPILER Compile32 - #else - #define EXCOMPILER Compile64 - #endif - - # if defined __WIN32__ || defined _WIN32 || defined WIN32 || defined __NT__ - __declspec (dllexport) -diff --git a/compiler/libpc300/memfile.c b/compiler/libpc300/memfile.c ---- a/compiler/libpc300/memfile.c -+++ b/compiler/libpc300/memfile.c -@@ -5,16 +5,17 @@ - memfile_t *memfile_creat(const char *name, size_t init) - { - memfile_t mf; - memfile_t *pmf; - - mf.size = init; - mf.base = (char *)malloc(init); - mf.usedoffs = 0; -+ mf.name = NULL; - if (!mf.base) - { - return NULL; - } - - mf.offs = 0; - mf._static = 0; - -diff --git a/compiler/libpc300/memfile.h b/compiler/libpc300/memfile.h ---- a/compiler/libpc300/memfile.h -+++ b/compiler/libpc300/memfile.h -@@ -4,17 +4,17 @@ - #ifdef _MSC_VER - // MSVC8 - replace POSIX functions with ISO C++ conformant ones as they are deprecated - #if _MSC_VER >= 1400 - #define strdup _strdup - #pragma warning(disable : 4996) - #endif - #endif - --#include -+#include - - typedef struct memfile_s - { - char *name; - char *base; - long offs; - long usedoffs; - size_t size; -diff --git a/compiler/libpc300/osdefs.h b/compiler/libpc300/osdefs.h ---- a/compiler/libpc300/osdefs.h -+++ b/compiler/libpc300/osdefs.h -@@ -36,16 +36,20 @@ - #endif - - #if defined __FreeBSD__ - #include - #elif defined LINUX - #include - #endif - -+#if defined __APPLE__ -+ #include -+#endif -+ - /* Linux NOW has these */ - #if !defined BIG_ENDIAN - #define BIG_ENDIAN 4321 - #endif - #if !defined LITTLE_ENDIAN - #define LITTLE_ENDIAN 1234 - #endif - -diff --git a/compiler/libpc300/sc.h b/compiler/libpc300/sc.h ---- a/compiler/libpc300/sc.h -+++ b/compiler/libpc300/sc.h -@@ -58,17 +58,17 @@ - #define sDIMEN_MAX 3 /* maximum number of array dimensions */ - #define sLINEMAX 511 /* input line length (in characters) */ - #define sCOMP_STACK 32 /* maximum nesting of #if .. #endif sections */ - #define sDEF_LITMAX 500 /* initial size of the literal pool, in "cells" */ - #define sDEF_AMXSTACK 4096 /* default stack size for AMX files */ - #define PREPROC_TERM '\x7f'/* termination character for preprocessor expressions (the "DEL" code) */ - #define sDEF_PREFIX "default.inc" /* default prefix filename */ - --#if defined WIN32 -+#if defined WIN32 || defined __clang__ - #define INVISIBLE - #else - #define INVISIBLE __attribute__((visibility("protected"))) - #endif - - typedef union { - void *pv; /* e.g. a name */ - int i; -diff --git a/compiler/libpc300/sc1.c b/compiler/libpc300/sc1.c ---- a/compiler/libpc300/sc1.c -+++ b/compiler/libpc300/sc1.c -@@ -30,19 +30,20 @@ - #include - #include - - #if defined __WIN32__ || defined _WIN32 || defined __MSDOS__ - #include - #include - #endif - --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #include /* from BinReloc, see www.autopackage.org */ -+ #include - #endif - - #if defined FORTIFY - #include "fortify.h" - #endif - - #if defined __BORLANDC__ || defined __WATCOMC__ - #include -@@ -416,17 +417,17 @@ int pc_compile(int argc, char *argv[]) - int retcode; - char incfname[_MAX_PATH]; - char reportname[_MAX_PATH]; - char codepage[MAXCODEPAGE+1]; - FILE *binf; - void *inpfmark; - int lcl_packstr,lcl_needsemicolon,lcl_tabsize; - #if !defined SC_LIGHT -- int hdrsize; -+ int hdrsize=0; - #endif - - /* set global variables to their initial value */ - binf=NULL; - initglobals(); - errorset(sRESET); - errorset(sEXPRRELEASE); - lexinit(); -@@ -1243,19 +1244,19 @@ static void setconfig(char *root) - #else - char path[_MAX_PATH]; - char *ptr,*base; - int len; - - /* add the default "include" directory */ - #if defined __WIN32__ || defined _WIN32 - GetModuleFileName(NULL,path,_MAX_PATH); -- #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+ #elif defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - /* see www.autopackage.org for the BinReloc module */ -- ptr = SELFPATH; -+ ptr = (char *)SELFPATH; - if (!ptr) - ptr = root; - strncpy(path,ptr,sizeof path); - #else - if (root!=NULL) - strncpy(path,root,sizeof path); /* path + filename (hopefully) */ - #endif - #if defined __MSDOS__ -@@ -1917,17 +1918,17 @@ static int declloc(int fstatic) - constvalue *enumroot; - cell val,size; - char *str; - value lval = {0}; - int cur_lit=0; - int dim[sDIMEN_MAX]; - int numdim; - int fconst; -- int staging_start; -+ int staging_start=0; - - fconst=matchtoken(tCONST); - do { - ident=iVARIABLE; - size=1; - numdim=0; /* no dimensions */ - tag=pc_addtag(NULL); - if (lex(&val,&str)!=tSYMBOL) /* read in (new) token */ -@@ -1943,17 +1944,17 @@ static int declloc(int fstatic) - */ - if ((sym=findloc(name))!=NULL && sym->compound==nestlevel) - error(21,name); /* symbol already defined */ - /* Although valid, a local variable whose name is equal to that - * of a global variable or to that of a local variable at a lower - * level might indicate a bug. - * NOTE - don't bother with the error if there's no valid function! - */ -- if ((sym=findloc(name))!=NULL && sym->compound!=nestlevel || findglb(name)!=NULL) -+ if (((sym=findloc(name))!=NULL && sym->compound!=nestlevel) || findglb(name)!=NULL) - if (curfunc!=NULL && (curfunc->usage & uNATIVE)) - error(219,name); /* variable shadows another symbol */ - while (matchtoken('[')){ - ident=iARRAY; - if (numdim == sDIMEN_MAX) { - error(53); /* exceeding maximum number of dimensions */ - return ident; - } /* if */ -@@ -2858,17 +2859,17 @@ static int operatoradjust(int opertok,sy - if (count!=1 && count!=2) - error(62); /* number or placement of the operands does not fit the operator */ - break; - default: - if (count!=2) - error(62); /* number or placement of the operands does not fit the operator */ - } /* switch */ - -- if (tags[0]==0 && (opertok!='=' && tags[1]==0 || opertok=='=' && resulttag==0)) -+ if (tags[0]==0 && ((opertok!='=' && tags[1]==0) || (opertok=='=' && resulttag==0))) - error(64); /* cannot change predefined operators */ - - /* change the operator name */ - assert(strlen(opername)>0); - operator_symname(tmpname,opername,tags[0],tags[1],count,resulttag); - if ((oldsym=findglb(tmpname))!=NULL) { - int i; - if ((oldsym->usage & uDEFINE)!=0) { -@@ -3040,17 +3041,17 @@ static void funcstub(int native) - if (size > INT_MAX) - error(105); /* overflow, exceeding capacity */ - #endif - dim[numdim++]=(int)size; - } /* while */ - - tok=lex(&val,&str); - if (native) { -- if (tok==tPUBLIC || tok==tSTOCK || tok==tSTATIC || tok==tSYMBOL && *str==PUBLIC_CHAR) -+ if (tok==tPUBLIC || tok==tSTOCK || tok==tSTATIC || (tok==tSYMBOL && *str==PUBLIC_CHAR)) - error(42); /* invalid combination of class specifiers */ - } else { - if (tok==tPUBLIC || tok==tSTOCK || tok==tSTATIC) - tok=lex(&val,&str); - } /* if */ - - if (tok==tOPERATOR) { - opertok=operatorname(symbolname); -@@ -3161,17 +3162,17 @@ static int newfunc(char *firstname,int f - if (firstname!=NULL) { - assert(strlen(firstname)<=sNAMEMAX); - strcpy(symbolname,firstname); /* save symbol name */ - tag=firsttag; - } else { - tag= (firsttag>=0) ? firsttag : pc_addtag(NULL); - tok=lex(&val,&str); - assert(!fpublic); -- if (tok==tNATIVE || tok==tPUBLIC && stock) -+ if (tok==tNATIVE || (tok==tPUBLIC && stock)) - error(42); /* invalid combination of class specifiers */ - if (tok==tOPERATOR) { - opertok=operatorname(symbolname); - if (opertok==0) - return TRUE; /* error message already given */ - check_operatortag(opertok,tag,symbolname); - } else { - if (tok!=tSYMBOL && freading) { -@@ -3507,17 +3508,17 @@ static int declargs(symbol *sym) - error(25); /* function definition does not match prototype */ - } /* if */ - argcnt++; - break; - default: - error(10); /* illegal function or declaration */ - } /* switch */ - } while (tok=='&' || tok==tLABEL || tok==tCONST -- || tok!=tELLIPS && matchtoken(',')); /* more? */ -+ || (tok!=tELLIPS && matchtoken(','))); /* more? */ - /* if the next token is not ",", it should be ")" */ - needtoken(')'); - } /* if */ - /* resolve any "sizeof" arguments (now that all arguments are known) */ - assert(sym->dim.arglist!=NULL); - arglist=sym->dim.arglist; - for (idx=0; idxparent!=NULL) - continue; /* hierarchical data type */ - assert(sym->ident==iCONSTEXPR || sym->ident==iVARIABLE - || sym->ident==iARRAY || sym->ident==iFUNCTN); - if (sym->ident!=iCONSTEXPR || (sym->usage & uENUMROOT)==0) - continue; - if ((sym->usage & uREAD)==0) - continue; -- fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name),sym->addr); -+ fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name),(long)sym->addr); - if (sym->tag!=0) { - tagsym=find_tag_byval(sym->tag); - assert(tagsym!=NULL); - fprintf(log,"\t\t\t\n",tagsym->name); - } /* if */ - /* browse through all fields */ - if ((enumroot=sym->dim.enumlist)!=NULL) { - enumroot=enumroot->next; /* skip root */ - while (enumroot!=NULL) { -- fprintf(log,"\t\t\t\n",funcdisplayname(symname,enumroot->name),enumroot->value); -+ fprintf(log,"\t\t\t\n",funcdisplayname(symname,enumroot->name),(long)enumroot->value); - /* find the constant with this name and get the tag */ - ref=findglb(enumroot->name); - if (ref!=NULL) { - if (ref->x.idxtag!=0) { - tagsym=find_tag_byval(ref->x.idxtag); - assert(tagsym!=NULL); - fprintf(log,"\t\t\t\t\n",tagsym->name); - } /* if */ -@@ -3914,17 +3915,17 @@ static void make_report(symbol *root,FIL - if (sym->parent!=NULL) - continue; /* hierarchical data type */ - assert(sym->ident==iCONSTEXPR || sym->ident==iVARIABLE - || sym->ident==iARRAY || sym->ident==iFUNCTN); - if (sym->ident!=iCONSTEXPR) - continue; - if ((sym->usage & uREAD)==0 || (sym->usage & (uENUMFIELD | uENUMROOT))!=0) - continue; -- fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name),sym->addr); -+ fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name),(long)sym->addr); - if (sym->tag!=0) { - tagsym=find_tag_byval(sym->tag); - assert(tagsym!=NULL); - fprintf(log,"\t\t\t\n",tagsym->name); - } /* if */ - assert(sym->refer!=NULL); - for (i=0; inumrefers; i++) { - if ((ref=sym->refer[i])!=NULL) -@@ -4034,17 +4035,17 @@ static void make_report(symbol *root,FIL - if (ref->refer[i]==sym) - fprintf(log,"\t\t\t\n",xmlencode(symname,funcdisplayname(symname,ref->name))); - } /* for */ - /* print parameter list, with tag & const information, plus descriptions */ - assert(sym->dim.arglist!=NULL); - for (arg=0; sym->dim.arglist[arg].ident!=0; arg++) { - int dim,paraminfo; - char *outer_start,*inner_start; -- int outer_length,inner_length; -+ int outer_length=0,inner_length=0; - if (sym->dim.arglist[arg].ident==iVARARGS) - fprintf(log,"\t\t\t\n"); - else - fprintf(log,"\t\t\t\n",sym->dim.arglist[arg].name); - /* print the tag name(s) for each parameter */ - assert(sym->dim.arglist[arg].numtags>0); - assert(sym->dim.arglist[arg].tags!=NULL); - paraminfo=(sym->dim.arglist[arg].numtags>1 || sym->dim.arglist[arg].tags[0]!=0) -@@ -5243,26 +5244,26 @@ static void doreturn(void) - ident=doexpr(TRUE,FALSE,TRUE,TRUE,&tag,&sym,TRUE); - needtoken(tTERM); - /* see if this function already has a sub type (an array attached) */ - sub=finddepend(curfunc); - assert(sub==NULL || sub->ident==iREFARRAY); - if ((rettype & uRETVALUE)!=0) { - int retarray=(ident==iARRAY || ident==iREFARRAY); - /* there was an earlier "return" statement in this function */ -- if (sub==NULL && retarray || sub!=NULL && !retarray) -+ if ((sub==NULL && retarray) || (sub!=NULL && !retarray)) - error(79); /* mixing "return array;" and "return value;" */ - } /* if */ - rettype|=uRETVALUE; /* function returns a value */ - /* check tagname with function tagname */ - assert(curfunc!=NULL); - if (!matchtag(curfunc->tag,tag,TRUE)) - error(213); /* tagname mismatch */ - if (ident==iARRAY || ident==iREFARRAY) { -- int dim[sDIMEN_MAX],numdim; -+ int dim[sDIMEN_MAX],numdim=0; - cell arraysize; - assert(sym!=NULL); - if (sub!=NULL) { - assert(sub->ident==iREFARRAY); - /* this function has an array attached already; check that the current - * "return" statement returns exactly the same array - */ - level=sym->dim.array.level; -diff --git a/compiler/libpc300/sc2.c b/compiler/libpc300/sc2.c ---- a/compiler/libpc300/sc2.c -+++ b/compiler/libpc300/sc2.c -@@ -22,17 +22,17 @@ - */ - #include - #include - #include - #include - #include - #include - #include "sc.h" --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #endif - - #if defined FORTIFY - #include "fortify.h" - #endif - - /* flags for litchar() */ -@@ -193,17 +193,17 @@ SC_FUNC int plungefile(char *name,int tr - - if (try_includepaths && name[0]!=DIRSEP_CHAR) { - int i; - char *ptr; - for (i=0; !result && (ptr=get_path(i))!=NULL; i++) { - char path[_MAX_PATH]; - strncpy(path,ptr,sizeof path); - path[sizeof path - 1]='\0'; /* force '\0' termination */ -- strncat(path,name,sizeof(path)-strlen(path)); -+ strncat(path,name,sizeof(path) - strlen(path) - 1); - path[sizeof path - 1]='\0'; - result=plungequalifiedfile(path); - } /* while */ - } /* if */ - return result; - } - - static void check_empty(const unsigned char *lptr) -@@ -403,17 +403,17 @@ static void stripcom(unsigned char *line - *(line+1)=' '; - line+=2; - } else { - if (*line=='/' && *(line+1)=='*') - error(216); /* nested comment */ - #if !defined SC_LIGHT - /* collect the comment characters in a string */ - if (icomment==2) { -- if (skipstar && (*line!='\0' && *line<=' ' || *line=='*')) { -+ if (skipstar && ((*line!='\0' && *line<=' ') || *line=='*')) { - /* ignore leading whitespace and '*' characters */ - } else if (commentidxCOMMENT_LIMIT && *line!='\0' && *line<=' ') { - comment[commentidx]='\0'; - insert_docstring(comment); - commentidx=0; - } /* if */ -@@ -580,32 +580,19 @@ static int htoi(cell *val,const unsigned - } /* if */ - if (alphanum(*ptr)) - return 0; - else - return (int)(ptr-curptr); - } - - #if defined __GNUC__ --static double pow10(int value) -+static double pow10(double d) - { -- double res=1.0; -- while (value>=4) { -- res*=10000.0; -- value-=5; -- } /* while */ -- while (value>=2) { -- res*=100.0; -- value-=2; -- } /* while */ -- while (value>=1) { -- res*=10.0; -- value-=1; -- } /* while */ -- return res; -+ return pow(10, d); - } - #endif - - /* ftoi - * - * Attempts to interpret a numeric symbol as a rational number, either as - * IEEE 754 single/double precision floating point or as a fixed point integer. - * On success it returns the number of characters processed and the value is -@@ -1205,17 +1192,17 @@ static int command(void) - case tRATIONAL: - outval(val,FALSE); - code_idx+=opargs(1); - break; - case tSYMBOL: - sym=findloc(str); - if (sym==NULL) - sym=findglb(str); -- if (sym==NULL || sym->ident!=iFUNCTN && sym->ident!=iREFFUNC && (sym->usage & uDEFINE)==0) { -+ if (sym==NULL || (sym->ident!=iFUNCTN && sym->ident!=iREFFUNC && (sym->usage & uDEFINE)==0)) { - error(17,str); /* undefined symbol */ - } else { - outval(sym->addr,FALSE); - /* mark symbol as "used", unknown whether for read or write */ - markusage(sym,uREAD | uWRITTEN); - code_idx+=opargs(1); - } /* if */ - break; -@@ -1639,17 +1626,17 @@ static void substallpatterns(unsigned ch - start++; /* skip non-alphapetic character (or closing quote of a string) */ - } /* while */ - if (*start=='\0') - break; /* abort loop on error */ - /* if matching the operator "defined", skip it plus the symbol behind it */ - if (strncmp((char*)start,"defined",7)==0 && !isalpha((char)*(start+7))) { - start+=7; /* skip "defined" */ - /* skip white space & parantheses */ -- while (*start<=' ' && *start!='\0' || *start=='(') -+ while ((*start<=' ' && *start!='\0') || *start=='(') - start++; - /* skip the symbol behind it */ - while (isalpha(*start) || isdigit(*start) || *start=='_') - start++; - /* drop back into the main loop */ - continue; - } /* if */ - /* get the prefix (length), look for a matching definition */ -@@ -1941,32 +1928,32 @@ SC_FUNC int lex(cell *lexvalue,char **le - } else if (find_constval(&tagname_tab,_lexstr,0)!=NULL) { - /* this looks like a tag override (because a tag with this name - * exists), but tags are not allowed right now, so it is probably an - * error - */ - error(220); - } /* if */ - } /* if */ -- } else if (*lptr=='\"' || *lptr==sc_ctrlchar && *(lptr+1)=='\"') -+ } else if (*lptr=='\"' || (*lptr==sc_ctrlchar && *(lptr+1)=='\"')) - { /* unpacked string literal */ - _lextok=tSTRING; - stringflags= (*lptr==sc_ctrlchar) ? RAWMODE : 0; - *lexvalue=_lexval=litidx; - lptr+=1; /* skip double quote */ - if ((stringflags & RAWMODE)!=0) - lptr+=1; /* skip "escape" character too */ - lptr=sc_packstr ? packedstring(lptr,stringflags) : unpackedstring(lptr,stringflags); - if (*lptr=='\"') - lptr+=1; /* skip final quote */ - else - error(37); /* invalid (non-terminated) string */ -- } else if (*lptr=='!' && *(lptr+1)=='\"' -- || *lptr=='!' && *(lptr+1)==sc_ctrlchar && *(lptr+2)=='\"' -- || *lptr==sc_ctrlchar && *(lptr+1)=='!' && *(lptr+2)=='\"') -+ } else if ((*lptr=='!' && *(lptr+1)=='\"') -+ || (*lptr=='!' && *(lptr+1)==sc_ctrlchar && *(lptr+2)=='\"') -+ || (*lptr==sc_ctrlchar && *(lptr+1)=='!' && *(lptr+2)=='\"')) - { /* packed string literal */ - _lextok=tSTRING; - stringflags= (*lptr==sc_ctrlchar || *(lptr+1)==sc_ctrlchar) ? RAWMODE : 0; - *lexvalue=_lexval=litidx; - lptr+=2; /* skip exclamation point and double quote */ - if ((stringflags & RAWMODE)!=0) - lptr+=1; /* skip "escape" character too */ - lptr=sc_packstr ? unpackedstring(lptr,stringflags) : packedstring(lptr,stringflags); -@@ -2048,17 +2035,17 @@ SC_FUNC void lexclr(int clreol) - */ - SC_FUNC int matchtoken(int token) - { - cell val; - char *str; - int tok; - - tok=lex(&val,&str); -- if (tok==token || token==tTERM && (tok==';' || tok==tENDEXPR)) { -+ if (tok==token || (token==tTERM && (tok==';' || tok==tENDEXPR))) { - return 1; - } else if (!sc_needsemicolon && token==tTERM && (_lexnewline || !freading)) { - /* Push "tok" back, because it is the token following the implicit statement - * termination (newline) token. - */ - lexpush(); - return 2; - } else { -@@ -2413,17 +2400,17 @@ SC_FUNC void delete_symbol(symbol *root, - root->next=sym->next; - free_symbol(sym); - } - - SC_FUNC void delete_symbols(symbol *root,int level,int delete_labels,int delete_functions) - { - symbol *sym,*parent_sym; - constvalue *stateptr; -- int mustdelete; -+ int mustdelete=0; - - /* erase only the symbols with a deeper nesting level than the - * specified nesting level */ - while (root->next!=NULL) { - sym=root->next; - if (sym->compoundident) { -diff --git a/compiler/libpc300/sc3.c b/compiler/libpc300/sc3.c ---- a/compiler/libpc300/sc3.c -+++ b/compiler/libpc300/sc3.c -@@ -924,17 +924,17 @@ static int hier14(value *lval1) - if (val<0) { - val=-val; - if (lval3.sym->x.idxtag==0) - exactmatch=FALSE; - } /* if */ - } /* if */ - if (lval3.sym->dim.array.level!=level) - return error(48); /* array dimensions must match */ -- else if (ltlengthval || val==0) -+ else if (ltlengthval) || val==0) - return error(47); /* array sizes must match */ - else if (lval3.ident!=iARRAYCELL && !matchtag(lval3.sym->x.idxtag,idxtag,TRUE)) - error(229,(lval2.sym!=NULL) ? lval2.sym->name : lval3.sym->name); /* index tag mismatch */ - if (level>0) { - /* check the sizes of all sublevels too */ - symbol *sym1 = lval3.sym; - symbol *sym2 = lval2.sym; - int i; -@@ -1119,17 +1119,17 @@ static int hier3(value *lval) - } - - static int hier2(value *lval) - { - int lvalue,tok; - int tag,paranthese; - cell val; - char *st; -- symbol *sym; -+ symbol *sym=NULL; - int saveresult; - - tok=lex(&val,&st); - switch (tok) { - case tINC: /* ++lval */ - if (!hier2(lval)) - return error(22); /* must be lvalue */ - assert(lval->sym!=NULL); -@@ -1242,17 +1242,17 @@ static int hier2(value *lval) - error(72); /* "function" symbol has no size */ - else if ((sym->usage & uDEFINE)==0) - return error(17,st); /* undefined symbol (symbol is in the table, but it is "used" only) */ - clear_value(lval); - lval->ident=iCONSTEXPR; - lval->constval=1; /* preset */ - if (sym->ident==iARRAY || sym->ident==iREFARRAY) { - int level; -- symbol *idxsym; -+ symbol *idxsym=NULL; - for (level=0; matchtoken('['); level++) { - idxsym=NULL; - if (level==sym->dim.array.level && matchtoken(tSYMBOL)) { - char *idxname; - tokeninfo(&val,&idxname); - if ((idxsym=findconst(idxname))==NULL) - error(80,idxname); /* unknown symbol, or non-constant */ - } /* if */ -@@ -1288,17 +1288,17 @@ static int hier2(value *lval) - if (sym==NULL) - return error(17,st); /* undefined symbol */ - if ((sym->usage & uDEFINE)==0) - return error(17,st); /* undefined symbol (symbol is in the table, but it is "used" only) */ - tag=sym->tag; - } /* if */ - if (sym->ident==iARRAY || sym->ident==iREFARRAY) { - int level; -- symbol *idxsym; -+ symbol *idxsym=NULL; - for (level=0; matchtoken('['); level++) { - idxsym=NULL; - if (level==sym->dim.array.level && matchtoken(tSYMBOL)) { - char *idxname; - tokeninfo(&val,&idxname); - if ((idxsym=findconst(idxname))==NULL) - error(80,idxname); /* unknown symbol, or non-constant */ - } /* if */ -@@ -1457,35 +1457,35 @@ restart: - if (lval2.ident==iCONSTEXPR) { /* constant expression */ - stgdel(index,cidx); /* scratch generated code */ - if (lval1->arrayidx!=NULL) { /* keep constant index, for checking */ - assert(sym->dim.array.level>=0 && sym->dim.array.levelarrayidx[sym->dim.array.level]=lval2.constval; - } /* if */ - if (close==']') { - /* normal array index */ -- if (lval2.constval<0 || sym->dim.array.length!=0 && sym->dim.array.length<=lval2.constval) -+ if (lval2.constval<0 || (sym->dim.array.length!=0 && sym->dim.array.length<=lval2.constval)) - error(32,sym->name); /* array index out of bounds */ - if (lval2.constval!=0) { - /* don't add offsets for zero subscripts */ - #if PAWN_CELL_SIZE==16 - ldconst(lval2.constval<<1,sALT); - #elif PAWN_CELL_SIZE==32 - ldconst(lval2.constval<<2,sALT); - #elif PAWN_CELL_SIZE==64 - ldconst(lval2.constval<<3,sALT); - #else - #error Unsupported cell size - #endif - ob_add(); - } /* if */ - } else { - /* character index */ -- if (lval2.constval<0 || sym->dim.array.length!=0 -- && sym->dim.array.length*((8*sizeof(cell))/sCHARBITS)<=(ucell)lval2.constval) -+ if (lval2.constval<0 || (sym->dim.array.length!=0 -+ && sym->dim.array.length*((8*sizeof(cell))/sCHARBITS)<=(ucell)lval2.constval)) - error(32,sym->name); /* array index out of bounds */ - if (lval2.constval!=0) { - /* don't add offsets for zero subscripts */ - #if sCHARBITS==16 - ldconst(lval2.constval<<1,sALT);/* 16-bit character */ - #else - ldconst(lval2.constval,sALT); /* 8-bit character */ - #endif -@@ -2030,18 +2030,18 @@ static int nesting=0; - if (lval.ident==iARRAYCELL) { - error(47); /* array sizes must match */ - } else { - assert(lval.constval!=0); /* literal array must have a size */ - /* A literal array must have exactly the same size as the - * function argument; a literal string may be smaller than - * the function argument. - */ -- if (lval.constval>0 && arg[argidx].dim[0]!=lval.constval -- || lval.constval<0 && arg[argidx].dim[0] < -lval.constval) -+ if ((lval.constval>0 && arg[argidx].dim[0]!=lval.constval) -+ || (lval.constval<0 && arg[argidx].dim[0] < -lval.constval)) - error(47); /* array sizes must match */ - } /* if */ - } /* if */ - if (lval.ident!=iARRAYCELL) { - /* save array size, for default values with uSIZEOF flag */ - cell array_sz=lval.constval; - assert(array_sz!=0);/* literal array must have a size */ - if (array_sz<0) -diff --git a/compiler/libpc300/sc4.c b/compiler/libpc300/sc4.c ---- a/compiler/libpc300/sc4.c -+++ b/compiler/libpc300/sc4.c -@@ -230,17 +230,17 @@ SC_FUNC void begdseg(void) - stgwrite("DATA\t; "); - outval(glb_declared-litidx,TRUE); - curseg=sIN_DSEG; - } /* if */ - } - - SC_FUNC void setline(int chkbounds) - { -- if ((sc_debug & sSYMBOLIC)!=0 || chkbounds && (sc_debug & sCHKBOUNDS)!=0) { -+ if ((sc_debug & sSYMBOLIC)!=0 || (chkbounds && (sc_debug & sCHKBOUNDS)!=0)) { - /* generate a "break" (start statement) opcode rather than a "line" opcode - * because earlier versions of Small/Pawn have an incompatible version of the - * line opcode - */ - stgwrite("\tbreak\t; "); - outval(code_idx,TRUE); - code_idx+=opcodes(1); - } /* if */ -@@ -714,17 +714,17 @@ SC_FUNC void ffcall(symbol *sym,const ch - stgwrite("\tcall "); - if (label!=NULL) { - stgwrite("l."); - stgwrite(label); - } else { - stgwrite(sym->name); - } /* if */ - if (sc_asmfile -- && (label!=NULL || !isalpha(sym->name[0]) && sym->name[0]!='_' && sym->name[0]!=sc_ctrlchar)) -+ && (label!=NULL || (!isalpha(sym->name[0]) && sym->name[0]!='_' && sym->name[0]!=sc_ctrlchar))) - { - stgwrite("\t; "); - stgwrite(symname); - } /* if */ - stgwrite("\n"); - code_idx+=opcodes(1)+opargs(1); - } /* if */ - } -diff --git a/compiler/libpc300/sc5.c b/compiler/libpc300/sc5.c ---- a/compiler/libpc300/sc5.c -+++ b/compiler/libpc300/sc5.c -@@ -20,17 +20,17 @@ - * 3. This notice may not be removed or altered from any source distribution. - * - * Version: $Id: sc5.c 1724 2005-07-24 20:00:55Z dvander $ - */ - #include - #if defined __WIN32__ || defined _WIN32 || defined __MSDOS__ - #include - #endif --#if defined LINUX || defined __GNUC__ -+#if defined LINUX || defined __APPLE__ || defined __GNUC__ - #include - #endif - #include - #include - #include /* ANSI standardized variable argument list functions */ - #include - #if defined FORTIFY - #include "fortify.h" -@@ -127,17 +127,17 @@ static short lastfile; - else - fprintf(fp,"%s(%d) : %s %03d: ",inpfname,fline,pre,number); - vfprintf(fp,string,argptr); - fclose(fp); - } /* if */ - } /* if */ - va_end(argptr); - -- if (number>=100 && number<200 || errnum>25){ -+ if ((number>=100 && number<200) || errnum>25){ - if (strlen(errfname)==0) { - va_start(argptr,number); - pc_error(0,"\nCompilation aborted.",NULL,0,0,argptr); - va_end(argptr); - } /* if */ - if (outf!=NULL) { - pc_closeasm(outf,TRUE); - outf=NULL; -diff --git a/compiler/libpc300/sc6.c b/compiler/libpc300/sc6.c ---- a/compiler/libpc300/sc6.c -+++ b/compiler/libpc300/sc6.c -@@ -25,17 +25,17 @@ - #include /* for macro max() */ - #include - #include - #if defined FORTIFY - #include "fortify.h" - #endif - #include "sc.h" - #include "amxdbg.h" --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #endif - - - static void append_dbginfo(FILE *fout); - - - typedef cell (*OPCODE_PROC)(FILE *fbin,char *params,cell opcode); -@@ -890,17 +890,17 @@ SC_FUNC int assemble(FILE *fout,FILE *fi - bytes_out=0; - for (pass=sIN_CSEG; pass<=sIN_DSEG; pass++) { - pc_resetasm(fin); - while (pc_readasm(fin,line,sizeof line)!=NULL) { - stripcomment(line); - instr=skipwhitespace(line); - /* ignore empty lines and labels (labels have a special syntax, so these - * must be parsed separately) */ -- if (*instr=='\0' || tolower(*instr)=='l' && *(instr+1)=='.') -+ if (*instr=='\0' || (tolower(*instr)=='l' && *(instr+1)=='.')) - continue; - /* get to the end of the instruction (make use of the '\n' that fgets() - * added at the end of the line; this way we will *always* drop on a - * whitespace character) */ - for (params=instr; *params!='\0' && !isspace(*params); params++) - /* nothing */; - assert(params>instr); - i=findopcode(instr,(int)(params-instr)); -diff --git a/compiler/libpc300/sc7.c b/compiler/libpc300/sc7.c ---- a/compiler/libpc300/sc7.c -+++ b/compiler/libpc300/sc7.c -@@ -452,28 +452,28 @@ static int matchsequence(char *start,cha - start++; - ptr++; - } /* while */ - pattern--; /* there is an increment following at the end of the loop */ - break; - case ' ': - if (*start!='\t' && *start!=' ') - return FALSE; -- while (start=0xd800 && result<=0xdfff || result==0xfffe || result==0xffff) -+ if ((result>=0xd800 && result<=0xdfff) || result==0xfffe || result==0xffff) - return -1; - } /* if */ - break; - } else if (follow==0 && (ch & 0x80)==0x80) { - /* UTF-8 leader code */ - if ((ch & 0xe0)==0xc0) { - /* 110xxxxx 10xxxxxx */ - follow=1; -diff --git a/compiler/libpc300/sclinux.h b/compiler/libpc300/sclinux.h ---- a/compiler/libpc300/sclinux.h -+++ b/compiler/libpc300/sclinux.h -@@ -27,16 +27,20 @@ - - /* - * SC assumes that a computer is Little Endian unless told otherwise. It uses - * (and defines) the macros BYTE_ORDER and BIG_ENDIAN. - * For Linux, we must overrule these settings with those defined in glibc. - */ - #if !defined __BYTE_ORDER - # include -+# if defined __APPLE__ -+# include -+# define __BYTE_ORDER BYTE_ORDER -+# endif - #endif - - #if defined __OpenBSD__ || defined __FreeBSD__ - # define __BYTE_ORDER BYTE_ORDER - # define __LITTLE_ENDIAN LITTLE_ENDIAN - # define __BIG_ENDIAN BIG_ENDIAN - #endif - -diff --git a/compiler/libpc300/sclist.c b/compiler/libpc300/sclist.c ---- a/compiler/libpc300/sclist.c -+++ b/compiler/libpc300/sclist.c -@@ -233,17 +233,17 @@ SC_FUNC void delete_aliastable(void) - - /* ----- include paths list -------------------------------------- */ - static stringlist includepaths = {NULL, NULL}; /* directory list for include files */ - - SC_FUNC stringlist *insert_path(char *path) - { - char *extra_path = malloc(strlen(path) + 16); - strcpy(extra_path, path); --#if defined __linux__ -+#if defined __linux__ || defined __APPLE__ - strcat(extra_path, "/amxmod_compat/"); - #elif defined WIN32 || defined _WIN32 - strcat(extra_path, "\\amxmod_compat\\"); - #endif - insert_string(&includepaths, extra_path); - free(extra_path); - return insert_string(&includepaths,path); - } -@@ -439,20 +439,20 @@ SC_FUNC stringlist *insert_dbgsymbol(sym - int count=0; - #endif - - - funcdisplayname(symname,sym->name); - /* address tag:name codestart codeend ident vclass [tag:dim ...] */ - #if PAWN_CELL_SIZE==32 - if (sym->ident==iFUNCTN) -- sprintf(string,"S:%08lx %x:%s %08lx %08lx %x %x",sym->addr,sym->tag, -+ sprintf(string,"S:%08x %x:%s %08x %08x %x %x",sym->addr,sym->tag, - symname,sym->addr,sym->codeaddr,sym->ident,sym->vclass); - else -- sprintf(string,"S:%08lx %x:%s %08lx %08lx %x %x",sym->addr,sym->tag, -+ sprintf(string,"S:%08x %x:%s %08x %08x %x %x",sym->addr,sym->tag, - symname,sym->codeaddr,code_idx,sym->ident,sym->vclass); - #elif PAWN_CELL_SIZE==64 - if (sym->ident==iFUNCTN) - sprintf(string,"S:%08Lx %x:%s %08Lx %08Lx %x %x",(LONGCAST)sym->addr,sym->tag, - symname,sym->addr,sym->codeaddr,sym->ident,sym->vclass); - else - sprintf(string,"S:%08Lx %x:%s %08Lx %08Lx %x %x",(LONGCAST)sym->addr,sym->tag, - symname,sym->codeaddr,code_idx,sym->ident,sym->vclass); -diff --git a/compiler/libpc300/scstate.c b/compiler/libpc300/scstate.c ---- a/compiler/libpc300/scstate.c -+++ b/compiler/libpc300/scstate.c -@@ -46,17 +46,17 @@ - * Version: $Id: scstate.c 1724 2005-07-24 20:00:55Z dvander $ - */ - #include - #include - #include - #include - #include - #include "sc.h" --#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ -+#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__ - #include - #endif - - #if defined FORTIFY - #include "fortify.h" - #endif - - typedef struct s_statelist { -diff --git a/configs/hamdata.ini b/configs/hamdata.ini ---- a/configs/hamdata.ini -+++ b/configs/hamdata.ini -@@ -256,16 +256,126 @@ - weapon_shouldweaponidle 92 - weapon_usedecrement 93 - - cstrike_restart 2 - cstrike_roundrespawn 84 - cstrike_item_candrop 63 - cstrike_item_getmaxspeed 78 - @end -+ -+@section cstrike mac -+ pev 4 -+ base 0x0 -+ -+ spawn 0 -+ precache 1 -+ keyvalue 3 -+ objectcaps 6 -+ activate 7 -+ setobjectcollisionbox 8 -+ classify 9 -+ deathnotice 10 -+ traceattack 11 -+ takedamage 12 -+ takehealth 13 -+ killed 14 -+ bloodcolor 15 -+ tracebleed 16 -+ istriggered 17 -+ mymonsterpointer 18 -+ mysquadmonsterpointer 19 -+ gettogglestate 20 -+ addpoints 21 -+ addpointstoteam 22 -+ addplayeritem 23 -+ removeplayeritem 24 -+ giveammo 25 -+ getdelay 26 -+ ismoving 27 -+ overridereset 28 -+ damagedecal 29 -+ settogglestate 30 -+ startsneaking 31 -+ stopsneaking 32 -+ oncontrols 33 -+ issneaking 34 -+ isalive 35 -+ isbspmodel 36 -+ reflectgauss 37 -+ hastarget 38 -+ isinworld 39 -+ isplayer 40 -+ isnetclient 41 -+ teamid 42 -+ getnexttarget 43 -+ think 44 -+ touch 45 -+ use 46 -+ blocked 47 -+ respawn 48 -+ updateowner 49 -+ fbecomeprone 50 -+ center 51 -+ eyeposition 52 -+ earposition 53 -+ bodytarget 54 -+ illumination 55 -+ fvisible 56 -+ fvecvisible 57 -+ -+ player_jump 76 -+ player_duck 77 -+ player_prethink 78 -+ player_postthink 79 -+ player_getgunposition 80 -+ player_shouldfadeondeath 66 -+ player_impulsecommands 83 -+ player_updateclientdata 82 -+ -+ item_addtoplayer 59 -+ item_addduplicate 60 -+ item_getiteminfo 61 -+ item_candeploy 62 -+ item_deploy 64 -+ item_canholster 66 -+ item_holster 67 -+ item_updateiteminfo 68 -+ item_preframe 69 -+ item_postframe 70 -+ item_drop 71 -+ item_kill 72 -+ item_attachtoplayer 73 -+ item_primaryammoindex 74 -+ item_secondaryammoindex 75 -+ item_updateclientdata 76 -+ item_getweaponptr 77 -+ item_itemslot 79 -+ -+ weapon_extractammo 80 -+ weapon_extractclipammo 81 -+ weapon_addweapon 82 -+ weapon_playemptysound 83 -+ weapon_resetemptysound 84 -+ weapon_sendweaponanim 85 -+ weapon_isusable 86 -+ weapon_primaryattack 87 -+ weapon_secondaryattack 88 -+ weapon_reload 89 -+ weapon_weaponidle 90 -+ weapon_retireweapon 91 -+ weapon_shouldweaponidle 92 -+ weapon_usedecrement 93 -+ -+ cstrike_restart 2 -+ cstrike_roundrespawn 84 -+ cstrike_item_candrop 63 -+ cstrike_item_getmaxspeed 78 -+@end -+ - @section dod linux - pev 0 - base 0x154 - - spawn 5 - precache 6 - keyvalue 7 - objectcaps 10 -@@ -1742,18 +1852,122 @@ - weapon_isusable 82 - weapon_primaryattack 83 - weapon_secondaryattack 84 - weapon_reload 85 - weapon_weaponidle 86 - weapon_retireweapon 87 - weapon_shouldweaponidle 88 - weapon_usedecrement 89 -+@end -+ -+@section valve mac -+ pev 4 -+ base 0x0 - -+ spawn 0 -+ precache 1 -+ keyvalue 2 -+ objectcaps 5 -+ activate 6 -+ setobjectcollisionbox 7 -+ classify 8 -+ deathnotice 9 -+ traceattack 10 -+ takedamage 11 -+ takehealth 12 -+ killed 13 -+ bloodcolor 14 -+ tracebleed 15 -+ istriggered 16 -+ mymonsterpointer 17 -+ mysquadmonsterpointer 18 -+ gettogglestate 19 -+ addpoints 20 -+ addpointstoteam 21 -+ addplayeritem 22 -+ removeplayeritem 23 -+ giveammo 24 -+ getdelay 25 -+ ismoving 26 -+ overridereset 27 -+ damagedecal 28 -+ settogglestate 29 -+ startsneaking 30 -+ stopsneaking 31 -+ oncontrols 32 -+ issneaking 33 -+ isalive 34 -+ isbspmodel 35 -+ reflectgauss 36 -+ hastarget 37 -+ isinworld 38 -+ isplayer 39 -+ isnetclient 40 -+ teamid 41 -+ getnexttarget 42 -+ think 43 -+ touch 44 -+ use 45 -+ blocked 46 -+ respawn 47 -+ updateowner 48 -+ fbecomeprone 49 -+ center 50 -+ eyeposition 51 -+ earposition 52 -+ bodytarget 53 -+ illumination 54 -+ fvisible 55 -+ fvecvisible 56 -+ -+ player_jump 125 -+ player_duck 126 -+ player_prethink 127 -+ player_postthink 128 -+ player_getgunposition 119 -+ player_shouldfadeondeath 60 -+ player_impulsecommands 130 -+ player_updateclientdata 129 -+ -+ item_addtoplayer 58 -+ item_addduplicate 59 -+ item_getiteminfo 60 -+ item_candeploy 61 -+ item_deploy 62 -+ item_canholster 63 -+ item_holster 64 -+ item_updateiteminfo 65 -+ item_preframe 66 -+ item_postframe 67 -+ item_drop 68 -+ item_kill 69 -+ item_attachtoplayer 70 -+ item_primaryammoindex 71 -+ item_secondaryammoindex 72 -+ item_updateclientdata 73 -+ item_getweaponptr 74 -+ item_itemslot 75 -+ -+ weapon_extractammo 76 -+ weapon_extractclipammo 77 -+ weapon_addweapon 78 -+ weapon_playemptysound 79 -+ weapon_resetemptysound 80 -+ weapon_sendweaponanim 81 -+ weapon_isusable 82 -+ weapon_primaryattack 83 -+ weapon_secondaryattack 84 -+ weapon_reload 85 -+ weapon_weaponidle 86 -+ weapon_retireweapon 87 -+ weapon_shouldweaponidle 88 -+ weapon_usedecrement 89 - @end -+ - ; Sven-Coop has no linux binaries. This makes disassembly much harder. - ; These offsets were contributed by ts2do - @section SvenCoop windows - pev 4 - base 0x0 - - spawn 0 - precache 1 -diff --git a/dlls/cstrike/cstrike/CstrikeHacks.cpp b/dlls/cstrike/cstrike/CstrikeHacks.cpp ---- a/dlls/cstrike/cstrike/CstrikeHacks.cpp -+++ b/dlls/cstrike/cstrike/CstrikeHacks.cpp -@@ -1,15 +1,19 @@ - #include --#include -+#include - #include "cstrike.h" - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #include - #define PAGE_EXECUTE_READWRITE PROT_READ|PROT_WRITE|PROT_EXEC -+ -+#if defined(__linux) -+#include -+#endif - #endif - - /* Utils */ - unsigned char *UTIL_CodeAlloc(size_t size); - void UTIL_CodeFree(unsigned char *addr); - void UTIL_MemProtect(void *addr, int length, int prot); - bool UTIL_GetLibraryOfAddress(void *memInBase, char *buffer, size_t maxlength); - -@@ -60,17 +64,17 @@ void CtrlDetour_ClientCommand(bool set) - const unsigned int DetourJmpBytes = 5; - static unsigned char *FullDetour = NULL; - - void *target = (void *)MDLL_ClientCommand; - unsigned char *paddr; - - if (!g_UseBotArgs) - { --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - /* Find the DLL */ - char dll[256]; - if (!UTIL_GetLibraryOfAddress(target, dll, sizeof(dll))) - { - return; - } - void *handle = dlopen(dll, RTLD_NOW); - if (!handle) -@@ -97,17 +101,17 @@ void CtrlDetour_ClientCommand(bool set) - /* Copy the main trampoline function */ - memcpy(FullDetour, DetourOps, DetourBytes); - - /* Copy our detour call into the trampoline */ - paddr = &FullDetour[DetourCallPos]; - *(unsigned long *)paddr = (unsigned long)Detour_ClientCommand - (unsigned long)(paddr + 4); - - /* Copy original bytes onto the end of the function */ -- memcpy(&FullDetour[DetourBytes], target, CS_DETOURCOPYBYTES_CLIENTCOMMAND); -+ memcpy(&FullDetour[DetourBytes], target, CS_DETOURCOPYBYTES_CLIENTCOMMAND); - - /* Patch and copy the final jmp */ - paddr = &FullDetour[DetourJmpPos]; - *paddr++ = DetourJmp; - *(unsigned long *)paddr = ((unsigned long)target + CS_DETOURCOPYBYTES_CLIENTCOMMAND) - - (unsigned long)(paddr + 4); - - /* Now overwrite the target function with our trampoline */ -@@ -137,47 +141,51 @@ int Detour_ClientCommand(edict_t *pEdict - } - return 0; - } - - unsigned char *UTIL_CodeAlloc(size_t size) - { - #if defined WIN32 - return (unsigned char *)VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); -+#elif defined __GNUC__ -+#if defined __APPLE__ -+ unsigned char *addr = (unsigned char *)valloc(size); - #else - unsigned char *addr = (unsigned char *)memalign(sysconf(_SC_PAGESIZE), size); -+#endif - mprotect(addr, size, PROT_READ|PROT_WRITE|PROT_EXEC); - return addr; - #endif - } - - void UTIL_CodeFree(unsigned char *addr) - { - #if defined WIN32 - VirtualFree(addr, 0, MEM_RELEASE); - #else - free(addr); - #endif - } - - void UTIL_MemProtect(void *addr, int length, int prot) - { --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define ALIGN(ar) ((long)ar & ~(sysconf(_SC_PAGESIZE)-1)) - void *addr2 = (void *)ALIGN(addr); - mprotect(addr2, sysconf(_SC_PAGESIZE), prot); - #else - DWORD old_prot; - VirtualProtect(addr, length, prot, &old_prot); - #endif - } - - bool UTIL_GetLibraryOfAddress(void *memInBase, char *buffer, size_t maxlength) - { --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - Dl_info info; - if (!dladdr(memInBase, &info)) - { - return false; - } - if (!info.dli_fbase || !info.dli_fname) - { - return false; -diff --git a/dlls/cstrike/cstrike/Makefile b/dlls/cstrike/cstrike/Makefile ---- a/dlls/cstrike/cstrike/Makefile -+++ b/dlls/cstrike/cstrike/Makefile -@@ -1,78 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../../hlsdk/multiplayer - MM_ROOT = ../../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = cstrike -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = cstrike - - OBJECTS = sdk/amxxmodule.cpp CstrikePlayer.cpp cstrike.cpp CstrikeHacks.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) cstrike -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --cstrike: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/cstrike/cstrike/cstrike.cpp b/dlls/cstrike/cstrike/cstrike.cpp ---- a/dlls/cstrike/cstrike/cstrike.cpp -+++ b/dlls/cstrike/cstrike/cstrike.cpp -@@ -44,17 +44,17 @@ bool UTIL_IsPlayer(AMX* amx, edict_t* pP - bool player = false; - - if (strcmp(STRING(pPlayer->v.classname), "player") == 0) - player = true; - - return player; - } - --void UTIL_TextMsg_Generic(edict_t* pPlayer, char* message) -+void UTIL_TextMsg_Generic(edict_t* pPlayer, const char* message) - { - MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "TextMsg", NULL), NULL, pPlayer); - WRITE_BYTE(HUD_PRINTCENTER); // 1 = console, 2 = console, 3 = chat, 4 = center - WRITE_STRING(message); - MESSAGE_END(); - /* - The byte above seems to use these: - #define HUD_PRINTNOTIFY 1 -@@ -741,17 +741,17 @@ static cell AMX_NATIVE_CALL cs_set_user_ - if (params[i + 3] != -1) - { - colour[i] = params[i + 3]; - } - } - - pPlayer->v.body = 1; - -- char* icon; -+ const char* icon; - if (params[6] != -1) - { - int len; - icon = MF_GetAmxString(amx, params[6], 1, &len); - } else { - icon = "defuser"; - } - -diff --git a/dlls/cstrike/cstrike/cstrike.h b/dlls/cstrike/cstrike/cstrike.h ---- a/dlls/cstrike/cstrike/cstrike.h -+++ b/dlls/cstrike/cstrike/cstrike.h -@@ -39,25 +39,25 @@ - #include - #include "CstrikePlayer.h" - - #define GETINFOKEYBUFFER (*g_engfuncs.pfnGetInfoKeyBuffer) - #define SETCLIENTKEYVALUE (*g_engfuncs.pfnSetClientKeyValue) - #define GETCLIENTKEYVALUE (*g_engfuncs.pfnInfoKeyValue) - #define CREATENAMEDENTITY (*g_engfuncs.pfnCreateNamedEntity) - --#if defined __linux__ -+#if defined(__linux__) || defined (__APPLE__) - #define EXTRAOFFSET 5 // offsets 5 higher in Linux builds - #define EXTRAOFFSET_WEAPONS 4 // weapon offsets are obviously only 4 steps higher on Linux! - #define ACTUAL_EXTRA_OFFSET 20 // actual, byte-addressable offset - #else - #define EXTRAOFFSET 0 // no change in Windows builds - #define EXTRAOFFSET_WEAPONS 0 - #define ACTUAL_EXTRA_OFFSET 0 --#endif // defined __linux__ -+#endif // defined(__linux__) || defined(__APPLE__) - /* - Offset history: - 041029: - Confirmed (pretty much) ALL offsets for 32 bit Windows, 32 bit Linux and amd64 (yes that's all of them). - Found out that weapon offsets are only +4 higher on Linux. - Also backpack ammo offsets were all obviously 5 steps too high since unknown time... - - */ -@@ -153,16 +153,18 @@ - #define OFFSET_SILENCER_FIREMODE 88 + EXTRAOFFSET // +14 - // "hostage_entity" entities - #define OFFSET_HOSTAGEFOLLOW 51 + EXTRAOFFSET // +21, long=51, int=107! (must use the long* offset because pointers on amd64 are stored the size of longs, 8 bytes, instead of the usual int 4 bytes.) - #define OFFSET_HOSTAGEID 516 + EXTRAOFFSET // +29 - #endif - - #if defined __linux__ - #define CS_DETOURCOPYBYTES_CLIENTCOMMAND 6 -+#elif defined __APPLE__ -+#define CS_DETOURCOPYBYTES_CLIENTCOMMAND 5 - #else - #define CS_DETOURCOPYBYTES_CLIENTCOMMAND 6 - #define CS_CLICMD_OFFS_USEBOTARGS 2 - #define CS_CLICMD_OFFS_BOTARGS 22 - #endif - - - // Ids of weapons in CS -diff --git a/dlls/cstrike/cstrike/sdk/amxxmodule.cpp b/dlls/cstrike/cstrike/sdk/amxxmodule.cpp ---- a/dlls/cstrike/cstrike/sdk/amxxmodule.cpp -+++ b/dlls/cstrike/cstrike/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/cstrike/cstrike/sdk/amxxmodule.h b/dlls/cstrike/cstrike/sdk/amxxmodule.h ---- a/dlls/cstrike/cstrike/sdk/amxxmodule.h -+++ b/dlls/cstrike/cstrike/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/cstrike/csx/Makefile b/dlls/cstrike/csx/Makefile ---- a/dlls/cstrike/csx/Makefile -+++ b/dlls/cstrike/csx/Makefile -@@ -1,78 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../../hlsdk/multiplayer - MM_ROOT = ../../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = csx -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = csx - - OBJECTS = sdk/amxxmodule.cpp CRank.cpp CMisc.cpp meta_api.cpp rank.cpp usermsg.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) csx -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --csx: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/cstrike/csx/sdk/amxxmodule.cpp b/dlls/cstrike/csx/sdk/amxxmodule.cpp ---- a/dlls/cstrike/csx/sdk/amxxmodule.cpp -+++ b/dlls/cstrike/csx/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/cstrike/csx/sdk/amxxmodule.h b/dlls/cstrike/csx/sdk/amxxmodule.h ---- a/dlls/cstrike/csx/sdk/amxxmodule.h -+++ b/dlls/cstrike/csx/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/dod/dodfun/CMisc.cpp b/dlls/dod/dodfun/CMisc.cpp ---- a/dlls/dod/dodfun/CMisc.cpp -+++ b/dlls/dod/dodfun/CMisc.cpp -@@ -62,17 +62,17 @@ void CPlayer::Init( int pi, edict_t* pe - void CPlayer::killPlayer(){ - pEdict->v.dmg_inflictor = NULL; - pEdict->v.health = 0; - pEdict->v.deadflag = DEAD_RESPAWNABLE; - pEdict->v.weaponmodel = 0; - pEdict->v.weapons = 0; - } - --void CPlayer::setTeamName( char *szName ){ -+void CPlayer::setTeamName( const char *szName ){ - - for (int i=0;i<16;i++){ - *( (char*)pEdict->pvPrivateData + STEAM_PDOFFSET_TEAMNAME + i ) = szName[i]; - } - } - - void CPlayer::getTeamName(char * szName ){ - for (int i=0;i<16;i++){ -diff --git a/dlls/dod/dodfun/CMisc.h b/dlls/dod/dodfun/CMisc.h ---- a/dlls/dod/dodfun/CMisc.h -+++ b/dlls/dod/dodfun/CMisc.h -@@ -27,17 +27,17 @@ - * you do not wish to do so, delete this exception statement from your - * version. - * - */ - - #ifndef CMISC_H - #define CMISC_H - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define LINUXOFFSET 0 - #else - #define LINUXOFFSET 5 - #endif - - #define DODFUN_VERSION "1.0.2" - - // DoD Player -@@ -48,17 +48,17 @@ - #define STEAM_PDOFFSET_RCLASS 367 + LINUXOFFSET // random class - - #define STEAM_PDOFFSET_SCORE 475 + LINUXOFFSET // score - #define STEAM_PDOFFSET_DEATHS 476 + LINUXOFFSET // deaths - - // DoD Control Point - struct pd_dcp { - int iunk_0; --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - int iunk_1; // windows only - #endif - int iunk_2; // pointer edict_t* - int iunk_3; - - float origin_x; - float origin_y; - float origin_z; // 6 -@@ -77,17 +77,17 @@ struct pd_dcp { - - // 19 - spawnflags ? - // 20-int , always 1 - int unknown_block1[19]; - int iunk_35; // pointer entvars_t* - int iunk_36; // pointer entvars_t* - int unknown_block2[52]; - int iunk_89; // pointer entvars_t* --#ifdef __linux__ -+#if defined (__linux__) || defined (__APPLE__) - int iunk_extra1; - int iunk_extra2; - int iunk_extra3; - int iunk_extra4; - #endif - int owner; // 90 - int iunk_91; - int iunk_92; -@@ -124,17 +124,17 @@ struct pd_dcp { - - #define GET_CP_PD( x ) (*(pd_dcp*)x->pvPrivateData) - - // DoD Capture Area - struct pd_dca { - int iunk_0; - int iunk_1; - int iunk_2; --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - int iunk_3; // if def windows - #endif - - float origin_x; - float origin_y; - float origin_z; // 6 - - float mins_x; -@@ -145,17 +145,17 @@ struct pd_dca { - float maxs_y; - float maxs_z; - - float angles_x; - float angles_y; - float angles_z; // 15 - - // 16-135 --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - int unknown_block_16[111]; - #else - int unknown_block_16[116]; // linux +5 more - #endif - - int time_to_cap; // 127 - int iunk_128; - int allies_numcap; // 129 -@@ -258,17 +258,17 @@ public: - bool ingame; - bool bot; - - void Init( int pi, edict_t* pe ); - void Connect(); - void PutInServer(); - void Disconnect(); - void killPlayer(); -- void setTeamName( char *szName ); -+ void setTeamName( const char *szName ); - void getTeamName( char *szName ); - - inline bool IsBot(){ - const char* auth= (*g_engfuncs.pfnGetPlayerAuthId)(pEdict); - return ( auth && !strcmp( auth , "BOT" ) ); - } - inline bool IsAlive(){ - return ((pEdict->v.deadflag==DEAD_NO)&&(pEdict->v.health>0)); -diff --git a/dlls/dod/dodfun/Makefile b/dlls/dod/dodfun/Makefile ---- a/dlls/dod/dodfun/Makefile -+++ b/dlls/dod/dodfun/Makefile -@@ -1,67 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../../hlsdk/multiplayer - MM_ROOT = ../../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = dodfun -- --BIN_SUFFIX = amxx_i386.so -+PROJECT = dodfun - - OBJECTS = sdk/amxxmodule.cpp NBase.cpp CMisc.cpp NPD.cpp Utils.cpp usermsg.cpp moduleconfig.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) dodfun -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --dodfun: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/dod/dodfun/sdk/amxxmodule.cpp b/dlls/dod/dodfun/sdk/amxxmodule.cpp ---- a/dlls/dod/dodfun/sdk/amxxmodule.cpp -+++ b/dlls/dod/dodfun/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/dod/dodfun/sdk/amxxmodule.h b/dlls/dod/dodfun/sdk/amxxmodule.h ---- a/dlls/dod/dodfun/sdk/amxxmodule.h -+++ b/dlls/dod/dodfun/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/dod/dodx/CMisc.h b/dlls/dod/dodx/CMisc.h ---- a/dlls/dod/dodx/CMisc.h -+++ b/dlls/dod/dodx/CMisc.h -@@ -32,17 +32,17 @@ - #ifndef CMISC_H - #define CMISC_H - - #include "CRank.h" - - #define DODMAX_CUSTOMWPNS 5 // custom weapons - #define DODMAX_WEAPONS 42 + DODMAX_CUSTOMWPNS - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define LINUXOFFSET 0 - #else - #define LINUXOFFSET 5 - #endif - - #define DOD_VERSION "0.1" - - #define MAX_TRACE 6 -diff --git a/dlls/dod/dodx/Makefile b/dlls/dod/dodx/Makefile ---- a/dlls/dod/dodx/Makefile -+++ b/dlls/dod/dodx/Makefile -@@ -1,67 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../../hlsdk/multiplayer - MM_ROOT = ../../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = dodx -- --BIN_SUFFIX = amxx_i386.so -+PROJECT = dodx - - OBJECTS = sdk/amxxmodule.cpp CRank.cpp CMisc.cpp NBase.cpp NRank.cpp usermsg.cpp Utils.cpp moduleconfig.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) dodx -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --dodx: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/dod/dodx/NBase.cpp b/dlls/dod/dodx/NBase.cpp ---- a/dlls/dod/dodx/NBase.cpp -+++ b/dlls/dod/dodx/NBase.cpp -@@ -485,17 +485,17 @@ static cell AMX_NATIVE_CALL get_user_tea - int index = params[1]; - CHECK_PLAYER(index); - - CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); - int iTeam = pPlayer->pEdict->v.team; - - if ( params[3] ) - { -- char *szTeam = ""; -+ const char *szTeam = ""; - switch(iTeam) - { - case 1: - szTeam = "Allies"; - break; - - case 2: - szTeam = "Axis"; -diff --git a/dlls/dod/dodx/moduleconfig.cpp b/dlls/dod/dodx/moduleconfig.cpp ---- a/dlls/dod/dodx/moduleconfig.cpp -+++ b/dlls/dod/dodx/moduleconfig.cpp -@@ -425,17 +425,17 @@ void DispatchKeyValue_Post( edict_t *pen - } - } - else if ( pkvd->szKeyName[12]=='p' ) g_map.detect_axis_paras=atoi(pkvd->szValue); - } - } - RETURN_META(MRES_IGNORED); - } - --void SetClientKeyValue(int id, char *protocol, char *type, char *var) -+void SetClientKeyValue(int id, char *protocol, const char *type, const char *var) - { - // ID: Number - // protocol: \name\Sgt.MEOW\topcolor\1\bottomcolor\1\cl_lw\1\team\axis\model\axis-inf - // type: model - // var: axis-inf - - // Check to see if its a player and we are setting a model - if(strcmp(type, "model") == 0 && -diff --git a/dlls/dod/dodx/sdk/amxxmodule.cpp b/dlls/dod/dodx/sdk/amxxmodule.cpp ---- a/dlls/dod/dodx/sdk/amxxmodule.cpp -+++ b/dlls/dod/dodx/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/dod/dodx/sdk/amxxmodule.h b/dlls/dod/dodx/sdk/amxxmodule.h ---- a/dlls/dod/dodx/sdk/amxxmodule.h -+++ b/dlls/dod/dodx/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/engine/Makefile b/dlls/engine/Makefile ---- a/dlls/engine/Makefile -+++ b/dlls/engine/Makefile -@@ -1,79 +1,124 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = engine -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = engine - - OBJECTS = sdk/amxxmodule.cpp amxxapi.cpp engine.cpp entity.cpp globals.cpp forwards.cpp \ -- amxmod_compat.cpp -+ amxmod_compat.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) engine -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --engine: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/engine/amxmod_compat.cpp b/dlls/engine/amxmod_compat.cpp ---- a/dlls/engine/amxmod_compat.cpp -+++ b/dlls/engine/amxmod_compat.cpp -@@ -11,18 +11,18 @@ static int gmsgDamage = 0; - static int gmsgDeathMsg = 0; - static int gmsgScoreInfo = 0; - - //From VexdUM (AMX Mod 2006.2) - //This is not exposed, and is only provided as a compatibility helper. - BOOL is_breakable(edict_t* pBreak) - { - if (FStrEq("func_breakable", STRING(pBreak->v.classname)) -- || FStrEq("func_pushable", STRING(pBreak->v.classname)) -- && pBreak->v.spawnflags & SF_PUSH_BREAKABLE) -+ || (FStrEq("func_pushable", STRING(pBreak->v.classname)) -+ && pBreak->v.spawnflags & SF_PUSH_BREAKABLE)) - { - return true; - } - - return false; - } - - //From VexdUM (AMX Mod 2006.2) -diff --git a/dlls/engine/entity.cpp b/dlls/engine/entity.cpp ---- a/dlls/engine/entity.cpp -+++ b/dlls/engine/entity.cpp -@@ -1465,17 +1465,17 @@ static cell AMX_NATIVE_CALL find_ent_by_ - int oEnt = params[3]; - // Check index to start searching at, 0 must be possible for iEnt. - CHECK_ENTITY(oEnt); - - edict_t *pEnt = INDEXENT2(iEnt); - edict_t *entOwner = INDEXENT2(oEnt); - - //optional fourth parameter is for jghg2 compatibility -- char* sCategory = NULL; -+ const char* sCategory = NULL; - switch(params[4]){ - case 1: sCategory = "target"; break; - case 2: sCategory = "targetname"; break; - default: sCategory = "classname"; - } - - // No need to check if there is a real ent where entOwner points at since we don't access it anyway. - -diff --git a/dlls/engine/sdk/CString.h b/dlls/engine/sdk/CString.h ---- a/dlls/engine/sdk/CString.h -+++ b/dlls/engine/sdk/CString.h -@@ -215,17 +215,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; i - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/engine/sdk/amxxmodule.h b/dlls/engine/sdk/amxxmodule.h ---- a/dlls/engine/sdk/amxxmodule.h -+++ b/dlls/engine/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/fakemeta/Makefile b/dlls/fakemeta/Makefile ---- a/dlls/fakemeta/Makefile -+++ b/dlls/fakemeta/Makefile -@@ -1,81 +1,125 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = fakemeta -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = fakemeta - - OBJECTS = sdk/amxxmodule.cpp dllfunc.cpp engfunc.cpp fakemeta_amxx.cpp pdata.cpp forward.cpp \ -- fm_tr.cpp pev.cpp glb.cpp fm_tr2.cpp misc.cpp -+ fm_tr.cpp pev.cpp glb.cpp fm_tr2.cpp misc.cpp -+ -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## -+ -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - - LINK = - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -I$(HLSDK)/pm_shared -Isdk -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(HLSDK)/pm_shared -I$(MM_ROOT) -Isdk - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror \ -+ -Wno-invalid-offsetof -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) - - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -Wno-invalid-offsetof -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) fakemeta -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -- --fakemeta: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - - debug: -- $(MAKE) all DEBUG=true -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -- -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/fakemeta/dllfunc.cpp b/dlls/fakemeta/dllfunc.cpp ---- a/dlls/fakemeta/dllfunc.cpp -+++ b/dlls/fakemeta/dllfunc.cpp -@@ -2,19 +2,19 @@ - - //by mahnsawce from his NS module - static cell AMX_NATIVE_CALL dllfunc(AMX *amx,cell *params) - { - int type; - int index; - int indexb; - unsigned char *pset; -- char *temp = ""; -- char *temp2 = ""; -- char *temp3 = ""; -+ const char *temp = ""; -+ const char *temp2 = ""; -+ const char *temp3 = ""; - vec3_t Vec1; - vec3_t Vec2; - int iparam1; - int iparam2; - int iparam3; - entity_state_t *es; - int len; - cell *cRet; -@@ -100,17 +100,17 @@ static cell AMX_NATIVE_CALL dllfunc(AMX - case DLLFunc_ClientConnect: // bool) ( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] ); - // index,szName,szAddress,szRetRejectReason,size - cRet = MF_GetAmxAddr(amx,params[2]); - index=cRet[0]; - CHECK_ENTITY(index); - temp = MF_GetAmxString(amx,params[3],0,&len); - temp2 = MF_GetAmxString(amx,params[4],1,&len); - //temp3 = GET_AMXSTRING(amx,params[5],2,len); -- iparam1 = MDLL_ClientConnect(INDEXENT2(index),STRING(ALLOC_STRING(temp)),STRING(ALLOC_STRING(temp2)),temp3); -+ iparam1 = MDLL_ClientConnect(INDEXENT2(index),STRING(ALLOC_STRING(temp)),STRING(ALLOC_STRING(temp2)),(char *)temp3); - cRet = MF_GetAmxAddr(amx,params[6]); - MF_SetAmxString(amx,params[5],temp3,cRet[0]); - return iparam1; - - case DLLFunc_ClientDisconnect: // void ) ( edict_t *pEntity ); - cRet = MF_GetAmxAddr(amx,params[2]); - index=cRet[0]; - CHECK_ENTITY(index); -diff --git a/dlls/fakemeta/engfunc.cpp b/dlls/fakemeta/engfunc.cpp ---- a/dlls/fakemeta/engfunc.cpp -+++ b/dlls/fakemeta/engfunc.cpp -@@ -29,25 +29,25 @@ static cell AMX_NATIVE_CALL engfunc(AMX - // float fTemp[3]; - int index; - unsigned char *pset; - edict_t *pRet=NULL; - // Now start calling.. :/ - switch (type) - { - // pfnPrecacheModel -- case EngFunc_PrecacheModel: // int ) (char* s); -+ case EngFunc_PrecacheModel: // int ) (const char* s); - temp = MF_GetAmxString(amx,params[2],0,&len); - if (temp[0]==0) - return 0; -- return (*g_engfuncs.pfnPrecacheModel)((char*)STRING(ALLOC_STRING(temp))); -+ return (*g_engfuncs.pfnPrecacheModel)((char *)STRING(ALLOC_STRING(temp))); - - - // pfnPrecacheSound -- case EngFunc_PrecacheSound: // int ) (char* s); -+ case EngFunc_PrecacheSound: // int ) (const char* s); - temp = MF_GetAmxString(amx,params[2],0,&len); - if (temp[0]==0) - return 0; - return (*g_engfuncs.pfnPrecacheSound)((char*)STRING(ALLOC_STRING(temp))); - - - // pfnSetModel - case EngFunc_SetModel: // void ) (edict_t *e, const char *m); -diff --git a/dlls/fakemeta/forward.cpp b/dlls/fakemeta/forward.cpp ---- a/dlls/fakemeta/forward.cpp -+++ b/dlls/fakemeta/forward.cpp -@@ -78,20 +78,20 @@ static cell AMX_NATIVE_CALL fm_return(AM - - return 1; - } - /* - * Begining of Game DLL->Engine hooks - */ - - // pfnPrecacheModel --SIMPLE_INT_HOOK_STRING(PrecacheModel); -+SIMPLE_INT_HOOK_CONSTSTRING(PrecacheModel); - - // pfnPrecacheSound --SIMPLE_INT_HOOK_STRING(PrecacheSound); -+SIMPLE_INT_HOOK_CONSTSTRING(PrecacheSound); - - void ClientUserInfoChanged(edict_t *e, char *infobuffer) - { - FM_ENG_HANDLE(FM_ClientUserInfoChanged, (Engine[FM_ClientUserInfoChanged].at(i), (cell)ENTINDEX(e), (cell)infobuffer)); - RETURN_META(mswi(lastFmRes)); - } - - void ClientUserInfoChanged_post(edict_t *e, char *infobuffer) -@@ -256,28 +256,28 @@ void KeyValue(edict_t* entity, KeyValueD - - void KeyValue_post(edict_t* entity, KeyValueData* data) - { - g_kvd_hook.kvd = data; - FM_ENG_HANDLE_POST(FM_KeyValue, (EnginePost[FM_KeyValue].at(i), (cell)ENTINDEX(entity), (cell)(&g_kvd_hook))); - RETURN_META(MRES_IGNORED); - } - --void AlertMessage(ALERT_TYPE atype, char *szFmt, ...) -+void AlertMessage(ALERT_TYPE atype, const char *szFmt, ...) - { - static char buf[2048]; - va_list ap; - va_start(ap, szFmt); - vsprintf(buf, szFmt, ap); - va_end(ap); - FM_ENG_HANDLE(FM_AlertMessage, (Engine[FM_AlertMessage].at(i), (cell)atype, buf)); - RETURN_META(mswi(lastFmRes)); - } - --void AlertMessage_post(ALERT_TYPE atype, char *szFmt, ...) -+void AlertMessage_post(ALERT_TYPE atype, const char *szFmt, ...) - { - static char buf[2048]; - va_list ap; - va_start(ap, szFmt); - vsprintf(buf, szFmt, ap); - va_end(ap); - FM_ENG_HANDLE_POST(FM_AlertMessage, (EnginePost[FM_AlertMessage].at(i), (cell)atype, buf)); - RETURN_META(MRES_IGNORED); -@@ -288,17 +288,17 @@ SIMPLE_INT_HOOK_CONSTSTRING(ModelIndex); - - // pfnModelFrames - SIMPLE_INT_HOOK_INT(ModelFrames); - - // pfnSetSize - SIMPLE_VOID_HOOK_EDICT_CONSTVECT_CONSTVECT(SetSize); - - // pfnChangeLevel --SIMPLE_VOID_HOOK_STRING_STRING(ChangeLevel); -+SIMPLE_VOID_HOOK_CONSTSTRING_CONSTSTRING(ChangeLevel); - - // pfnVecToYaw - SIMPLE_FLOAT_HOOK_CONSTVECT(VecToYaw); - - void VecToAngles(const float *rgflVectorIn, float *rgflVectorOut) - { - PREPARE_VECTOR(rgflVectorIn); - PREPARE_VECTOR(rgflVectorOut); -@@ -502,17 +502,17 @@ SIMPLE_FLOAT_HOOK_VOID(Time); - SIMPLE_VOID_HOOK_CONSTEDICT_FLOAT_FLOAT(CrosshairAngle); - - SIMPLE_VOID_HOOK_CONSTEDICT_INT_INT_INT_INT(FadeClientVolume); - - // pfnSetClientMaxspeed - SIMPLE_VOID_HOOK_CONSTEDICT_FLOAT(SetClientMaxspeed); - - // pfnPrecacheGeneric --SIMPLE_INT_HOOK_STRING(PrecacheGeneric); -+SIMPLE_INT_HOOK_CONSTSTRING(PrecacheGeneric); - - // pfnPrecacheEvent - SIMPLE_USHORT_HOOK_INT_CONSTSTRING(PrecacheEvent); - - // pfnGetPhysicsKeyValue - SIMPLE_CONSTSTRING_HOOK_CONSTEDICT_CONSTSTRING(GetPhysicsKeyValue); - - // pfnSetPhysicsKeyValue -@@ -595,27 +595,27 @@ SIMPLE_INT_HOOK_CONSTEDICT(CanSkipPlayer - SIMPLE_VOID_HOOK_INT_INT(SetGroupMask); - - // pfnVoice_GetClientListening - SIMPLE_BOOL_HOOK_INT_INT(Voice_GetClientListening); - - // pfnVoice_SetClientListening - SIMPLE_BOOL_HOOK_INT_INT_BOOL(Voice_SetClientListening); - --SIMPLE_STRING_HOOK_STRING_STRING(InfoKeyValue); -+SIMPLE_STRING_HOOK_STRING_CONSTSTRING(InfoKeyValue); - --SIMPLE_VOID_HOOK_STRING_STRING_STRING(SetKeyValue); -+SIMPLE_VOID_HOOK_STRING_CONSTSTRING_CONSTSTRING(SetKeyValue); - --SIMPLE_VOID_HOOK_INT_STRING_STRING_STRING(SetClientKeyValue); -+SIMPLE_VOID_HOOK_INT_STRING_CONSTSTRING_CONSTSTRING(SetClientKeyValue); - - SIMPLE_CONSTSTRING_HOOK_EDICT(GetPlayerAuthId); - - SIMPLE_UINT_HOOK_EDICT(GetPlayerWONId); - --SIMPLE_INT_HOOK_STRING(IsMapValid); -+SIMPLE_INT_HOOK_CONSTSTRING(IsMapValid); - - int CreateInstancedBaseline(int classname, struct entity_state_s *baseline) - { - g_es_hook = baseline; - FM_ENG_HANDLE(FM_CreateInstancedBaseline, (Engine[FM_CreateInstancedBaseline].at(i), (cell)classname, (cell)baseline)); - RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult); - } - -@@ -720,17 +720,17 @@ SIMPLE_VOID_HOOK_EDICT(SpectatorDisconne - - // pfnSpectatorThink - SIMPLE_VOID_HOOK_EDICT(SpectatorThink); - - // pfnSys_Error - SIMPLE_VOID_HOOK_CONSTSTRING(Sys_Error); - - // pfnPM_FindTextureType --SIMPLE_CHAR_HOOK_STRING(PM_FindTextureType); -+SIMPLE_CHAR_HOOK_CONSTSTRING(PM_FindTextureType); - - // pfnRegisterEncoders - SIMPLE_VOID_HOOK_VOID(RegisterEncoders); - - // pfnCreateInstancedBaselines - SIMPLE_VOID_HOOK_VOID(CreateInstancedBaselines); - - // pfnAllowLagCompensation -diff --git a/dlls/fakemeta/forwardmacros.h b/dlls/fakemeta/forwardmacros.h ---- a/dlls/fakemeta/forwardmacros.h -+++ b/dlls/fakemeta/forwardmacros.h -@@ -70,40 +70,77 @@ - RETURN_META(mswi(lastFmRes)); \ - } \ - void call##_post (int v, char *c, char *cb, char *cc) \ - { \ - FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i),(cell)v,c,cb,cc)); \ - RETURN_META(MRES_IGNORED); \ - } - -+#define SIMPLE_VOID_HOOK_INT_STRING_CONSTSTRING_CONSTSTRING(call) \ -+ void call (int v,char *c, const char *cb, const char *cc) \ -+ { \ -+ FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i),(cell)v,c,cb,cc)); \ -+ RETURN_META(mswi(lastFmRes)); \ -+ } \ -+ void call##_post (int v, char *c, const char *cb, const char *cc) \ -+ { \ -+ FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i),(cell)v,c,cb,cc)); \ -+ RETURN_META(MRES_IGNORED); \ -+ } -+ -+ - #define SIMPLE_VOID_HOOK_STRING_STRING_STRING(call) \ - void call (char *c, char *cb, char *cc) \ - { \ - FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i),c,cb,cc)); \ - RETURN_META(mswi(lastFmRes)); \ - } \ - void call##_post (char *c, char *cb, char *cc) \ - { \ - FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i),c,cb,cc)); \ - RETURN_META(MRES_IGNORED); \ - } - -+#define SIMPLE_VOID_HOOK_STRING_CONSTSTRING_CONSTSTRING(call) \ -+ void call (char *c, const char *cb, const char *cc) \ -+ { \ -+ FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i),c,cb,cc)); \ -+ RETURN_META(mswi(lastFmRes)); \ -+ } \ -+ void call##_post (char *c, const char *cb, const char *cc) \ -+ { \ -+ FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i),c,cb,cc)); \ -+ RETURN_META(MRES_IGNORED); \ -+ } -+ - #define SIMPLE_STRING_HOOK_STRING_STRING(call) \ - char* call (char *c, char *cb) \ - { \ - FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i),c,cb)); \ - RETURN_META_VALUE(mswi(lastFmRes), (char*)mlStringResult); \ - } \ - char* call##_post (char *c, char *cb) \ - { \ - origStringRet = META_RESULT_ORIG_RET(char *); \ - FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i),c,cb)); \ - RETURN_META_VALUE(MRES_IGNORED, (char*)mlStringResult); \ - } -+#define SIMPLE_STRING_HOOK_STRING_CONSTSTRING(call) \ -+ char* call (char *c, const char *cb) \ -+ { \ -+ FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i),c,cb)); \ -+ RETURN_META_VALUE(mswi(lastFmRes), (char*)mlStringResult); \ -+ } \ -+ char* call##_post (char *c, const char *cb) \ -+ { \ -+ origStringRet = META_RESULT_ORIG_RET(char *); \ -+ FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i),c,cb)); \ -+ RETURN_META_VALUE(MRES_IGNORED, (char*)mlStringResult); \ -+ } - #define SIMPLE_CONSTSTRING_HOOK_EDICT(call) \ - const char* call (edict_t *e) \ - { \ - FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i),(cell)ENTINDEX(e))); \ - RETURN_META_VALUE(mswi(lastFmRes), mlStringResult); \ - } \ - const char* call##_post (edict_t *e) \ - { \ -@@ -170,16 +207,29 @@ - RETURN_META_VALUE(mswi(lastFmRes), (char)mlCellResult); \ - } \ - char call##_post (char *s) \ - { \ - origCellRet = META_RESULT_ORIG_RET(char); \ - FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), s)); \ - RETURN_META_VALUE(MRES_IGNORED, (char)mlCellResult); \ - } -+#define SIMPLE_CHAR_HOOK_CONSTSTRING(call) \ -+ char call (const char *s) \ -+ { \ -+ FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), s)); \ -+ RETURN_META_VALUE(mswi(lastFmRes), (char)mlCellResult); \ -+ } \ -+ char call##_post (const char *s) \ -+ { \ -+ origCellRet = META_RESULT_ORIG_RET(char); \ -+ FM_ENG_HANDLE_POST(FM_##call, (EnginePost[FM_##call].at(i), s)); \ -+ RETURN_META_VALUE(MRES_IGNORED, (char)mlCellResult); \ -+ } -+ - #define SIMPLE_VOID_HOOK_CONSTSTRING(call) \ - void call (const char *s) \ - { \ - FM_ENG_HANDLE(FM_##call, (Engine[FM_##call].at(i), s)); \ - RETURN_META(mswi(lastFmRes)); \ - } \ - void call##_post (const char *s) \ - { \ -diff --git a/dlls/fakemeta/pdata.cpp b/dlls/fakemeta/pdata.cpp ---- a/dlls/fakemeta/pdata.cpp -+++ b/dlls/fakemeta/pdata.cpp -@@ -1,10 +1,22 @@ - #include "fakemeta_amxx.h" - -+#if defined PAWN_CELL_SIZE -+# if PAWN_CELL_SIZE == 16 -+# define CELL_MIN SHRT_MIN -+# elif PAWN_CELL_SIZE == 32 -+# define CELL_MIN INT_MIN -+# elif PAWN_CELL_SIZE == 64 -+# define CELL_MIN _I64_MIN -+# endif -+#else -+# define CELL_MIN _I32_MIN -+#endif -+ - #if defined WIN32 - #define WINDOWS_LEAN_AND_MEAN - #include - #else - //implement these with setjmp later. - bool IsBadReadPtr(void *l, size_t size) - { - return false; -@@ -19,71 +31,104 @@ static cell AMX_NATIVE_CALL set_pdata_in - { - int index=params[1]; - CHECK_ENTITY(index); - int iOffset=params[2]; - if (iOffset <0) - return 1; - #ifdef __linux__ - iOffset += params[4]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 4) -+ iOffset += params[4]; -+ else -+ iOffset += params[5]; - #endif - int iValue=params[3]; - *((int *)INDEXENT2(index)->pvPrivateData + iOffset) = iValue; - return 1; - } - static cell AMX_NATIVE_CALL get_pdata_int(AMX *amx, cell *params) - { - int index=params[1]; - CHECK_ENTITY(index); - int iOffset=params[2]; - if (iOffset <0) - return 0; - #ifdef __linux__ - iOffset += params[3]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 3) -+ iOffset += params[3]; -+ else -+ iOffset += params[4]; - #endif -+ - return *((int *)INDEXENT2(index)->pvPrivateData + iOffset); - } - // Float - static cell AMX_NATIVE_CALL set_pdata_float(AMX *amx, cell *params) - { - int index=params[1]; - CHECK_ENTITY(index); - int iOffset=params[2]; - if (iOffset <0) - return 1; - #ifdef __linux__ - iOffset += params[4]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 4) -+ iOffset += params[4]; -+ else -+ iOffset += params[5]; - #endif -+ - float fValue=amx_ctof(params[3]); - *((float *)INDEXENT2(index)->pvPrivateData + iOffset) = fValue; - return 1; - } - static cell AMX_NATIVE_CALL get_pdata_float(AMX *amx, cell *params) - { - int index=params[1]; - CHECK_ENTITY(index); - int iOffset=params[2]; - if (iOffset <0) - return 1; - #ifdef __linux__ - iOffset += params[3]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 3) -+ iOffset += params[3]; -+ else -+ iOffset += params[4]; - #endif -+ - return amx_ftoc(*((float *)INDEXENT2(index)->pvPrivateData + iOffset)); - } - - static cell AMX_NATIVE_CALL get_pdata_string(AMX *amx, cell *params) - { - int index=params[1]; - CHECK_ENTITY(index); - - int iOffset=params[2]; - if (iOffset <0) - return 1; - #ifdef __linux__ - iOffset += params[6]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 6 || params[7] == CELL_MIN) -+ iOffset += params[6]; -+ else -+ iOffset += params[7]; - #endif - - edict_t *pEdict = INDEXENT2(index); - - char *szData; - if (params[5]) - { - szData = *((char **)pEdict->pvPrivateData + iOffset); -@@ -106,16 +151,22 @@ static cell AMX_NATIVE_CALL set_pdata_st - int index=params[1]; - CHECK_ENTITY(index); - - int iOffset=params[2]; - if (iOffset <0) - return 1; - #ifdef __linux__ - iOffset += params[5]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 5 || params[6] == CELL_MIN) -+ iOffset += params[5]; -+ else -+ iOffset += params[6]; - #endif - - edict_t *pEdict = INDEXENT2(index); - - char *szData; - int len; - char *data = MF_GetAmxString(amx, params[3], 0, &len); - if (params[4] == -1) -@@ -147,16 +198,22 @@ static cell AMX_NATIVE_CALL get_pdata_en - { - int index=params[1]; - int iOffset=params[2]; - - CHECK_ENTITY(index); - - #ifdef __linux__ - iOffset += params[3]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 3) -+ iOffset += params[3]; -+ else -+ iOffset += params[4]; - #endif - - edict_t *pEdict = *(edict_t **)((char *)(INDEXENT2(index)->pvPrivateData) + iOffset); - - if (pEdict == NULL) - { - return -1; - } -diff --git a/dlls/fakemeta/sdk/CString.h b/dlls/fakemeta/sdk/CString.h ---- a/dlls/fakemeta/sdk/CString.h -+++ b/dlls/fakemeta/sdk/CString.h -@@ -239,17 +239,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; i - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/fakemeta/sdk/amxxmodule.h b/dlls/fakemeta/sdk/amxxmodule.h ---- a/dlls/fakemeta/sdk/amxxmodule.h -+++ b/dlls/fakemeta/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/fun/Makefile b/dlls/fun/Makefile ---- a/dlls/fun/Makefile -+++ b/dlls/fun/Makefile -@@ -1,78 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = fun -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = fun - - OBJECTS = sdk/amxxmodule.cpp fun.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) fun -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --fun: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/fun/sdk/amxxmodule.cpp b/dlls/fun/sdk/amxxmodule.cpp ---- a/dlls/fun/sdk/amxxmodule.cpp -+++ b/dlls/fun/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/fun/sdk/amxxmodule.h b/dlls/fun/sdk/amxxmodule.h ---- a/dlls/fun/sdk/amxxmodule.h -+++ b/dlls/fun/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/geoip/Makefile b/dlls/geoip/Makefile ---- a/dlls/geoip/Makefile -+++ b/dlls/geoip/Makefile -@@ -1,86 +1,127 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = geoip -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = geoip - - OBJECTS = sdk/amxxmodule.cpp GeoIP.c geoip_amxx.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --# Strip C++ options for compiling *.c files --C_CFLAGS := $(shell echo $(CFLAGS) | sed -e 's/-fvisibility-inlines-hidden//' | sed -e 's/-fno-rtti//') -- --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) --OBJ_LINUX := $(OBJ_LINUX:%.c=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+OBJ_BIN := $(OBJ_BIN:%.c=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - $(BIN_DIR)/%.o: %.c -- $(CPP) $(INCLUDE) $(C_CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) geoip -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --geoip: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) - -diff --git a/dlls/geoip/sdk/amxxmodule.cpp b/dlls/geoip/sdk/amxxmodule.cpp ---- a/dlls/geoip/sdk/amxxmodule.cpp -+++ b/dlls/geoip/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/geoip/sdk/amxxmodule.h b/dlls/geoip/sdk/amxxmodule.h ---- a/dlls/geoip/sdk/amxxmodule.h -+++ b/dlls/geoip/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/hamsandwich/Makefile b/dlls/hamsandwich/Makefile ---- a/dlls/hamsandwich/Makefile -+++ b/dlls/hamsandwich/Makefile -@@ -1,74 +1,124 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - -+PROJECT = hamsandwich - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing -DNDEBUG -+OBJECTS = sdk/amxxmodule.cpp amxx_api.cpp config_parser.cpp hook_callbacks.cpp hook_native.cpp \ -+ srvcmd.cpp call_funcs.cpp hook_create.cpp DataHandler.cpp pdata.cpp - --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --#CPP = gcc-2.95 --NAME = hamsandwich -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --BIN_SUFFIX = amxx_i386.so -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --OBJECTS = sdk/amxxmodule.cpp amxx_api.cpp config_parser.cpp \ --hook_callbacks.cpp hook_native.cpp srvcmd.cpp \ --call_funcs.cpp hook_create.cpp DataHandler.cpp pdata.cpp -+LINK = - -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(HLSDK)/pm_shared -I$(MM_ROOT) -Isdk - --LINK = -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -I$(HLSDK)/pm_shared -I./tableentries -Isdk -+OS := $(shell uname -s) - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared -+endif -+ -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) - - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- -- ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -- endif -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -Wall -Wno-non-virtual-dtor -fno-exceptions -DHAVE_STDINT_H -fno-rtti -Werror -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) hamsandwich -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --hamsandwich: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/*.o -- rm -rf Release/sdk/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/*.o -- rm -rf Debug/sdk/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -- -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/hamsandwich/Trampolines.h b/dlls/hamsandwich/Trampolines.h ---- a/dlls/hamsandwich/Trampolines.h -+++ b/dlls/hamsandwich/Trampolines.h -@@ -41,20 +41,22 @@ - #define WIN32_LEAN_AND_MEAN - #endif // WIN32_LEAN_AND_MEAN - #if _MSC_VER >= 1400 - #ifdef offsetof - #undef offsetof - #endif // offsetof - #endif // _MSC_VER >= 1400 - #include --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - #include -+#if defined (__linux__) - #include - #endif -+#endif - #include // size_t - #include // memcpy - #include // memalign - #include - - - namespace Trampolines - { -@@ -108,24 +110,24 @@ namespace Trampolines - const unsigned int codePushParamReplace = 2; - - - /** - * Takes the "this" pointer from the trampoline and - * pushes it onto the target's stack. - */ - const unsigned char codePushThis[] = { -- #if defined _WIN32 -+ #if defined(_WIN32) - 0x51 // push ecx -- #elif defined __linux__ -+ #elif defined(__linux__) || defined(__APPLE__) - 0xFF, 0x75, 0x04 // pushl [ebp+0x08h] - #endif - }; - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - const int codePushThisReplace = 2; - #endif - - /** - * Pushes a raw number onto the target's stack - */ - const unsigned char codePushID[] = { - 0x68, 0xDE, 0xFA, 0xAD, 0xDE // push DEADFADEh -@@ -405,34 +407,34 @@ namespace Trampolines - return; - } - - unsigned char code[sizeof(::Trampolines::Bytecode::codePushThis)]; - - memcpy(&code[0],&::Trampolines::Bytecode::codePushThis[0],sizeof(::Trampolines::Bytecode::codePushThis)); - - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - unsigned char *c=&code[0]; - - union - { - int i; - unsigned char b[4]; - } bi; - - bi.i=m_paramstart+8; - - c+=::Trampolines::Bytecode::codePushThisReplace; - *c++=bi.b[0]; - #endif - - Append(&code[0],sizeof(::Trampolines::Bytecode::codePushThis)); - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - m_mystack+=4; - #endif - m_calledstack+=4; - }; - - /** - * Frees what is estimated as the stack usage of the trampoline. - */ -@@ -526,17 +528,17 @@ namespace Trampolines - - /** - * Takes a parameter passed on the trampoline's stack and inserts it into the callee's stack. - * - * @param which The parameter number to push. 1-based. "thiscall" trampolines automatically compensate for the off-number on GCC. - */ - void PushParam(int which) - { --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - if (m_thiscall) - { - which++; - } - #endif - which=which*4; - which+=m_paramstart+4; - -@@ -603,20 +605,24 @@ namespace Trampolines - //void *ret=(void *)m_buffer; - - if (size) - { - *size=m_size; - } - - // Reallocate with proper flags --#if defined _WIN32 -+#if defined(_WIN32) - void *ret=VirtualAlloc(NULL, m_size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); --#elif defined __linux__ -+#elif defined(__GNUC__) -+# if defined(__APPLE__) -+ void *ret = valloc(m_size); -+# else - void *ret=memalign(sysconf(_SC_PAGESIZE), m_size); -+# endif - mprotect(ret,m_size,PROT_READ|PROT_WRITE|PROT_EXEC); - #endif - memcpy(ret, m_buffer, m_size); - - - m_size=0; - - free(m_buffer); -@@ -670,27 +676,27 @@ inline void *CreateGenericTrampoline(boo - { - tramp.PushThis(); - } - tramp.PushNum(reinterpret_cast(extraptr)); - tramp.Call(callee); - tramp.FreeTargetStack(); - if (voidcall) - { --#if defined _WIN32 -+#if defined(_WIN32) - tramp.VoidEpilogueAndFree(); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - tramp.VoidEpilogue(); - #endif - } - else - { --#if defined _WIN32 -+#if defined(_WIN32) - tramp.ReturnEpilogueAndFree(); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - tramp.ReturnEpilogue(); - #endif - } - return tramp.Finish(NULL); - - }; - - -diff --git a/dlls/hamsandwich/amxx_api.cpp b/dlls/hamsandwich/amxx_api.cpp ---- a/dlls/hamsandwich/amxx_api.cpp -+++ b/dlls/hamsandwich/amxx_api.cpp -@@ -74,18 +74,20 @@ void OnAmxxAttach(void) - MF_AddNatives(RegisterNatives); - MF_AddNatives(ReturnNatives); - MF_AddNatives(pdata_natives); - } - else - { - #ifdef _WIN32 - MF_Log("Error: pev and base not set for section \"%s windows\", cannot register natives.", MF_GetModname()); --#elif defined __linux__ -+#elif defined(__linux__) - MF_Log("Error: pev and base not set for section \"%s linux\", cannot register natives.", MF_GetModname()); -+#elif defined(__APPLE__) -+ MF_Log("Error: pev and base not set for section \"%s mac\", cannot register natives.", MF_GetModname()); - #endif - } - } - else - { - MF_Log("Error: Cannot read config file, natives not registered!"); - } - } -diff --git a/dlls/hamsandwich/call_funcs.cpp b/dlls/hamsandwich/call_funcs.cpp ---- a/dlls/hamsandwich/call_funcs.cpp -+++ b/dlls/hamsandwich/call_funcs.cpp -@@ -109,181 +109,181 @@ inline void *_GetFunction(void *pthis, i - gDoForwards=true; \ - } - - - cell Call_Void_Void(AMX *amx, cell *params) - { - SETUP(0); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv); - #endif - return 1; - } - - cell Call_Int_Void(AMX *amx, cell *params) - { - SETUP(0); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv); - #endif - } - - cell Call_Void_Entvar(AMX *amx, cell *params) - { - SETUP(1); - - int id3=*MF_GetAmxAddr(amx, params[3]); - - CHECK_ENTITY(id3); - - entvars_t *ev1=&(INDEXENT_NEW(id3)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, ev1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, ev1); - #endif - return 1; - } - - - cell Call_Void_Cbase(AMX *amx, cell *params) - { - SETUP(1); - - int id3=*MF_GetAmxAddr(amx, params[3]); - - CHECK_ENTITY(id3); - - void *pv1=(INDEXENT_NEW(id3)->pvPrivateData); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, pv1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, pv1); - #endif - return 1; - } - - cell Call_Int_Float_Int(AMX *amx, cell *params) - { - SETUP(2); - - float f3=amx_ftoc2(*MF_GetAmxAddr(amx, params[3])); - int i4=*MF_GetAmxAddr(amx, params[4]); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, f3, i4); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, f3, i4); - #endif - } - - - cell Call_Void_Entvar_Int(AMX *amx, cell *params) - { - SETUP(2); - - int id3=*MF_GetAmxAddr(amx, params[3]); - int i4=*MF_GetAmxAddr(amx, params[4]); - - CHECK_ENTITY(id3); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, ev3, i4); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, ev3, i4); - #endif - return 1; - } - - - cell Call_Int_Cbase(AMX *amx, cell *params) - { - SETUP(1); - - int id3=*MF_GetAmxAddr(amx, params[3]); - - CHECK_ENTITY(id3); - - void *pv1=(INDEXENT_NEW(id3)->pvPrivateData); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, pv1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, pv1); - #endif - } - - cell Call_Void_Int_Int(AMX *amx, cell *params) - { - SETUP(2); - - int i3=*MF_GetAmxAddr(amx, params[3]); - int i4=*MF_GetAmxAddr(amx, params[4]); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, i3, i4); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, i3, i4); - #endif - return 1; - } - - cell Call_Int_Int_Str_Int(AMX *amx, cell *params) - { - - SETUP(3); - - int i3=*MF_GetAmxAddr(amx, params[3]); - char *sz4=MF_GetAmxString(amx, params[4], 0, NULL); - int i5=*MF_GetAmxAddr(amx, params[5]); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, i3, sz4, i5); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, i3, sz4, i5); - #endif - } - - cell Call_Int_Int(AMX *amx, cell *params) - { - SETUP(1); - - int i3=*MF_GetAmxAddr(amx, params[3]); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, i3); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, i3); - #endif - } - - cell Call_Int_Entvar(AMX *amx, cell *params) - { - SETUP(1); - - int id3=*MF_GetAmxAddr(amx, params[3]); - - CHECK_ENTITY(id3); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, ev3); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, ev3); - #endif - } - - cell Call_Int_Entvar_Entvar_Float_Int(AMX *amx, cell *params) - { - SETUP(4); - -@@ -293,19 +293,19 @@ cell Call_Int_Entvar_Entvar_Float_Int(AM - int i6=*MF_GetAmxAddr(amx, params[6]); - - CHECK_ENTITY(id3); - CHECK_ENTITY(id4); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); - entvars_t *ev4=&(INDEXENT_NEW(id4)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, ev3, ev4, f5, i6); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, ev3, ev4, f5, i6); - #endif - } - - cell Call_Int_Entvar_Entvar_Float_Float_Int(AMX *amx, cell *params) - { - SETUP(5); - -@@ -316,32 +316,32 @@ cell Call_Int_Entvar_Entvar_Float_Float_ - int i7=*MF_GetAmxAddr(amx, params[7]); - - CHECK_ENTITY(id3); - CHECK_ENTITY(id4); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); - entvars_t *ev4=&(INDEXENT_NEW(id4)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, ev3, ev4, f5, f6, i7); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, ev3, ev4, f5, f6, i7); - #endif - } - - cell Call_Void_Int(AMX *amx, cell *params) - { - SETUP(1); - - int i3=*MF_GetAmxAddr(amx, params[3]); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, i3); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, i3); - #endif - - return 1; - } - - cell Call_Void_Cbase_Cbase_Int_Float(AMX *amx, cell *params) - { -@@ -353,19 +353,19 @@ cell Call_Void_Cbase_Cbase_Int_Float(AMX - float f6=amx_ctof(*MF_GetAmxAddr(amx, params[6])); - - CHECK_ENTITY(id3); - CHECK_ENTITY(id4); - - void *p3=IndexToPrivate(id3); - void *p4=IndexToPrivate(id4); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, p3, p4, i5, f6); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, p3, p4, i5, f6); - #endif - - return 1; - } - - cell Call_Void_Entvar_Float_Vector_Trace_Int(AMX *amx, cell *params) - { -@@ -387,19 +387,19 @@ cell Call_Void_Entvar_Float_Vector_Trace - MF_LogError(amx, AMX_ERR_NATIVE, "Null traceresult provided."); - - return 0; - } - - CHECK_ENTITY(id3); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, ev3, f4, v5, tr6, i7); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, ev3, f4, v5, tr6, i7); - #endif - - return 1; - } - - cell Call_Void_Float_Vector_Trace_Int(AMX *amx, cell *params) - { -@@ -417,55 +417,55 @@ cell Call_Void_Float_Vector_Trace_Int(AM - - if (tr5==NULL) - { - MF_LogError(amx, AMX_ERR_NATIVE, "Null traceresult provided."); - - return 0; - } - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, f3, v4, tr5, i6); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, f3, v4, tr5, i6); - #endif - - return 1; - } - - cell Call_Str_Void(AMX *amx, cell *params) - { - SETUP(2); - --#ifdef _WIN32 -+#if defined(_WIN32) - char *v=reinterpret_cast(__func)(pv, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - char *v=reinterpret_cast(__func)(pv); - #endif - return MF_SetAmxString(amx, params[3], v == NULL ? "" : v, *MF_GetAmxAddr(amx, params[4])); - - } - - cell Call_Cbase_Void(AMX *amx, cell *params) - { - SETUP(0); --#ifdef _WIN32 -+#if defined(_WIN32) - void *ret=reinterpret_cast(__func)(pv, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - void *ret=reinterpret_cast(__func)(pv); - #endif - return PrivateToIndex(ret); - } - - cell Call_Vector_Void(AMX *amx, cell *params) - { - SETUP(1); --#ifdef _WIN32 -+#if defined(_WIN32) - Vector ret=reinterpret_cast(__func)(pv, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - Vector ret=reinterpret_cast(__func)(pv); - #endif - float *out=(float *)MF_GetAmxAddr(amx, params[3]); - out[0]=ret.x; - out[1]=ret.y; - out[2]=ret.z; - - return 1; -@@ -476,19 +476,19 @@ cell Call_Vector_pVector(AMX *amx, cell - SETUP(2); - - Vector v3; - float *fl3=(float *)MF_GetAmxAddr(amx, params[3]); - v3.x=fl3[0]; - v3.y=fl3[1]; - v3.z=fl3[2]; - --#ifdef _WIN32 -+#if defined(_WIN32) - Vector ret=reinterpret_cast(__func)(pv, 0, &v3); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - Vector ret=reinterpret_cast(__func)(pv, &v3); - #endif - float *out=(float *)MF_GetAmxAddr(amx, params[4]); - out[0]=ret.x; - out[1]=ret.y; - out[2]=ret.z; - - fl3[0]=v3.x; -@@ -503,19 +503,19 @@ cell Call_Int_pVector(AMX *amx, cell *pa - SETUP(1); - - Vector v3; - float *fl3=(float *)MF_GetAmxAddr(amx, params[3]); - v3.x=fl3[0]; - v3.y=fl3[1]; - v3.z=fl3[2]; - --#ifdef _WIN32 -+#if defined(_WIN32) - int ret=reinterpret_cast(__func)(pv, 0, &v3); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - int ret=reinterpret_cast(__func)(pv, &v3); - #endif - - fl3[0]=v3.x; - fl3[1]=v3.y; - fl3[2]=v3.z; - - return ret; -@@ -528,114 +528,114 @@ cell Call_Void_Entvar_Float_Float(AMX *a - int id3=*MF_GetAmxAddr(amx, params[3]); - float f4=amx_ctof2(*MF_GetAmxAddr(amx, params[4])); - float f5=amx_ctof2(*MF_GetAmxAddr(amx, params[5])); - - CHECK_ENTITY(id3); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, ev3, f4, f5); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, ev3, f4, f5); - #endif - - return 1; - } - - cell Call_Int_pFloat_pFloat(AMX *amx, cell *params) - { - SETUP(2); - - float f3=amx_ctof2(*MF_GetAmxAddr(amx, params[3])); - float f4=amx_ctof2(*MF_GetAmxAddr(amx, params[4])); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, &f3, &f4); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, &f3, &f4); - #endif - - } - - cell Call_Void_Entvar_Float(AMX *amx, cell *params) - { - SETUP(2); - - int id3=*MF_GetAmxAddr(amx, params[3]); - float f4=amx_ctof2(*MF_GetAmxAddr(amx, params[4])); - - CHECK_ENTITY(id3); - - entvars_t *ev3=&(INDEXENT_NEW(id3)->v); - --#ifdef _WIN32 -+#if defined(_WIN32) - return reinterpret_cast(__func)(pv, 0, ev3, f4); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - return reinterpret_cast(__func)(pv, ev3, f4); - #endif - } - - cell Call_Void_Int_Int_Int(AMX *amx, cell *params) - { - SETUP(2); - - int i3=*MF_GetAmxAddr(amx, params[3]); - int i4=*MF_GetAmxAddr(amx, params[4]); - int i5=*MF_GetAmxAddr(amx, params[5]); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, i3, i4, i5); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, i3, i4, i5); - #endif - return 1; - } - - cell Call_Void_ItemInfo(AMX *amx, cell *params) - { - SETUP(1); - - void *ptr=reinterpret_cast(*MF_GetAmxAddr(amx, params[3])); - - if (ptr==0) - { - MF_LogError(amx, AMX_ERR_NATIVE, "Null ItemInfo handle!"); - return 0; - } --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, ptr); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, ptr); - #endif - return 1; - } - - cell Call_Float_Void(AMX *amx, cell *params) - { - SETUP(1); - --#ifdef _WIN32 -+#if defined(_WIN32) - float ret=reinterpret_cast(__func)(pv, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - float ret=reinterpret_cast(__func)(pv); - #endif - *MF_GetAmxAddr(amx, params[3])=amx_ftoc2(ret); - - return 1; - - } - cell Call_Void_Float_Int(AMX* amx, cell* params) - { - SETUP(2); - --#ifdef _WIN32 -+#if defined(_WIN32) - reinterpret_cast(__func)(pv, 0, amx_ctof2(params[3]), static_cast(params[4])); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(__func)(pv, amx_ctof2(params[3]), static_cast(params[4])); - #endif - return 1; - } - cell Call_Deprecated(AMX *amx, cell *params) - { - MF_LogError(amx, AMX_ERR_NATIVE, "Ham function is deprecated."); - -diff --git a/dlls/hamsandwich/config/hamdata.ini b/dlls/hamsandwich/config/hamdata.ini ---- a/dlls/hamsandwich/config/hamdata.ini -+++ b/dlls/hamsandwich/config/hamdata.ini -@@ -32,17 +32,17 @@ - ; eg: If they work on non-Steam CS 1.6 this is coincidental, if they do - ; not work on non-Steam CS 1.6 this will not be officially fixed. - ; - ; Mirrors: These take the name of one mod, and copy all of its data to another - ; name. An example of a use for this would be cstrike and czero: they - ; use the same binary so all of its vtable offsets are guaranteed to - ; be identical. Mirrors should always come first in the file! - ; --; Version: $Id$ -+; Version: $Id: hamdata.ini 3687 2008-03-04 18:51:35Z sawce $ - - - @mirror cstrike czero - @mirror ns nsp - - ; TODO: check these - all are estimates - @section cstrike linux - pev 4 -@@ -256,16 +256,126 @@ - weapon_shouldweaponidle 92 - weapon_usedecrement 93 - - cstrike_restart 2 - cstrike_roundrespawn 84 - cstrike_item_candrop 63 - cstrike_item_getmaxspeed 78 - @end -+ -+@section cstrike mac -+ pev 4 -+ base 0x0 -+ -+ spawn 0 -+ precache 1 -+ keyvalue 3 -+ objectcaps 6 -+ activate 7 -+ setobjectcollisionbox 8 -+ classify 9 -+ deathnotice 10 -+ traceattack 11 -+ takedamage 12 -+ takehealth 13 -+ killed 14 -+ bloodcolor 15 -+ tracebleed 16 -+ istriggered 17 -+ mymonsterpointer 18 -+ mysquadmonsterpointer 19 -+ gettogglestate 20 -+ addpoints 21 -+ addpointstoteam 22 -+ addplayeritem 23 -+ removeplayeritem 24 -+ giveammo 25 -+ getdelay 26 -+ ismoving 27 -+ overridereset 28 -+ damagedecal 29 -+ settogglestate 30 -+ startsneaking 31 -+ stopsneaking 32 -+ oncontrols 33 -+ issneaking 34 -+ isalive 35 -+ isbspmodel 36 -+ reflectgauss 37 -+ hastarget 38 -+ isinworld 39 -+ isplayer 40 -+ isnetclient 41 -+ teamid 42 -+ getnexttarget 43 -+ think 44 -+ touch 45 -+ use 46 -+ blocked 47 -+ respawn 48 -+ updateowner 49 -+ fbecomeprone 50 -+ center 51 -+ eyeposition 52 -+ earposition 53 -+ bodytarget 54 -+ illumination 55 -+ fvisible 56 -+ fvecvisible 57 -+ -+ player_jump 76 -+ player_duck 77 -+ player_prethink 78 -+ player_postthink 79 -+ player_getgunposition 80 -+ player_shouldfadeondeath 66 -+ player_impulsecommands 83 -+ player_updateclientdata 82 -+ -+ item_addtoplayer 59 -+ item_addduplicate 60 -+ item_getiteminfo 61 -+ item_candeploy 62 -+ item_deploy 64 -+ item_canholster 66 -+ item_holster 67 -+ item_updateiteminfo 68 -+ item_preframe 69 -+ item_postframe 70 -+ item_drop 71 -+ item_kill 72 -+ item_attachtoplayer 73 -+ item_primaryammoindex 74 -+ item_secondaryammoindex 75 -+ item_updateclientdata 76 -+ item_getweaponptr 77 -+ item_itemslot 79 -+ -+ weapon_extractammo 80 -+ weapon_extractclipammo 81 -+ weapon_addweapon 82 -+ weapon_playemptysound 83 -+ weapon_resetemptysound 84 -+ weapon_sendweaponanim 85 -+ weapon_isusable 86 -+ weapon_primaryattack 87 -+ weapon_secondaryattack 88 -+ weapon_reload 89 -+ weapon_weaponidle 90 -+ weapon_retireweapon 91 -+ weapon_shouldweaponidle 92 -+ weapon_usedecrement 93 -+ -+ cstrike_restart 2 -+ cstrike_roundrespawn 84 -+ cstrike_item_candrop 63 -+ cstrike_item_getmaxspeed 78 -+@end -+ - @section dod linux - pev 0 - base 0x154 - - spawn 5 - precache 6 - keyvalue 7 - objectcaps 10 -@@ -1742,18 +1852,122 @@ - weapon_isusable 82 - weapon_primaryattack 83 - weapon_secondaryattack 84 - weapon_reload 85 - weapon_weaponidle 86 - weapon_retireweapon 87 - weapon_shouldweaponidle 88 - weapon_usedecrement 89 -+@end -+ -+@section valve mac -+ pev 4 -+ base 0x0 - -+ spawn 0 -+ precache 1 -+ keyvalue 2 -+ objectcaps 5 -+ activate 6 -+ setobjectcollisionbox 7 -+ classify 8 -+ deathnotice 9 -+ traceattack 10 -+ takedamage 11 -+ takehealth 12 -+ killed 13 -+ bloodcolor 14 -+ tracebleed 15 -+ istriggered 16 -+ mymonsterpointer 17 -+ mysquadmonsterpointer 18 -+ gettogglestate 19 -+ addpoints 20 -+ addpointstoteam 21 -+ addplayeritem 22 -+ removeplayeritem 23 -+ giveammo 24 -+ getdelay 25 -+ ismoving 26 -+ overridereset 27 -+ damagedecal 28 -+ settogglestate 29 -+ startsneaking 30 -+ stopsneaking 31 -+ oncontrols 32 -+ issneaking 33 -+ isalive 34 -+ isbspmodel 35 -+ reflectgauss 36 -+ hastarget 37 -+ isinworld 38 -+ isplayer 39 -+ isnetclient 40 -+ teamid 41 -+ getnexttarget 42 -+ think 43 -+ touch 44 -+ use 45 -+ blocked 46 -+ respawn 47 -+ updateowner 48 -+ fbecomeprone 49 -+ center 50 -+ eyeposition 51 -+ earposition 52 -+ bodytarget 53 -+ illumination 54 -+ fvisible 55 -+ fvecvisible 56 -+ -+ player_jump 125 -+ player_duck 126 -+ player_prethink 127 -+ player_postthink 128 -+ player_getgunposition 119 -+ player_shouldfadeondeath 60 -+ player_impulsecommands 130 -+ player_updateclientdata 129 -+ -+ item_addtoplayer 58 -+ item_addduplicate 59 -+ item_getiteminfo 60 -+ item_candeploy 61 -+ item_deploy 62 -+ item_canholster 63 -+ item_holster 64 -+ item_updateiteminfo 65 -+ item_preframe 66 -+ item_postframe 67 -+ item_drop 68 -+ item_kill 69 -+ item_attachtoplayer 70 -+ item_primaryammoindex 71 -+ item_secondaryammoindex 72 -+ item_updateclientdata 73 -+ item_getweaponptr 74 -+ item_itemslot 75 -+ -+ weapon_extractammo 76 -+ weapon_extractclipammo 77 -+ weapon_addweapon 78 -+ weapon_playemptysound 79 -+ weapon_resetemptysound 80 -+ weapon_sendweaponanim 81 -+ weapon_isusable 82 -+ weapon_primaryattack 83 -+ weapon_secondaryattack 84 -+ weapon_reload 85 -+ weapon_weaponidle 86 -+ weapon_retireweapon 87 -+ weapon_shouldweaponidle 88 -+ weapon_usedecrement 89 - @end -+ - ; Sven-Coop has no linux binaries. This makes disassembly much harder. - ; These offsets were contributed by ts2do - @section SvenCoop windows - pev 4 - base 0x0 - - spawn 0 - precache 1 -diff --git a/dlls/hamsandwich/config_parser.cpp b/dlls/hamsandwich/config_parser.cpp ---- a/dlls/hamsandwich/config_parser.cpp -+++ b/dlls/hamsandwich/config_parser.cpp -@@ -235,18 +235,20 @@ int read_start_section(char *data) - { - if (strncmp(data, CurrentModName, strlen(CurrentModName))==0) - { - data+=strlen(CurrentModName)+1; - trim_line(data); - - #ifdef _WIN32 - if (strcmp(data, "windows")==0) --#elif defined __linux__ -+#elif defined(__linux__) - if (strcmp(data, "linux")==0) -+#elif defined(__APPLE__) -+ if (strcmp(data, "mac")==0) - #endif - { - return 1; - } - } - return 0; - } - int read_number(char *input) -diff --git a/dlls/hamsandwich/hook.h b/dlls/hamsandwich/hook.h ---- a/dlls/hamsandwich/hook.h -+++ b/dlls/hamsandwich/hook.h -@@ -59,48 +59,48 @@ public: - int **ivtable=(int **)vtable; - func=(void *)ivtable[entry]; - - // now install a trampoline - // (int thiscall, int voidcall, int paramcount, void *extraptr) - tramp=CreateGenericTrampoline(true, voidcall, paramcount, (void*)this, target); - - // Insert into vtable --#if defined _WIN32 -+#if defined(_WIN32) - DWORD OldFlags; - VirtualProtect(&ivtable[entry],sizeof(int*),PAGE_READWRITE,&OldFlags); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - void *addr = (void *)ALIGN(&ivtable[entry]); - mprotect(addr,sysconf(_SC_PAGESIZE),PROT_READ|PROT_WRITE); - #endif - ivtable[entry]=(int*)tramp; - - size_t len=strlen(name); - ent=new char[len+1]; - - snprintf(ent,len+1,"%s",name); - }; - - ~Hook() - { - // Insert the original function back into the vtable - int **ivtable=(int **)vtable; - --#if defined _WIN32 -+#if defined(_WIN32) - DWORD OldFlags; - VirtualProtect(&ivtable[entry],sizeof(int*),PAGE_READWRITE,&OldFlags); --#elif defined __linux_ -+#elif defined(__linux_) || defined(__APPLE__) - void *addr = (void *)ALIGN(&ivtable[entry]); - mprotect(addr,sysconf(_SC_PAGESIZE),PROT_READ|PROT_WRITE); - #endif - - ivtable[entry]=(int *)func; --#if defined _WIN32 -+#if defined(_WIN32) - VirtualFree(tramp, 0, MEM_RELEASE); --#elif __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - free(tramp); - #endif - - delete[] ent; - - CVector::iterator end=pre.end(); - - for (CVector::iterator i=pre.begin(); -diff --git a/dlls/hamsandwich/hook_callbacks.cpp b/dlls/hamsandwich/hook_callbacks.cpp ---- a/dlls/hamsandwich/hook_callbacks.cpp -+++ b/dlls/hamsandwich/hook_callbacks.cpp -@@ -161,19 +161,19 @@ void Hook_Void_Void(Hook *hook, void *pt - { - PUSH_VOID() - - MAKE_VECTOR() - - PRE_START() - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis,0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis); - #endif - - POST_START() - POST_END() - - KILL_VECTOR() - POP() -@@ -187,19 +187,19 @@ int Hook_Int_Void(Hook *hook, void *pthi - - MAKE_VECTOR() - - - PRE_START() - PRE_END() - - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis,0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis); - #endif - - POST_START() - POST_END() - - KILL_VECTOR() - POP() -@@ -217,19 +217,19 @@ void Hook_Void_Entvar(Hook *hook, void * - MAKE_VECTOR() - - P_ENTVAR(entvar, iOther) - - PRE_START() - , iOther - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, entvar); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, entvar); - #endif - - POST_START() - , iOther - POST_END() - - KILL_VECTOR() -@@ -245,19 +245,19 @@ void Hook_Void_Cbase(Hook *hook, void *p - MAKE_VECTOR() - - P_CBASE(other, iOther) - - PRE_START() - , iOther - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, other); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, other); - #endif - - POST_START() - , iOther - POST_END() - - KILL_VECTOR() -@@ -274,19 +274,19 @@ int Hook_Int_Float_Int(Hook *hook, void - - P_FLOAT(f1) - P_INT(i1) - - PRE_START() - , f1, i1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, f1, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, f1, i1); - #endif - - POST_START() - , f1, i1 - POST_END() - - KILL_VECTOR() -@@ -304,19 +304,19 @@ void Hook_Void_Entvar_Int(Hook *hook, vo - - P_ENTVAR(ev1, iOther) - P_INT(i1) - - PRE_START() - , iOther, i1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, ev1, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, ev1, i1); - #endif - - POST_START() - , iOther, i1 - POST_END() - - KILL_VECTOR() -@@ -334,19 +334,19 @@ int Hook_Int_Cbase(Hook *hook, void *pth - - MAKE_VECTOR() - - P_CBASE(cb1, iOther) - - PRE_START() - , iOther - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, cb1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, cb1); - #endif - - POST_START() - , iOther - POST_END() - - KILL_VECTOR() -@@ -362,19 +362,19 @@ void Hook_Void_Int_Int(Hook *hook, void - MAKE_VECTOR() - - P_INT(i1) - P_INT(i2) - - PRE_START() - ,i1, i2 - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, i1, i2); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, i1, i2); - #endif - - POST_START() - ,i1, i2 - POST_END() - - KILL_VECTOR() -@@ -393,19 +393,19 @@ int Hook_Int_Int_Str_Int(Hook *hook, voi - - P_INT(i1) - P_STR(a) - P_INT(i2) - - PRE_START() - ,i1, a.c_str(), i2 - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, i1, a.c_str(), i2); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, i1, a.c_str(), i2); - #endif - - POST_START() - ,i1, a.c_str(), i2 - POST_END() - - KILL_VECTOR() -@@ -424,19 +424,19 @@ int Hook_Int_Int(Hook *hook, void *pthis - MAKE_VECTOR() - - P_INT(i1) - - PRE_START() - ,i1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, i1); - #endif - - POST_START() - ,i1 - POST_END() - - KILL_VECTOR() -@@ -455,19 +455,19 @@ int Hook_Int_Entvar(Hook *hook, void *pt - - MAKE_VECTOR() - P_ENTVAR(ev1, iOther) - - PRE_START() - ,iOther - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, ev1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, ev1); - #endif - - POST_START() - , iOther - POST_END() - - KILL_VECTOR() -@@ -492,19 +492,19 @@ int Hook_Int_Entvar_Entvar_Float_Int(Hoo - P_FLOAT(damage) - P_INT(damagebits) - - PRE_START() - ,iInflictor, iAttacker, damage, damagebits - PRE_END() - - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, inflictor, attacker, damage, damagebits); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, inflictor, attacker, damage, damagebits); - #endif - - POST_START() - ,iInflictor, iAttacker, damage, damagebits - POST_END() - - KILL_VECTOR() -@@ -527,19 +527,19 @@ int Hook_Int_Entvar_Entvar_Float_Float_I - P_FLOAT(unknown) - P_INT(damagebits) - - PRE_START() - ,iInflictor, iAttacker, damage, unknown, damagebits - PRE_END() - - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, inflictor, attacker, damage, unknown, damagebits); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, inflictor, attacker, damage, unknown, damagebits); - #endif - - POST_START() - ,iInflictor, iAttacker, damage, unknown, damagebits - POST_END() - - KILL_VECTOR() -@@ -554,19 +554,19 @@ void Hook_Void_Int(Hook *hook, void *pth - - MAKE_VECTOR() - P_INT(i1) - - PRE_START() - , i1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, i1); - #endif - - POST_START() - ,i1 - POST_END() - - KILL_VECTOR() -@@ -585,19 +585,19 @@ void Hook_Void_Cbase_Cbase_Int_Float(Hoo - P_INT(i1) - P_FLOAT(f1) - - PRE_START() - ,iCaller, iActivator, i1, f1 - PRE_END() - - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, cb1, cb2, i1, f1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, cb1, cb2, i1, f1); - #endif - - POST_START() - ,iCaller, iActivator, i1, f1 - POST_END() - - KILL_VECTOR() -@@ -615,19 +615,19 @@ void Hook_Void_Entvar_Float_Vector_Trace - P_VECTOR(v1) - P_TRACE(tr1) - P_INT(i1) - - PRE_START() - ,iev1, f1, MF_PrepareCellArrayA(reinterpret_cast(&v1), 3, false), tr1, i1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, ev1, f1, v1, tr1, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, ev1, f1, v1, tr1, i1); - #endif - - POST_START() - , iev1, f1, MF_PrepareCellArrayA(reinterpret_cast(&v1), 3, false), tr1, i1 - POST_END() - - KILL_VECTOR() -@@ -643,19 +643,19 @@ void Hook_Void_Float_Vector_Trace_Int(Ho - P_VECTOR(v1) - P_TRACE(tr1) - P_INT(i1) - - PRE_START() - , f1, MF_PrepareCellArrayA(reinterpret_cast(&v1), 3, false), tr1, i1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, f1, v1, tr1, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, f1, v1, tr1, i1); - #endif - - POST_START() - , f1, MF_PrepareCellArrayA(reinterpret_cast(&v1), 3, false), tr1, i1 - POST_END() - - KILL_VECTOR() -@@ -667,19 +667,19 @@ const char *Hook_Str_Void(Hook *hook, vo - String origret; - - MAKE_VECTOR() - - PUSH_STRING() - PRE_START() - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret.assign(reinterpret_cast(hook->func)(pthis, 0)); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret.assign(reinterpret_cast(hook->func)(pthis)); - #endif - - POST_START() - POST_END() - - KILL_VECTOR() - POP() -@@ -694,69 +694,69 @@ void *Hook_Cbase_Void(Hook *hook, void * - void *origret=NULL; - PUSH_CBASE() - - MAKE_VECTOR() - - PRE_START() - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis); - #endif - - POST_START() - POST_END() - - KILL_VECTOR() - POP() - CHECK_RETURN() - return ret; - - } - - #ifdef _WIN32 - void Hook_Vector_Void(Hook *hook, void *pthis, Vector *out) --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - void Hook_Vector_Void(Hook *hook, Vector *out, void *pthis) - #endif - { - Vector ret; - Vector origret; - - PUSH_VECTOR() - - MAKE_VECTOR() - - memset(&ret, 0x0, sizeof(Vector)); - memset(&origret, 0x0, sizeof(Vector)); - - PRE_START() - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, &origret); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis); - #endif - - POST_START() - POST_END() - - KILL_VECTOR() - POP() - CHECK_RETURN_VEC() - memcpy(out, &ret, sizeof(Vector)); - - } - #ifdef _WIN32 - void Hook_Vector_pVector(Hook *hook, void *pthis, Vector *out, Vector *v1) --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - void Hook_Vector_pVector(Hook *hook, Vector *out, void *pthis, Vector *v1) - #endif - { - Vector ret; - Vector origret; - - PUSH_VECTOR() - -@@ -765,19 +765,19 @@ void Hook_Vector_pVector(Hook *hook, Vec - - memset(&ret, 0x0, sizeof(Vector)); - memset(&origret, 0x0, sizeof(Vector)); - - PRE_START() - , MF_PrepareCellArrayA(reinterpret_cast(v1), 3, false) - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, &origret, v1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, v1); - #endif - - POST_START() - , MF_PrepareCellArrayA(reinterpret_cast(v1), 3, false) - POST_END() - - KILL_VECTOR() -@@ -795,19 +795,19 @@ int Hook_Int_pVector(Hook *hook, void *p - - MAKE_VECTOR() - P_PTRVECTOR(v1) - - PRE_START() - , MF_PrepareCellArrayA(reinterpret_cast(v1), 3, false) - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, v1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, v1); - #endif - - POST_START() - , MF_PrepareCellArrayA(reinterpret_cast(v1), 3, false) - POST_END() - - KILL_VECTOR() -@@ -826,19 +826,19 @@ void Hook_Void_Entvar_Float_Float(Hook * - P_ENTVAR(ev1, cev1) - P_FLOAT(f1) - P_FLOAT(f2) - - PRE_START() - , cev1, f1, f2 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, ev1, f1, f2); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, ev1, f1, f2); - #endif - - POST_START() - , cev1, f1, f2 - POST_END() - - KILL_VECTOR() -@@ -855,19 +855,19 @@ int Hook_Int_pFloat_pFloat(Hook *hook, v - MAKE_VECTOR() - P_PTRFLOAT(f1) - P_PTRFLOAT(f2) - - PRE_START() - , f1 != NULL ? *f1 : 0, f2 != NULL ? *f2 : 0 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0, f1, f2); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis, f1, f2); - #endif - - POST_START() - , f1 != NULL ? *f1 : 0, f2 != NULL ? *f2 : 0 - POST_END() - - KILL_VECTOR() -@@ -884,19 +884,19 @@ void Hook_Void_Entvar_Float(Hook *hook, - MAKE_VECTOR() - P_ENTVAR(ev1, cev1) - P_FLOAT(f1) - - PRE_START() - , cev1, f1 - PRE_END() - --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, ev1, f1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, ev1, f1); - #endif - - POST_START() - , cev1, f1 - POST_END() - - KILL_VECTOR() -@@ -911,19 +911,19 @@ void Hook_Void_Int_Int_Int(Hook *hook, v - - P_INT(i1) - P_INT(i2) - P_INT(i3) - - PRE_START() - ,i1, i2, i3 - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, i1, i2, i3); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, i1, i2, i3); - #endif - - POST_START() - ,i1, i2, i3 - POST_END() - - KILL_VECTOR() -@@ -935,19 +935,19 @@ void Hook_Void_ItemInfo(Hook *hook, void - - MAKE_VECTOR() - - P_ITEMINFO(iteminfo) - - PRE_START() - ,iteminfo - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, iteminfo); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, iteminfo); - #endif - - POST_START() - ,iteminfo - POST_END() - - KILL_VECTOR() -@@ -959,19 +959,19 @@ float Hook_Float_Void(Hook *hook, void * - float ret=0.0; - float origret=0.0; - PUSH_FLOAT() - - MAKE_VECTOR() - - PRE_START() - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - origret=reinterpret_cast(hook->func)(pthis, 0); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - origret=reinterpret_cast(hook->func)(pthis); - #endif - - POST_START() - POST_END() - - KILL_VECTOR() - POP() -@@ -985,19 +985,19 @@ void Hook_Void_Float_Int(Hook* hook, voi - - MAKE_VECTOR() - P_FLOAT(f1) - P_INT(i1) - - PRE_START() - , f1, i1 - PRE_END() --#if defined _WIN32 -+#if defined(_WIN32) - reinterpret_cast(hook->func)(pthis, 0, f1, i1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - reinterpret_cast(hook->func)(pthis, f1, i1); - #endif - - POST_START() - , f1, i1 - POST_END() - - KILL_VECTOR() -diff --git a/dlls/hamsandwich/hook_callbacks.h b/dlls/hamsandwich/hook_callbacks.h ---- a/dlls/hamsandwich/hook_callbacks.h -+++ b/dlls/hamsandwich/hook_callbacks.h -@@ -125,25 +125,25 @@ const int PC_Cbase_Void = 0; - void *Hook_Cbase_Void(Hook *hook, void *pthis); - - // HACK: I'm too lazy to fix up trampoline generator to deal with - // special return values. this is so much easier. - const bool RT_Vector_Void = true; - const int PC_Vector_Void = 1; - #ifdef _WIN32 - void Hook_Vector_Void(Hook *hook, void *pthis, Vector *out); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - void Hook_Vector_Void(Hook *hook, Vector *out, void *pthis); - #endif - - const bool RT_Vector_pVector = true; - const int PC_Vector_pVector = 2; - #ifdef _WIN32 - void Hook_Vector_pVector(Hook *hook, void *pthis, Vector *out, Vector *v1); --#elif defined __linux__ -+#elif defined(__linux__) || defined(__APPLE__) - void Hook_Vector_pVector(Hook *hook, Vector *out, void *pthis, Vector *v1); - #endif - - const bool RT_Int_pVector = false; - const int PC_Int_pVector = 1; - int Hook_Int_pVector(Hook *hook, void *pthis, Vector *v1); - - const bool RT_Void_Entvar_Float_Float = true; -diff --git a/dlls/hamsandwich/pdata.cpp b/dlls/hamsandwich/pdata.cpp ---- a/dlls/hamsandwich/pdata.cpp -+++ b/dlls/hamsandwich/pdata.cpp -@@ -52,16 +52,22 @@ - // Return -1 on null, -2 on invalid, and the the index of any other. - static cell AMX_NATIVE_CALL get_pdata_cbase_safe(AMX *amx, cell *params) - { - int index=params[1]; - FM_CHECK_ENTITY(index); - int iOffset=params[2]; - #ifdef __linux__ - iOffset += params[3]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 3) -+ iOffset += params[3]; -+ else -+ iOffset += params[4]; - #endif - if (iOffset <0) - { - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid offset provided. (got: %d)", iOffset); - return 0; - } - void *ptr=*((void **)((int *)INDEXENT_NEW(index)->pvPrivateData + iOffset)); - -@@ -82,17 +88,24 @@ static cell AMX_NATIVE_CALL get_pdata_cb - } - static cell AMX_NATIVE_CALL get_pdata_cbase(AMX *amx, cell *params) - { - int index=params[1]; - FM_CHECK_ENTITY(index); - int iOffset=params[2]; - #ifdef __linux__ - iOffset += params[3]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 3) -+ iOffset += params[3]; -+ else -+ iOffset += params[4]; - #endif -+ - if (iOffset <0) - { - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid offset provided. (got: %d)", iOffset); - return 0; - } - void *ptr=*((void **)((int *)INDEXENT_NEW(index)->pvPrivateData + iOffset)); - - return PrivateToIndex(ptr); -@@ -105,16 +118,22 @@ static cell AMX_NATIVE_CALL set_pdata_cb - - if (target != -1) - { - FM_CHECK_ENTITY(target); - } - int iOffset=params[2]; - #ifdef __linux__ - iOffset += params[4]; -+#elif defined __APPLE__ -+ // Use Linux offset in older plugins -+ if (params[0] / sizeof(cell) == 4) -+ iOffset += params[4]; -+ else -+ iOffset += params[5]; - #endif - if (iOffset <0) - { - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid offset provided. (got: %d)", iOffset); - return 0; - } - - if (target == -1) -diff --git a/dlls/hamsandwich/sdk/CString.h b/dlls/hamsandwich/sdk/CString.h ---- a/dlls/hamsandwich/sdk/CString.h -+++ b/dlls/hamsandwich/sdk/CString.h -@@ -239,17 +239,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; i - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/hamsandwich/sdk/amxxmodule.h b/dlls/hamsandwich/sdk/amxxmodule.h ---- a/dlls/hamsandwich/sdk/amxxmodule.h -+++ b/dlls/hamsandwich/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/hamsandwich/srvcmd.cpp b/dlls/hamsandwich/srvcmd.cpp ---- a/dlls/hamsandwich/srvcmd.cpp -+++ b/dlls/hamsandwich/srvcmd.cpp -@@ -38,17 +38,17 @@ - #include "offsets.h" - #include "forward.h" - #include "hook.h" - - - extern hook_t hooklist[]; - extern CVector hooks[HAM_LAST_ENTRY_DONT_USE_ME_LOL]; - --void print_srvconsole(char *fmt, ...) -+void print_srvconsole(const char *fmt, ...) - { - va_list argptr; - static char string[384]; - va_start(argptr, fmt); - vsnprintf(string, sizeof(string) - 1, fmt, argptr); - string[sizeof(string) - 1] = '\0'; - va_end(argptr); - -diff --git a/dlls/mysqlx/Makefile b/dlls/mysqlx/Makefile ---- a/dlls/mysqlx/Makefile -+++ b/dlls/mysqlx/Makefile -@@ -1,92 +1,131 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod -- --### EDIT BELOW FOR OTHER PROJECTS ### -- --OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = mysql --#MYSQL_DIR = ../../../mysql-5.0.22 - MYSQL_DIR = ../../../mysql-5.0 - --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+##################################### -+### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OBJECTS = basic_sql.cpp handles.cpp module.cpp threading.cpp sdk/amxxmodule.cpp oldcompat_sql.cpp --OBJECTS += thread/BaseWorker.cpp thread/ThreadWorker.cpp thread/PosixThreads.cpp --OBJECTS += mysql/MysqlQuery.cpp mysql/MysqlResultSet.cpp mysql/MysqlDatabase.cpp mysql/MysqlDriver.cpp -+PROJECT = mysql - --LINK = -lgcc -static-libgcc $(MYSQL_DIR)/lib/libmysqlclient_r.a -lz -lpthread -+OBJECTS = basic_sql.cpp handles.cpp module.cpp threading.cpp sdk/amxxmodule.cpp oldcompat_sql.cpp \ -+ thread/BaseWorker.cpp thread/ThreadWorker.cpp thread/PosixThreads.cpp \ -+ mysql/MysqlQuery.cpp mysql/MysqlResultSet.cpp mysql/MysqlDatabase.cpp mysql/MysqlDriver.cpp - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -I$(MYSQL_DIR)/include -L$(MYSQL_DIR)/lib -Ithread \ -- -Imysql -Isdk -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+LINK = $(MYSQL_DIR)/lib/libmysqlclient_r.a -lz -lpthread -L$(MYSQL_DIR)/lib -+ -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -I$(MYSQL_DIR)/include -Ithread -Imysql -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DSM_DEFAULT_THREADER -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H \ -+ -Dstricmp=strcasecmp -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -Dstricmp=strcasecmp -fno-rtti -static-libgcc --CFLAGS += -DSM_DEFAULT_THREADER -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -- INCLUDE += -Lextra/lib_linux64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i686 -- INCLUDE += -Lextra/lib_linux -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: -+ mkdir -p $(BIN_DIR) -+ mkdir -p $(BIN_DIR)/mysql - mkdir -p $(BIN_DIR)/thread -- mkdir -p $(BIN_DIR)/mysql - mkdir -p $(BIN_DIR)/sdk -- mkdir -p $(BIN_DIR) -- $(MAKE) mysql -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --mysql: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/thread/*.o -- rm -rf Release/mysql/*.o -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/thread/*.o -- rm -rf Debug/mysql/*.o -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/mysql/*.o -+ rm -rf $(BIN_DIR)/thread/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/mysqlx/mysql/MysqlDriver.cpp b/dlls/mysqlx/mysql/MysqlDriver.cpp ---- a/dlls/mysqlx/mysql/MysqlDriver.cpp -+++ b/dlls/mysqlx/mysql/MysqlDriver.cpp -@@ -37,17 +37,17 @@ IDatabase *MysqlDriver::_Connect(Databas - if (!mysql) - { - if (errcode) - *errcode = -1; - if (error && maxlength) - { - snprintf(error, maxlength, "Initialization failed"); - } -- return false; -+ return NULL; - } - - if (do_timeout && info->max_timeout) - { - mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&(info->max_timeout)); - } - - if (mysql_real_connect(mysql, -@@ -62,17 +62,17 @@ IDatabase *MysqlDriver::_Connect(Databas - if (errcode) - { - *errcode = mysql_errno(mysql); - } - if (error && maxlength) - { - snprintf(error, maxlength, "%s", mysql_error(mysql)); - } -- return false; -+ return NULL; - } - - MysqlDatabase *pMysql = new MysqlDatabase(mysql, this); - - return static_cast(pMysql); - } - - int MysqlDriver::QuoteString(const char *str, char buffer[], size_t maxlen, size_t *newsize) -diff --git a/dlls/mysqlx/sdk/amxxmodule.cpp b/dlls/mysqlx/sdk/amxxmodule.cpp ---- a/dlls/mysqlx/sdk/amxxmodule.cpp -+++ b/dlls/mysqlx/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/mysqlx/sdk/amxxmodule.h b/dlls/mysqlx/sdk/amxxmodule.h ---- a/dlls/mysqlx/sdk/amxxmodule.h -+++ b/dlls/mysqlx/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/mysqlx/sdk/sh_list.h b/dlls/mysqlx/sdk/sh_list.h ---- a/dlls/mysqlx/sdk/sh_list.h -+++ b/dlls/mysqlx/sdk/sh_list.h -@@ -14,17 +14,17 @@ - // MSVC8 fix for offsetof macro redefition warnings - #ifdef _MSC_VER - #if _MSC_VER >= 1400 - #undef offsetof - #endif - #endif - - #include --#include -+#include - - namespace SourceHook - { - - //This class is from CSDM for AMX Mod X - /* - A circular, doubly-linked list with one sentinel node - -diff --git a/dlls/mysqlx/sdk/sh_string.h b/dlls/mysqlx/sdk/sh_string.h ---- a/dlls/mysqlx/sdk/sh_string.h -+++ b/dlls/mysqlx/sdk/sh_string.h -@@ -191,17 +191,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; itime; - } - - void MysqlThread::SetQuery(const char *query) - { - m_query.assign(query); - } -diff --git a/dlls/ns/CString.h b/dlls/ns/CString.h ---- a/dlls/ns/CString.h -+++ b/dlls/ns/CString.h -@@ -240,17 +240,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; i 0) -+ --m_CurrentUsedSize; - - FreeMemIfPossible(); - } - - bool resize(size_t newSize) - { - if (!ChangeSize(newSize)) - return false; -diff --git a/dlls/ns/Makefile b/dlls/ns/Makefile ---- a/dlls/ns/Makefile -+++ b/dlls/ns/Makefile -@@ -1,98 +1,128 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - -+PROJECT = ns - --CRAZY_OPT_FLAGS = -DCRAZY_OPTS -O3 -funroll-loops -ffast-math -s -pipe -fomit-frame-pointer -fno-strict-aliasing -DNDEBUG -fmerge-all-constants -fmodulo-sched -fgcse-sm -fgcse-las -fgcse-after-reload -floop-optimize2 -funsafe-loop-optimizations -ftree-loop-linear -ftree-loop-im -ftree-loop-ivcanon -fivopts -ftree-vectorize -fvariable-expansion-in-unroller -funsafe-math-optimizations -ffinite-math-only -fpeel-loops -funswitch-loops -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wno-unknown-pragmas -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -Wpointer-arith -Wcast-qual -Wcast-align -Wconversion -Wsign-compare -Wmissing-noreturn -Winline -Wlong-long -Wunsafe-loop-optimizations -Wctor-dtor-privacy -Wno-non-virtual-dtor -Wreorder -Woverloaded-virtual -Wsign-promo -Wsynth -shared -+OBJECTS = sdk/amxxmodule.cpp dllapi.cpp utils.cpp amxxapi.cpp engineapi.cpp TitleManager.cpp \ -+ ParticleManager.cpp MessageHandler.cpp GameManager.cpp natives/general.cpp \ -+ natives/player.cpp natives/player_memory.cpp natives/structure.cpp natives/weapons.cpp \ -+ natives/particles.cpp natives/memberfuncs.cpp - --CRAZY_LINK_FLAGS = --#-fwhole-program --#-fwhole-program -combine -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --SANE_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing -DNDEBUG -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --OPT_FLAGS = -+LINK = - --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = ns -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(HLSDK)/pm_shared -I$(MM_ROOT) -Isdk - --BIN_SUFFIX = amxx_i386.so -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ - --OBJECTS = sdk/amxxmodule.cpp dllapi.cpp utils.cpp amxxapi.cpp engineapi.cpp \ --TitleManager.cpp ParticleManager.cpp MessageHandler.cpp GameManager.cpp \ --natives/general.cpp natives/player.cpp natives/player_memory.cpp \ --natives/structure.cpp natives/weapons.cpp natives/particles.cpp \ --natives/memberfuncs.cpp -+OS := $(shell uname -s) - --LINK = -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared -+endif - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -I$(HLSDK)/pm_shared -+LINK += -m32 -lm -ldl - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) - - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else -- ifeq "$(CRAZY)" "true" -- BIN_DIR = Optimized -- OPT_FLAGS = $(CRAZY_OPT_FLAGS) -- LINK = $(CRAZY_LINK_FLAGS) -- else -- BIN_DIR = Release -- OPT_FLAGS = $(SANE_OPT_FLAGS) -- endif -- ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -- endif -- CFLAGS = $(OPT_FLAGS) -+ BIN_DIR = Release -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk - mkdir -p $(BIN_DIR)/natives -- $(MAKE) ns -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --ns: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - --crazy: -- $(MAKE) all CRAZY=true -+clean: -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -rf $(BIN_DIR)/natives/*.o -+ rm -f $(BIN_DIR)/$(BINARY) - --clean: -- rm -rf Release/*.o -- rm -rf Release/sdk/*.o -- rm -rf Release/natives/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/*.o -- rm -rf Debug/sdk/*.o -- rm -rf Debug/natives/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -- rm -rf Optimized/*.o -- rm -rf Optimized/sdk/*.o -- rm -rf Optimized/natives/*.o -- rm -rf Optimized/$(NAME)_$(BIN_SUFFIX) -- -diff --git a/dlls/ns/engineapi.cpp b/dlls/ns/engineapi.cpp ---- a/dlls/ns/engineapi.cpp -+++ b/dlls/ns/engineapi.cpp -@@ -44,17 +44,17 @@ - #include "GameManager.h" - #include "ParticleManager.h" - #include "CPlayer.h" - - - // Parse log messages here for any desired information (structure_built, etc.) - // The following logs are needed: - // "sawce<1>" triggered "structure_built" (type "defensechamber")` --void AlertMessage_Post(ALERT_TYPE atype, char *szFmt, ...) -+void AlertMessage_Post(ALERT_TYPE atype, const char *szFmt, ...) - { - if (atype != at_logged) - { - RETURN_META(MRES_IGNORED); - } - - char *MessageStart; // original pointer to start of the message - char *TypePointer; // pointer to the structure type -diff --git a/dlls/ns/natives/particles.cpp b/dlls/ns/natives/particles.cpp ---- a/dlls/ns/natives/particles.cpp -+++ b/dlls/ns/natives/particles.cpp -@@ -53,17 +53,17 @@ typedef enum partsystype_e - PSYS_TYPE_STRING - }partsystype; - typedef struct partsyskey_s - { - const char *Name; - partsystype type; - }partsyskey; - --cell PSKeyValueI(char *name, AMX *amx, cell *params) -+cell PSKeyValueI(const char *name, AMX *amx, cell *params) - { - if (params[1]==0) - { - MF_LogError(amx,AMX_ERR_NATIVE,"Invalid particle system handle provided!"); - return 0; - } - KeyValueData kvd; - -@@ -76,17 +76,17 @@ cell PSKeyValueI(char *name, AMX *amx, c - kvd.szValue=&StrData[0]; - kvd.fHandled=0; - //printf("\"%s\" \"%s\"\n",kvd.szKeyName,kvd.szValue); - - MDLL_KeyValue(reinterpret_cast(params[1]),&kvd); - - return 1; - } --cell PSKeyValueF(char *name, AMX *amx, cell *params) -+cell PSKeyValueF(const char *name, AMX *amx, cell *params) - { - if (params[1]==0) - { - MF_LogError(amx,AMX_ERR_NATIVE,"Invalid particle system handle provided!"); - return 0; - } - KeyValueData kvd; - -@@ -101,17 +101,17 @@ cell PSKeyValueF(char *name, AMX *amx, c - - //printf("\"%s\" \"%s\"\n",kvd.szKeyName,kvd.szValue); - - MDLL_KeyValue(reinterpret_cast(params[1]),&kvd); - - return 1; - - } --cell PSKeyValueS(char *name, AMX *amx, cell *params) -+cell PSKeyValueS(const char *name, AMX *amx, cell *params) - { - if (params[1]==0) - { - MF_LogError(amx,AMX_ERR_NATIVE,"Invalid particle system handle provided!"); - return 0; - } - KeyValueData kvd; - -diff --git a/dlls/ns/ns.h b/dlls/ns/ns.h ---- a/dlls/ns/ns.h -+++ b/dlls/ns/ns.h -@@ -58,17 +58,17 @@ extern edict_t *player_edicts[33]; // St - - - void PlayerPreThink(edict_t *pEntity); - void PlayerPreThink_Post(edict_t *pEntity); - void PlayerPostThink_Post(edict_t *pEntity); - void UpdateClientData( const struct edict_s *ent, int sendweapons, struct clientdata_s *cd ); - void StartFrame(void); - edict_t* CreateNamedEntity_Post(int className); --void AlertMessage_Post(ALERT_TYPE atype, char *szFmt, ...); -+void AlertMessage_Post(ALERT_TYPE atype, const char *szFmt, ...); - - - typedef struct tagAMX_HEADER { - int32_t size PACKED; /* size of the "file" */ - uint16_t magic PACKED; /* signature */ - char file_version; /* file format version */ - char amx_version; /* required version of the AMX */ - int16_t flags PACKED; -diff --git a/dlls/ns/sdk/amxxmodule.cpp b/dlls/ns/sdk/amxxmodule.cpp ---- a/dlls/ns/sdk/amxxmodule.cpp -+++ b/dlls/ns/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/ns/sdk/amxxmodule.h b/dlls/ns/sdk/amxxmodule.h ---- a/dlls/ns/sdk/amxxmodule.h -+++ b/dlls/ns/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/ns/sh_list.h b/dlls/ns/sh_list.h ---- a/dlls/ns/sh_list.h -+++ b/dlls/ns/sh_list.h -@@ -14,17 +14,17 @@ - // MSVC8 fix for offsetof macro redefition warnings - #ifdef _MSC_VER - #if _MSC_VER >= 1400 - #undef offsetof - #endif - #endif - - #include --#include -+#include - - //namespace SourceHook - //{ - //This class is from CSDM for AMX Mod X - /* - A circular, doubly-linked list with one sentinel node - - Empty: -diff --git a/dlls/ns/utilfunctions.h b/dlls/ns/utilfunctions.h ---- a/dlls/ns/utilfunctions.h -+++ b/dlls/ns/utilfunctions.h -@@ -119,17 +119,17 @@ int UTIL_FindBuildingHive(void); - BOOL UTIL_CheckForPublic(const char *publicname); - BOOL UTIL_CheckForNative(const char *NativeName); - - class CPlayer; - - CPlayer *UTIL_PlayerByCID(int CID); - - // Converts something such as RESOURCES into OFFSET_WIN_RESOURCES or OFFSET_LIN_RESOURCES --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define MAKE_OFFSET(Offset) OFFSET_LIN_##Offset - #define MAKE_MEMBER_OFFSET(Offs) (Offs - OFFSET_LIN_MEMBERFUNCSTART) - #else - #define MAKE_OFFSET(Offset) OFFSET_WIN_##Offset - #define MAKE_MEMBER_OFFSET(Offs) (Offs - OFFSET_WIN_MEMBERFUNCSTART) - #endif // __linux__ - - template -diff --git a/dlls/nvault/Journal.cpp b/dlls/nvault/Journal.cpp ---- a/dlls/nvault/Journal.cpp -+++ b/dlls/nvault/Journal.cpp -@@ -1,11 +1,11 @@ - #include - #include --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #include - #endif - #include "Journal.h" - - Journal::Journal(const char *file) - { - m_File.assign(file); - } -diff --git a/dlls/nvault/Makefile b/dlls/nvault/Makefile ---- a/dlls/nvault/Makefile -+++ b/dlls/nvault/Makefile -@@ -1,79 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = nvault -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = nvault - - OBJECTS = sdk/amxxmodule.cpp amxxapi.cpp Binary.cpp Journal.cpp NVault.cpp - --#LINK = /lib/libgcc_eh.a /lib/libstdc++-3.4.a --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Werror -DHAVE_STDINT_H -fno-rtti -static-libgcc -fno-exceptions -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) nvault -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --nvault: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/nvault/NVault.cpp b/dlls/nvault/NVault.cpp ---- a/dlls/nvault/NVault.cpp -+++ b/dlls/nvault/NVault.cpp -@@ -1,15 +1,15 @@ - #include - #include "amxxmodule.h" - #include "NVault.h" - #include "Binary.h" - #include "CString.h" - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define _snprintf snprintf - #endif - - /** - * :TODO: This beast calls strcpy()/new() way too much by creating new strings on the stack. - * That's easily remedied and it should be fixed? - * ---bail - */ -diff --git a/dlls/nvault/amxxapi.cpp b/dlls/nvault/amxxapi.cpp ---- a/dlls/nvault/amxxapi.cpp -+++ b/dlls/nvault/amxxapi.cpp -@@ -4,17 +4,17 @@ - #include "CQueue.h" - - #ifdef WIN32 - #define MKDIR(p) mkdir(p) - #else - #define MKDIR(p) mkdir(p, 0755) - #endif - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #include - #include - #include - #else - #include - #endif - - CVector g_Vaults; -diff --git a/dlls/nvault/sdk/CString.h b/dlls/nvault/sdk/CString.h ---- a/dlls/nvault/sdk/CString.h -+++ b/dlls/nvault/sdk/CString.h -@@ -215,17 +215,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; i - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/nvault/sdk/amxxmodule.h b/dlls/nvault/sdk/amxxmodule.h ---- a/dlls/nvault/sdk/amxxmodule.h -+++ b/dlls/nvault/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/nvault/sdk/sh_list.h b/dlls/nvault/sdk/sh_list.h ---- a/dlls/nvault/sdk/sh_list.h -+++ b/dlls/nvault/sdk/sh_list.h -@@ -14,17 +14,17 @@ - // MSVC8 fix for offsetof macro redefition warnings - #ifdef _MSC_VER - #if _MSC_VER >= 1400 - #undef offsetof - #endif - #endif - - #include --#include -+#include - - //namespace SourceHook - //{ - //This class is from CSDM for AMX Mod X - /* - A circular, doubly-linked list with one sentinel node - - Empty: -diff --git a/dlls/nvault/sdk/sh_tinyhash.h b/dlls/nvault/sdk/sh_tinyhash.h ---- a/dlls/nvault/sdk/sh_tinyhash.h -+++ b/dlls/nvault/sdk/sh_tinyhash.h -@@ -427,17 +427,17 @@ public: - { - iterator old(*this); - _Inc(); - return old; - } - void erase() - { - if (end || !hash || curbucket < 0 || curbucket >= static_cast(hash->m_numBuckets)) -- return true; -+ return; - - iterator tmp = *this; - ++tmp; - delete (*iter); - hash->m_Items--; - hash->m_Buckets[curbucket]->erase(iter); - *this = tmp; - } -diff --git a/dlls/regex/Makefile b/dlls/regex/Makefile ---- a/dlls/regex/Makefile -+++ b/dlls/regex/Makefile -@@ -1,80 +1,124 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = regex -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = regex - - OBJECTS = sdk/amxxmodule.cpp module.cpp CRegEx.cpp - -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## -+ -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang -+ - LINK = -lpcre - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -Llib_darwin -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared -Llib_linux - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -- INCLUDE += -Llib_linux64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -- INCLUDE += -Llib_linux -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< -+ - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) regex -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --regex: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/regex/sdk/amxxmodule.cpp b/dlls/regex/sdk/amxxmodule.cpp ---- a/dlls/regex/sdk/amxxmodule.cpp -+++ b/dlls/regex/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/regex/sdk/amxxmodule.h b/dlls/regex/sdk/amxxmodule.h ---- a/dlls/regex/sdk/amxxmodule.h -+++ b/dlls/regex/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/sockets/Makefile b/dlls/sockets/Makefile ---- a/dlls/sockets/Makefile -+++ b/dlls/sockets/Makefile -@@ -1,78 +1,124 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O2 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = sockets -- --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+PROJECT = sockets - - OBJECTS = sdk/amxxmodule.cpp sockets.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") - else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< -+ - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) sockets -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --sockets: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/sockets/sdk/amxxmodule.cpp b/dlls/sockets/sdk/amxxmodule.cpp ---- a/dlls/sockets/sdk/amxxmodule.cpp -+++ b/dlls/sockets/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/sockets/sdk/amxxmodule.h b/dlls/sockets/sdk/amxxmodule.h ---- a/dlls/sockets/sdk/amxxmodule.h -+++ b/dlls/sockets/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/sockets/sockets.cpp b/dlls/sockets/sockets.cpp ---- a/dlls/sockets/sockets.cpp -+++ b/dlls/sockets/sockets.cpp -@@ -13,17 +13,17 @@ - * - code structure renewed - * v0.2 - * - added socket_send2 to send data containing null bytes (FALUCO)(AMXX v1.65) - */ - - #include - #include - #include --#include -+#include - - #ifdef _WIN32 - /* Windows */ - #include - #include - #define socklen_t int - #else - /* Unix/Linux */ -diff --git a/dlls/sqlite/Makefile b/dlls/sqlite/Makefile ---- a/dlls/sqlite/Makefile -+++ b/dlls/sqlite/Makefile -@@ -1,112 +1,146 @@ --#(C)2004-2006 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod -- --### EDIT BELOW FOR OTHER PROJECTS ### -- --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --CC = gcc-4.1 --NAME = sqlite - SQL = sqlite-source - --BIN_SUFFIX_32 = amxx_i386.so --BIN_SUFFIX_64 = amxx_amd64.so -+##################################### -+### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --CPP_OBJECTS = basic_sql.cpp handles.cpp module.cpp threading.cpp sdk/amxxmodule.cpp oldcompat_sql.cpp --CPP_OBJECTS += thread/BaseWorker.cpp thread/ThreadWorker.cpp thread/PosixThreads.cpp --CPP_OBJECTS += sqlitepp/SqliteQuery.cpp sqlitepp/SqliteResultSet.cpp sqlitepp/SqliteDatabase.cpp sqlitepp/SqliteDriver.cpp -+PROJECT = sqlite - --C_OBJECTS = $(SQL)/alter.c $(SQL)/analyze.c $(SQL)/attach.c $(SQL)/auth.c $(SQL)/btree.c $(SQL)/build.c \ -- $(SQL)/callback.c $(SQL)/complete.c $(SQL)/date.c $(SQL)/delete.c $(SQL)/expr.c $(SQL)/func.c \ -- $(SQL)/hash.c $(SQL)/insert.c $(SQL)/legacy.c $(SQL)/loadext.c $(SQL)/main.c $(SQL)/opcodes.c \ -- $(SQL)/os.c $(SQL)/os_unix.c $(SQL)/pager.c $(SQL)/parse.c $(SQL)/pragma.c $(SQL)/prepare.c \ -- $(SQL)/printf.c $(SQL)/random.c $(SQL)/select.c $(SQL)/table.c $(SQL)/tokenize.c $(SQL)/trigger.c \ -- $(SQL)/update.c $(SQL)/utf.c $(SQL)/util.c $(SQL)/vacuum.c $(SQL)/vdbe.c $(SQL)/vdbeapi.c \ -- $(SQL)/vdbeaux.c $(SQL)/vdbefifo.c $(SQL)/vdbemem.c $(SQL)/vtab.c $(SQL)/where.c \ -+OBJECTS = basic_sql.cpp handles.cpp module.cpp threading.cpp sdk/amxxmodule.cpp oldcompat_sql.cpp \ -+ thread/BaseWorker.cpp thread/ThreadWorker.cpp thread/PosixThreads.cpp \ -+ sqlitepp/SqliteQuery.cpp sqlitepp/SqliteResultSet.cpp sqlitepp/SqliteDatabase.cpp \ -+ sqlitepp/SqliteDriver.cpp -+OBJECTS += $(SQL)/alter.c $(SQL)/analyze.c $(SQL)/attach.c $(SQL)/auth.c $(SQL)/btree.c \ -+ $(SQL)/build.c $(SQL)/callback.c $(SQL)/complete.c $(SQL)/date.c $(SQL)/delete.c \ -+ $(SQL)/expr.c $(SQL)/func.c $(SQL)/hash.c $(SQL)/insert.c $(SQL)/legacy.c \ -+ $(SQL)/loadext.c $(SQL)/main.c $(SQL)/opcodes.c $(SQL)/os.c $(SQL)/os_unix.c \ -+ $(SQL)/pager.c $(SQL)/parse.c $(SQL)/pragma.c $(SQL)/prepare.c $(SQL)/printf.c \ -+ $(SQL)/random.c $(SQL)/select.c $(SQL)/table.c $(SQL)/tokenize.c $(SQL)/trigger.c \ -+ $(SQL)/update.c $(SQL)/utf.c $(SQL)/util.c $(SQL)/vacuum.c $(SQL)/vdbe.c $(SQL)/vdbeapi.c \ -+ $(SQL)/vdbeaux.c $(SQL)/vdbefifo.c $(SQL)/vdbemem.c $(SQL)/vtab.c $(SQL)/where.c - --CFLAGS = -Wall -Werror -m32 --CPPFLAGS = -Wall -Wno-non-virtual-dtor -Werror -m32 -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --LINK = -lgcc -static-libgcc -lpthread -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -I$(SQL) -I./sqlitepp -I./sdk -I./thread -+LINK = -+ -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -I$(SQL) -Isqlitepp -Ithread -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared -+endif -+ -+LINK += -m32 -lm -ldl -lpthread -+ -+CFLAGS += -DSM_DEFAULT_THREADER -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H \ -+ -Dstricmp=strcasecmp -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) - - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS += $(DEBUG_FLAGS) -- CPPFLAGS += $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS += $(OPT_FLAGS) -- CPPFLAGS += $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --ifeq "$(GCC_VERSION)" "4" -- CFLAGS += -fvisibility=hidden -- CPPFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) - endif - --CPPFLAGS += -DNDEBUG -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -fno-rtti --CPPFLAGS += -DSM_DEFAULT_THREADER -Dstricmp=strcasecmp --CFLAGS += -DNDEBUG -DHAVE_STDINT_H -DSM_DEFAULT_THREADER -Dstricmp=strcasecmp -- --ifeq "$(AMD64)" "true" -- BINARY = $(NAME)_$(BIN_SUFFIX_64) -- CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 -- CPPFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 --else -- BINARY = $(NAME)_$(BIN_SUFFIX_32) -- CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- CPPFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -- OPT_FLAGS += -march=i586 -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) - endif - --OBJ_LINUX_CPP := $(CPP_OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+OBJ_BIN := $(OBJ_BIN:%.c=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CPPFLAGS) -o $@ -c $< -- --OBJ_LINUX_C := $(C_OBJECTS:%.c=$(BIN_DIR)/%.o) -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - $(BIN_DIR)/%.o: %.c -- $(CC) $(INCLUDE) $(CFLAGS) -c -o $@ $< -+ $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< - - all: -+ mkdir -p $(BIN_DIR) -+ mkdir -p $(BIN_DIR)/sdk - mkdir -p $(BIN_DIR)/thread - mkdir -p $(BIN_DIR)/sqlitepp -- mkdir -p $(BIN_DIR)/sdk -- mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/$(SQL) -- $(MAKE) sqlite -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --amd64: -- $(MAKE) all AMD64=true -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --sqlite: $(OBJ_LINUX_C) $(OBJ_LINUX_CPP) -- $(CPP) $(INCLUDE) $(CPPFLAGS) $(OBJ_LINUX_C) $(OBJ_LINUX_CPP) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -- --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/$(SQL)/*.o -- rm -rf Release/sdk/*.o -- rm -rf Release/sqlitepp/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Release/$(NAME)_$(BIN_SUFFIX_64) -- rm -rf Debug/$(SQL)/*.o -- rm -rf Debug/sdk/*.o -- rm -rf Debug/sqlitepp/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -rf $(BIN_DIR)/thread/*.o -+ rm -rf $(BIN_DIR)/sqlitepp/*.o -+ rm -rf $(BIN_DIR)/$(SQL)/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/sqlite/module.cpp b/dlls/sqlite/module.cpp ---- a/dlls/sqlite/module.cpp -+++ b/dlls/sqlite/module.cpp -@@ -55,17 +55,17 @@ void OnAmxxAttach() - MF_AddNatives(g_OldCompatNatives); - MF_OverrideNatives(g_OldCompatNatives, MODULE_NAME); - - char path[255]; - MF_BuildPathnameR(path, sizeof(path)-1, "%s/sqlite3", MF_GetLocalInfo("amxx_datadir", "addons/amxmodx/data")); - if (!DirExists(path)) - { - mkdir(path --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - , 0775 - #endif - ); - } - } - - void OnAmxxDetach() - { -diff --git a/dlls/sqlite/sdk/amxxmodule.cpp b/dlls/sqlite/sdk/amxxmodule.cpp ---- a/dlls/sqlite/sdk/amxxmodule.cpp -+++ b/dlls/sqlite/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/sqlite/sdk/amxxmodule.h b/dlls/sqlite/sdk/amxxmodule.h ---- a/dlls/sqlite/sdk/amxxmodule.h -+++ b/dlls/sqlite/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/sqlite/sdk/sh_list.h b/dlls/sqlite/sdk/sh_list.h ---- a/dlls/sqlite/sdk/sh_list.h -+++ b/dlls/sqlite/sdk/sh_list.h -@@ -14,17 +14,17 @@ - // MSVC8 fix for offsetof macro redefition warnings - #ifdef _MSC_VER - #if _MSC_VER >= 1400 - #undef offsetof - #endif - #endif - - #include --#include -+#include - - namespace SourceHook - { - - //This class is from CSDM for AMX Mod X - /* - A circular, doubly-linked list with one sentinel node - -diff --git a/dlls/sqlite/sdk/sh_string.h b/dlls/sqlite/sdk/sh_string.h ---- a/dlls/sqlite/sdk/sh_string.h -+++ b/dlls/sqlite/sdk/sh_string.h -@@ -191,17 +191,17 @@ public: - - if (len < 1) - { - return; - } - - if (is_space(v[len-1])) - { -- for (i=len-1; i>=0; i--) -+ for (i=len-1; ipRight = pRight; - pNew->iAgg = -1; - if( pToken ){ - assert( pToken->dyn==0 ); - pNew->span = pNew->token = *pToken; - }else if( pLeft ){ - if( pRight ){ - sqlite3ExprSpan(pNew, &pLeft->span, &pRight->span); -- if( pRight->flags && EP_ExpCollate ){ -+ if( pRight->flags & EP_ExpCollate ){ - pNew->flags |= EP_ExpCollate; - pNew->pColl = pRight->pColl; - } - } -- if( pLeft->flags && EP_ExpCollate ){ -+ if( pLeft->flags & EP_ExpCollate ){ - pNew->flags |= EP_ExpCollate; - pNew->pColl = pLeft->pColl; - } - } - return pNew; - } - - /* -diff --git a/dlls/sqlite/sqlitepp/SqliteDriver.cpp b/dlls/sqlite/sqlitepp/SqliteDriver.cpp ---- a/dlls/sqlite/sqlitepp/SqliteDriver.cpp -+++ b/dlls/sqlite/sqlitepp/SqliteDriver.cpp -@@ -22,17 +22,17 @@ bool SqliteDriver::IsCompatDriver(const - - const char *SqliteDriver::NameString() - { - return "sqlite"; - } - - int busy_handler(void *unused1, int unused2) - { --#if defined __linux__ -+#if defined __linux__ || defined __APPLE__ - usleep(100000); - #else - Sleep(100); - #endif - - return 1; - } - IDatabase *SqliteDriver::Connect2(DatabaseInfo *info, int *errcode, char *error, size_t maxlength) -diff --git a/dlls/sqlite/thread/ThreadSupport.h b/dlls/sqlite/thread/ThreadSupport.h ---- a/dlls/sqlite/thread/ThreadSupport.h -+++ b/dlls/sqlite/thread/ThreadSupport.h -@@ -1,10 +1,10 @@ - #ifndef _INCLUDE_SOURCEMOD_THREAD_SUPPORT_H - #define _INCLUDE_SOURCEMOD_THREAD_SUPPORT_H - --#if defined __linux__ -+#if defined __linux__ || defined __APPLE__ - #include "PosixThreads.h" - #elif defined WIN32 - #include "WinThreads.h" - #endif - - #endif //_INCLUDE_SOURCEMOD_THREAD_SUPPORT_H -diff --git a/dlls/tfcx/CMisc.h b/dlls/tfcx/CMisc.h ---- a/dlls/tfcx/CMisc.h -+++ b/dlls/tfcx/CMisc.h -@@ -1,17 +1,17 @@ - - - #ifndef CMISC_H - #define CMISC_H - - #include "amxxmodule.h" - #include "CRank.h" - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define LINUXOFFSET 0 - #define CLIP_LINUXOFFSET 0 - #else - #define LINUXOFFSET 3 - #define CLIP_LINUXOFFSET 4 - #endif - - #define TFCMAX_CUSTOMWPNS 5 -@@ -100,24 +100,24 @@ enum { - TFC_PC_HWGUY, - TFC_PC_PYRO, - TFC_PC_SPY, - TFC_PC_ENGENEER, - TFC_PC_CIVILIAN, - }; - - struct weaponsVault { -- char* name; -- char* logName; -+ char name[32]; -+ char logName[32]; - short int ammoSlot; - bool melee; - }; - - struct traceVault { -- char * szName; -+ const char* szName; - char szTag[6]; - int iId; - int iAction; - float fDel; - int start; - int stop; - }; - -diff --git a/dlls/tfcx/Makefile b/dlls/tfcx/Makefile ---- a/dlls/tfcx/Makefile -+++ b/dlls/tfcx/Makefile -@@ -1,67 +1,124 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../hlsdk/multiplayer - MM_ROOT = ../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = tfcx -+PROJECT = tfcx - --BIN_SUFFIX = amxx_i386.so -+OBJECTS = sdk/amxxmodule.cpp CRank.cpp CMisc.cpp NBase.cpp NRank.cpp usermsg.cpp Utils.cpp \ -+ moduleconfig.cpp - --OBJECTS = sdk/amxxmodule.cpp CRank.cpp CMisc.cpp NBase.cpp NRank.cpp usermsg.cpp Utils.cpp moduleconfig.cpp -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --LINK = -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+LINK = - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) tfcx -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --tfcx: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/tfcx/sdk/amxxmodule.cpp b/dlls/tfcx/sdk/amxxmodule.cpp ---- a/dlls/tfcx/sdk/amxxmodule.cpp -+++ b/dlls/tfcx/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/tfcx/sdk/amxxmodule.h b/dlls/tfcx/sdk/amxxmodule.h ---- a/dlls/tfcx/sdk/amxxmodule.h -+++ b/dlls/tfcx/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/tfcx/tfcx.h b/dlls/tfcx/tfcx.h ---- a/dlls/tfcx/tfcx.h -+++ b/dlls/tfcx/tfcx.h -@@ -44,17 +44,17 @@ - #ifndef GETPLAYERAUTHID - #define GETPLAYERAUTHID (*g_engfuncs.pfnGetPlayerAuthId) - #endif - - - extern AMX_NATIVE_INFO stats_Natives[]; - extern AMX_NATIVE_INFO base_Natives[]; - --extern weaponsVault weaponData[MAX_WEAPONS]; -+extern weaponsVault weaponData[TFCMAX_WEAPONS]; - extern traceVault traceData[MAX_TRACE]; - - typedef void (*funEventCall)(void*); - extern funEventCall modMsgsEnd[MAX_REG_MSGS]; - extern funEventCall modMsgs[MAX_REG_MSGS]; - extern void (*function)(void*); - extern void (*endfunction)(void*); - -diff --git a/dlls/ts/tsfun/Makefile b/dlls/ts/tsfun/Makefile ---- a/dlls/ts/tsfun/Makefile -+++ b/dlls/ts/tsfun/Makefile -@@ -1,67 +1,123 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../../hlsdk/multiplayer - MM_ROOT = ../../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = tsfun -- --BIN_SUFFIX = amxx_i386.so -+PROJECT = tsfun - - OBJECTS = sdk/amxxmodule.cpp - --LINK = -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+LINK = - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk -+ -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) tsfun -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --tsfun: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/ts/tsfun/sdk/amxxmodule.cpp b/dlls/ts/tsfun/sdk/amxxmodule.cpp ---- a/dlls/ts/tsfun/sdk/amxxmodule.cpp -+++ b/dlls/ts/tsfun/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -2543,16 +2543,24 @@ C_DLLEXPORT int AMXX_Query(int *interfac - return AMXX_OK; - } - - // request function - #define REQFUNC(name, fptr, type) if ((fptr = (type)reqFnptrFunc(name)) == 0) return AMXX_FUNC_NOT_PRESENT - // request optional function - #define REQFUNC_OPT(name, fptr, type) fptr = (type)reqFnptrFunc(name) - -+C_DLLEXPORT int AMXX_CheckGame(const char *game) -+{ -+#ifdef FN_AMXX_CHECKGAME -+ return FN_AMXX_CHECKGAME(game); -+#else -+ return AMXX_GAME_OK; -+#endif -+} - C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) - { - // Check pointer - if (!reqFnptrFunc) - return AMXX_PARAM; - - g_fn_RequestFunction = reqFnptrFunc; - -@@ -3037,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/ts/tsfun/sdk/amxxmodule.h b/dlls/ts/tsfun/sdk/amxxmodule.h ---- a/dlls/ts/tsfun/sdk/amxxmodule.h -+++ b/dlls/ts/tsfun/sdk/amxxmodule.h -@@ -5,30 +5,36 @@ - - // prevent double include - #ifndef __AMXXMODULE_H__ - #define __AMXXMODULE_H__ - - // config - #include "moduleconfig.h" - -+#include // size_t - // metamod include files - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -50,24 +56,27 @@ struct amxx_module_info_s - }; - - // return values from functions called by amxx - #define AMXX_OK 0 /* no error */ - #define AMXX_IFVERS 1 /* interface version */ - #define AMXX_PARAM 2 /* Invalid parameter */ - #define AMXX_FUNC_NOT_PRESENT 3 /* Function not present */ - -+#define AMXX_GAME_OK 0 /* This module can load on the current game mod. */ -+#define AMXX_GAME_BAD 1 /* This module can not load on the current game mod. */ -+ - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -299,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -386,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -824,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -848,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1252,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1405,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1429,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1833,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2018,16 +2027,20 @@ int FN_ShouldCollide_Post(edict_t *pentT - - #endif // USE_METAMOD - - - #ifdef FN_AMXX_QUERY - void FN_AMXX_QUERY(void); - #endif // FN_AMXX_QUERY - -+#ifdef FN_AMXX_CHECKGAME -+int FN_AMXX_CHECKGAME(const char *); -+#endif // FN_AMXX_CHECKGAME -+ - #ifdef FN_AMXX_ATTACH - void FN_AMXX_ATTACH(void); - #endif // FN_AMXX_ATTACH - - #ifdef FN_AMXX_DETACH - void FN_AMXX_DETACH(void); - #endif // FN_AMXX_DETACH - -@@ -2103,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2162,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/dlls/ts/tsx/CMisc.h b/dlls/ts/tsx/CMisc.h ---- a/dlls/ts/tsx/CMisc.h -+++ b/dlls/ts/tsx/CMisc.h -@@ -34,30 +34,30 @@ - - #include "amxxmodule.h" - #include "CRank.h" - - #define TSMAX_CUSTOMWPNS 5 - #define TSMAX_WEAPONS 39 + TSMAX_CUSTOMWPNS - - --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define TSKNIFE_OFFSET 31 // owner offset in knife entity - #else - #define TSKNIFE_OFFSET 35 - #endif - - #define TSPWUP_SLOWMO 1 - #define TSPWUP_INFAMMO 2 - #define TSPWUP_KUNGFU 4 - #define TSPWUP_SLOWPAUSE 8 - #define TSPWUP_DFIRERATE 16 - #define TSPWUP_SJUMP 256 - --#if defined __linux__ -+#if defined(__linux__) || defined(__APPLE__) - #define EXTRAOFFSET 5 - #else - #define EXTRAOFFSET 0 - #endif - - #define TSX_SDUCK_OFFSET (27+EXTRAOFFSET) - #define TSX_SPEED1_OFFSET (85+EXTRAOFFSET) - #define TSX_PHYSICS_OFFSET (86+EXTRAOFFSET) -diff --git a/dlls/ts/tsx/Makefile b/dlls/ts/tsx/Makefile ---- a/dlls/ts/tsx/Makefile -+++ b/dlls/ts/tsx/Makefile -@@ -1,68 +1,124 @@ --#(C)2004-2005 AMX Mod X Development Team -+# (C)2004-2013 AMX Mod X Development Team - # Makefile written by David "BAILOPAN" Anderson - --HLSDK = ../../../../hlsdk -+########################################### -+### EDIT THESE PATHS FOR YOUR OWN SETUP ### -+########################################### -+ -+HLSDK = ../../../../hlsdk/multiplayer - MM_ROOT = ../../../../metamod/metamod - -+##################################### - ### EDIT BELOW FOR OTHER PROJECTS ### -+##################################### - --OPT_FLAGS = -O2 -funroll-loops -s -pipe -fno-strict-aliasing -fomit-frame-pointer --DEBUG_FLAGS = -g -ggdb3 --CPP = gcc-4.1 --NAME = tsx -+PROJECT = tsx - --BIN_SUFFIX = amxx_i386.so -+OBJECTS = sdk/amxxmodule.cpp CMisc.cpp CRank.cpp NBase.cpp NRank.cpp Utils.cpp moduleconfig.cpp \ -+ usermsg.cpp - --OBJECTS = sdk/amxxmodule.cpp CMisc.cpp CRank.cpp NBase.cpp \ -- NRank.cpp Utils.cpp moduleconfig.cpp usermsg.cpp \ -+############################################## -+### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -+############################################## - --LINK = -+C_OPT_FLAGS = -DNDEBUG -O2 -funroll-loops -fomit-frame-pointer -pipe -+C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -+C_GCC4_FLAGS = -fvisibility=hidden -+CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -+CPP = gcc -+CPP_OSX = clang - --INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -- -I$(MM_ROOT) -I$(HLSDK)/common -Isdk -+LINK = - --GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \ -+ -I$(MM_ROOT) -Isdk - --ifeq "$(GCC_VERSION)" "4" -- OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -+################################################ -+### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -+################################################ -+ -+OS := $(shell uname -s) -+ -+ifeq "$(OS)" "Darwin" -+ CPP = $(CPP_OSX) -+ LIB_EXT = dylib -+ LIB_SUFFIX = _amxx -+ CFLAGS += -DOSX -+ LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -+else -+ LIB_EXT = so -+ LIB_SUFFIX = _amxx_i386 -+ CFLAGS += -DLINUX -+ LINK += -shared - endif - -+LINK += -m32 -lm -ldl -+ -+CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall -Werror -+CPPFLAGS += -fno-exceptions -fno-rtti -+ -+BINARY = $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT) -+ - ifeq "$(DEBUG)" "true" - BIN_DIR = Debug -- CFLAGS = $(DEBUG_FLAGS) -+ CFLAGS += $(C_DEBUG_FLAGS) - else - BIN_DIR = Release -- CFLAGS = $(OPT_FLAGS) -+ CFLAGS += $(C_OPT_FLAGS) -+ LINK += -s - endif - --CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -m32 -+IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - --BINARY = $(NAME)_$(BIN_SUFFIX) --CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 --OPT_FLAGS += -march=i586 -+ifeq "$(IS_CLANG)" "1" -+ CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") -+ CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -+else -+ CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) -+ CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -+endif - --OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+# Clang || GCC >= 4 -+ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" -+ CFLAGS += $(C_GCC4_FLAGS) -+ CPPFLAGS += $(CPP_GCC4_FLAGS) -+endif -+ -+# Clang >= 3 || GCC >= 4.7 -+ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" -+ CFLAGS += -Wno-delete-non-virtual-dtor -+endif -+ -+# OS is Linux and not using clang -+ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" -+ LINK += -static-libgcc -+endif -+ -+OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) -+ -+# This will break if we include other Makefiles, but is fine for now. It allows -+# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -+# or other changes without mucking up the original. -+MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - - $(BIN_DIR)/%.o: %.cpp -- $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< -+ $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - - all: - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk -- $(MAKE) tsx -+ $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT) - --tsx: $(OBJ_LINUX) -- $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) -+$(PROJECT): $(OBJ_BIN) -+ $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - --debug: -- $(MAKE) all DEBUG=true -+debug: -+ $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - - default: all - - clean: -- rm -rf Release/sdk/*.o -- rm -rf Release/*.o -- rm -rf Release/$(NAME)_$(BIN_SUFFIX) -- rm -rf Debug/sdk/*.o -- rm -rf Debug/*.o -- rm -rf Debug/$(NAME)_$(BIN_SUFFIX) -+ rm -rf $(BIN_DIR)/*.o -+ rm -rf $(BIN_DIR)/sdk/*.o -+ rm -f $(BIN_DIR)/$(BINARY) -+ -diff --git a/dlls/ts/tsx/sdk/amxxmodule.cpp b/dlls/ts/tsx/sdk/amxxmodule.cpp ---- a/dlls/ts/tsx/sdk/amxxmodule.cpp -+++ b/dlls/ts/tsx/sdk/amxxmodule.cpp -@@ -2235,17 +2235,17 @@ static META_FUNCTIONS g_MetaFunctions_Ta - GetEntityAPI2, - GetEntityAPI2_Post, - GetNewDLLFunctions, - GetNewDLLFunctions_Post, - GetEngineFunctions, - GetEngineFunctions_Post - }; - --C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) -+C_DLLEXPORT int Meta_Query(const char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) - { - if ((int) CVAR_GET_FLOAT("developer") != 0) - UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", - Plugin_info.logtag, ifvers, Plugin_info.ifvers); - - // Check for valid pMetaUtilFuncs before we continue. - if(!pMetaUtilFuncs) { - UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); -@@ -2329,17 +2329,17 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIM - #ifdef FN_META_DETACH - FN_META_DETACH(); - #endif // FN_META_DETACH - return TRUE; - } - - - --#ifdef __linux__ -+#if defined(__linux__) || defined(__APPLE__) - // linux prototype - C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { - - #else - #ifdef _MSC_VER - // MSVC: Simulate __stdcall calling convention - C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) - { -@@ -3045,17 +3045,17 @@ char* UTIL_VarArgs( char *format, ... ) - return string; - } - - - //========================================================= - // UTIL_LogPrintf - Prints a logged message to console. - // Preceded by LOG: ( timestamp ) < message > - //========================================================= --void UTIL_LogPrintf( char *fmt, ... ) -+void UTIL_LogPrintf( const char *fmt, ... ) - { - va_list argptr; - static char string[1024]; - - va_start ( argptr, fmt ); - vsnprintf ( string, sizeof(string), fmt, argptr ); - va_end ( argptr ); - -diff --git a/dlls/ts/tsx/sdk/amxxmodule.h b/dlls/ts/tsx/sdk/amxxmodule.h ---- a/dlls/ts/tsx/sdk/amxxmodule.h -+++ b/dlls/ts/tsx/sdk/amxxmodule.h -@@ -15,21 +15,26 @@ - #ifdef USE_METAMOD - #include - #include - #include "osdep.h" - #endif // #ifdef USE_METAMOD - - // DLL Export - #undef DLLEXPORT --#ifndef __linux__ -+#if defined(WIN32) || defined(_WIN32) - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __attribute__((visibility("default"))) -+#endif -+ -+#if defined(__linux__) && !defined(LINUX) - #define LINUX -+#elif defined(__APPLE__) && !defined(OSX) -+#define OSX - #endif - - #undef C_DLLEXPORT - #define C_DLLEXPORT extern "C" DLLEXPORT - - // ***** AMXX stuff ***** - - // module interface version was 1 -@@ -61,17 +66,17 @@ struct amxx_module_info_s - - // *** Small stuff *** - // The next section is copied from the amx.h file - // Copyright (c) ITB CompuPhase, 1997-2005 - - #if defined HAVE_STDINT_H - #include - #else -- #if defined __LCC__ || defined __DMC__ || defined LINUX -+ #if defined __LCC__ || defined __DMC__ || defined LINUX || defined __APPLE__ - #if defined HAVE_INTTYPES_H - #include - #else - #include - #endif - #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L - /* The ISO C99 defines the int16_t and int_32t types. If the compiler got - * here, these types are probably undefined. -@@ -303,17 +308,17 @@ typedef int (AMXAPI *AMX_DEBUG)(struct t - - #if defined __GNUC__ - #define PACKED __attribute__((packed)) - #else - #define PACKED - #endif - - #if !defined AMX_NO_ALIGN -- #if defined LINUX || defined __FreeBSD__ -+ #if defined LINUX || defined __FreeBSD__ || defined __APPLE__ - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #elif defined MACOS && defined __MWERKS__ - #pragma options align=mac68k - #else - #pragma pack(push) - #pragma pack(1) /* structures must be packed (byte-aligned) */ - #if defined __TURBOC__ - #pragma option -a- /* "pack" pragma for older Borland compilers */ -@@ -390,28 +395,28 @@ enum { - AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ - AMX_ERR_USERDATA, /* unable to set user data field (table full) */ - AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ - AMX_ERR_PARAMS, /* parameter error */ - AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ - }; - - #if !defined AMX_NO_ALIGN -- #if defined __linux__ -+ #if defined(__linux__) || defined(__APPLE__) - #pragma pack() /* reset default packing */ - #else - #pragma pack(pop) /* reset previous packing */ - #endif - #endif - - - // ***** declare functions ***** - - #ifdef USE_METAMOD --void UTIL_LogPrintf( char *fmt, ... ); -+void UTIL_LogPrintf( const char *fmt, ... ); - void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); - short FixedSigned16( float value, float scale ); - unsigned short FixedUnsigned16( float value, float scale ); - - #ifdef FN_META_QUERY - void FN_META_QUERY(void); - #endif // FN_META_QUERY - -@@ -828,21 +833,21 @@ int FN_InconsistentFile_Post(const edict - - #ifdef FN_AllowLagCompensation_Post - int FN_AllowLagCompensation_Post(void); - #endif // FN_AllowLagCompensation_Post - - - - #ifdef FN_PrecacheModel --int FN_PrecacheModel(char *s); -+int FN_PrecacheModel(const char *s); - #endif // FN_PrecacheModel - - #ifdef FN_PrecacheSound --int FN_PrecacheSound(char *s); -+int FN_PrecacheSound(const char *s); - #endif // FN_PrecacheSound - - #ifdef FN_SetModel - void FN_SetModel(edict_t *e, const char *m); - #endif // FN_SetModel - - #ifdef FN_ModelIndex - int FN_ModelIndex(const char *m); -@@ -852,17 +857,17 @@ int FN_ModelIndex(const char *m); - int FN_ModelFrames(int modelIndex); - #endif // FN_ModelFrames - - #ifdef FN_SetSize - void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize - - #ifdef FN_ChangeLevel --void FN_ChangeLevel(char *s1, char *s2); -+void FN_ChangeLevel(const char *s1, const char *s2); - #endif // FN_ChangeLevel - - #ifdef FN_GetSpawnParms - void FN_GetSpawnParms(edict_t *ent); - #endif // FN_GetSpawnParms - - #ifdef FN_SaveSpawnParms - void FN_SaveSpawnParms(edict_t *ent); -@@ -1256,37 +1261,37 @@ void FN_RunPlayerMove(edict_t *fakeclien - int FN_NumberOfEntities(void); - #endif // FN_NumberOfEntities - - #ifdef FN_GetInfoKeyBuffer - char *FN_GetInfoKeyBuffer(edict_t *e); - #endif // FN_GetInfoKeyBuffer - - #ifdef FN_InfoKeyValue --char *FN_InfoKeyValue(char *infobuffer, char *key); -+char *FN_InfoKeyValue(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue - - #ifdef FN_SetKeyValue --void FN_SetKeyValue(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue - - #ifdef FN_SetClientKeyValue --void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue - - #ifdef FN_IsMapValid --int FN_IsMapValid(char *filename); -+int FN_IsMapValid(const char *filename); - #endif // FN_IsMapValid - - #ifdef FN_StaticDecal - void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal - - #ifdef FN_PrecacheGeneric --int FN_PrecacheGeneric(char *s); -+int FN_PrecacheGeneric(const char *s); - #endif // FN_PrecacheGeneric - - #ifdef FN_GetPlayerUserId - int FN_GetPlayerUserId(edict_t *e ); - #endif // FN_GetPlayerUserId - - #ifdef FN_BuildSoundMsg - void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -1409,21 +1414,21 @@ const char *FN_GetPlayerAuthId(edict_t * - #endif // FN_GetPlayerAuthId - - - - - - - #ifdef FN_PrecacheModel_Post --int FN_PrecacheModel_Post(char *s); -+int FN_PrecacheModel_Post(const char *s); - #endif // FN_PrecacheModel_Post - - #ifdef FN_PrecacheSound_Post --int FN_PrecacheSound_Post(char *s); -+int FN_PrecacheSound_Post(const char *s); - #endif // FN_PrecacheSound_Post - - #ifdef FN_SetModel_Post - void FN_SetModel_Post(edict_t *e, const char *m); - #endif // FN_SetModel_Post - - #ifdef FN_ModelIndex_Post - int FN_ModelIndex_Post(const char *m); -@@ -1433,17 +1438,17 @@ int FN_ModelIndex_Post(const char *m); - int FN_ModelFrames_Post(int modelIndex); - #endif // FN_ModelFrames_Post - - #ifdef FN_SetSize_Post - void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); - #endif // FN_SetSize_Post - - #ifdef FN_ChangeLevel_Post --void FN_ChangeLevel_Post(char *s1, char *s2); -+void FN_ChangeLevel_Post(const char *s1, const char *s2); - #endif // FN_ChangeLevel_Post - - #ifdef FN_GetSpawnParms_Post - void FN_GetSpawnParms_Post(edict_t *ent); - #endif // FN_GetSpawnParms_Post - - #ifdef FN_SaveSpawnParms_Post - void FN_SaveSpawnParms_Post(edict_t *ent); -@@ -1837,37 +1842,37 @@ void FN_RunPlayerMove_Post(edict_t *fake - int FN_NumberOfEntities_Post(void); - #endif // FN_NumberOfEntities_Post - - #ifdef FN_GetInfoKeyBuffer_Post - char *FN_GetInfoKeyBuffer_Post(edict_t *e); - #endif // FN_GetInfoKeyBuffer_Post - - #ifdef FN_InfoKeyValue_Post --char *FN_InfoKeyValue_Post(char *infobuffer, char *key); -+char *FN_InfoKeyValue_Post(char *infobuffer, const char *key); - #endif // FN_InfoKeyValue_Post - - #ifdef FN_SetKeyValue_Post --void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); -+void FN_SetKeyValue_Post(char *infobuffer, const char *key, const char *value); - #endif // FN_SetKeyValue_Post - - #ifdef FN_SetClientKeyValue_Post --void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); -+void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, const char *key, const char *value); - #endif // FN_SetClientKeyValue_Post - - #ifdef FN_IsMapValid_Post --int FN_IsMapValid_Post(char *filename); -+int FN_IsMapValid_Post(const char *filename); - #endif // FN_IsMapValid_Post - - #ifdef FN_StaticDecal_Post - void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); - #endif // FN_StaticDecal_Post - - #ifdef FN_PrecacheGeneric_Post --int FN_PrecacheGeneric_Post(char *s); -+int FN_PrecacheGeneric_Post(const char *s); - #endif // FN_PrecacheGeneric_Post - - #ifdef FN_GetPlayerUserId_Post - int FN_GetPlayerUserId_Post(edict_t *e ); - #endif // FN_GetPlayerUserId_Post - - #ifdef FN_BuildSoundMsg_Post - void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); -@@ -2111,17 +2116,17 @@ enum LibType - - typedef void (*AUTHORIZEFUNC)(int player, const char *authstring); - - typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef int (*PFN_ADD_NEW_NATIVES) (const AMX_NATIVE_INFO * /*list*/); - typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); - typedef char * (*PFN_BUILD_PATHNAME_R) (char * /*buffer*/, size_t /* maxlen */, const char * /* format */, ...); - typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); --typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); -+typedef void (*PFN_PRINT_SRVCONSOLE) (const char * /*format*/, ...); - typedef const char * (*PFN_GET_MODNAME) (void); - typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); - typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); - typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); - typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); - typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); - typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); -@@ -2170,18 +2175,18 @@ typedef void * (*PFN_ALLOCATOR) (co - typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); - typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, - const unsigned int /*type*/, const void* /*addr*/ ); - #endif - typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); - typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); - typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); --typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); --typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); -+typedef int (*PFN_AMX_FINDNATIVE) (AMX* /*amx*/, const char* /*func name*/, int* /*index*/); - typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/, int /* debug */); - typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); - typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); - typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); - typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); - typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); - typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); - typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); -diff --git a/installer/amxmodx-installer.nsi b/installer/amxmodx-installer.nsi ---- a/installer/amxmodx-installer.nsi -+++ b/installer/amxmodx-installer.nsi -@@ -1,13 +1,13 @@ - ;(C)2004 AMX Mod X Development Team - ; Licensed under the GNU General Public License - ; Originally written by -=HaXoMaTiC=- - !define PRODUCT_NAME "AMX Mod X Installer" --!define PRODUCT_VERSION "1.8.1" -+!define PRODUCT_VERSION "1.8.2" - !define PRODUCT_PUBLISHER "AMX Mod X Dev Team" - !define PRODUCT_WEB_SITE "http://www.amxmodx.org/" - !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Installer.exe" - !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" - !define PRODUCT_UNINST_ROOT_KEY "HKLM" - !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" - - !include "MUI.nsh" -@@ -144,39 +144,51 @@ Section "MainSection" SEC01 - File "installer\files\base\addons\amxmodx\data\lang\statscfg.txt" - File "installer\files\base\addons\amxmodx\data\lang\statsx.txt" - File "installer\files\base\addons\amxmodx\data\lang\stats_dod.txt" - File "installer\files\base\addons\amxmodx\data\lang\telemenu.txt" - File "installer\files\base\addons\amxmodx\data\lang\time.txt" - File "installer\files\base\addons\amxmodx\data\lang\timeleft.txt" - SetOutPath "$INSTDIR\files\base\dlls" - File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm.dll" -+ File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm.dylib" - File "installer\files\base\addons\amxmodx\dlls\amxmodx_mm_i386.so" - File "installer\files\base\addons\amxmodx\dlls\metamod.dll" -+ File "installer\files\base\addons\amxmodx\dlls\metamod.dylib" - File "installer\files\base\addons\amxmodx\dlls\metamod_i386.so" - SetOutPath "$INSTDIR\files\base\modules" - File "installer\files\base\addons\amxmodx\modules\nvault_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\nvault_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\nvault_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\engine_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\engine_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\engine_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\fakemeta_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\fun_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\fun_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\fun_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\geoip_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\geoip_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\geoip_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\sqlite_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\sqlite_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\sqlite_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\mysql_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\mysql_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\mysql_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\regex_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\regex_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\regex_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\sockets_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\sockets_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\sockets_amxx_i386.so" - File "installer\files\base\addons\amxmodx\modules\hamsandwich_amxx.dll" -+ File "installer\files\base\addons\amxmodx\modules\hamsandwich_amxx.dylib" - File "installer\files\base\addons\amxmodx\modules\hamsandwich_amxx_i386.so" - SetOutPath "$INSTDIR\files\base\plugins" - File "installer\files\base\addons\amxmodx\plugins\admin.amxx" - File "installer\files\base\addons\amxmodx\plugins\adminchat.amxx" - File "installer\files\base\addons\amxmodx\plugins\admincmd.amxx" - File "installer\files\base\addons\amxmodx\plugins\adminhelp.amxx" - File "installer\files\base\addons\amxmodx\plugins\adminslots.amxx" - File "installer\files\base\addons\amxmodx\plugins\adminvote.amxx" -@@ -202,17 +214,19 @@ Section "MainSection" SEC01 - File "installer\files\base\addons\amxmodx\scripting\adminchat.sma" - File "installer\files\base\addons\amxmodx\scripting\admincmd.sma" - File "installer\files\base\addons\amxmodx\scripting\adminhelp.sma" - File "installer\files\base\addons\amxmodx\scripting\adminslots.sma" - File "installer\files\base\addons\amxmodx\scripting\adminvote.sma" - File "installer\files\base\addons\amxmodx\scripting\amxxpc" - File "installer\files\base\addons\amxmodx\scripting\amxxpc.exe" - File "installer\files\base\addons\amxmodx\scripting\amxxpc32.dll" -+ File "installer\files\base\addons\amxmodx\scripting\amxxpc32.dylib" - File "installer\files\base\addons\amxmodx\scripting\amxxpc32.so" -+ File "installer\files\base\addons\amxmodx\scripting\amxxpc_osx" - File "installer\files\base\addons\amxmodx\scripting\antiflood.sma" - File "installer\files\base\addons\amxmodx\scripting\cmdmenu.sma" - File "installer\files\base\addons\amxmodx\scripting\compile.exe" - File "installer\files\base\addons\amxmodx\scripting\compile.sh" - File "installer\files\base\addons\amxmodx\scripting\dlsym" - File "installer\files\base\addons\amxmodx\scripting\dlsym64" - File "installer\files\base\addons\amxmodx\scripting\imessage.sma" - SetOutPath "$INSTDIR\files\base\scripting\include" -@@ -327,18 +341,20 @@ Section "MainSection" SEC01 - File "installer\files\cstrike\addons\amxmodx\configs\modules.ini" - File "installer\files\cstrike\addons\amxmodx\configs\plugins.ini" - File "installer\files\cstrike\addons\amxmodx\configs\stats.ini" - SetOutPath "$INSTDIR\files\cstrike\data" - File "installer\files\cstrike\addons\amxmodx\data\csstats.amxx" - File "installer\files\cstrike\addons\amxmodx\data\WinCSX.exe" - SetOutPath "$INSTDIR\files\cstrike\modules" - File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx.dll" -+ File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx.dylib" - File "installer\files\cstrike\addons\amxmodx\modules\cstrike_amxx_i386.so" - File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx.dll" -+ File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx.dylib" - File "installer\files\cstrike\addons\amxmodx\modules\csx_amxx_i386.so" - SetOutPath "$INSTDIR\files\cstrike\plugins" - File "installer\files\cstrike\addons\amxmodx\plugins\miscstats.amxx" - File "installer\files\cstrike\addons\amxmodx\plugins\restmenu.amxx" - File "installer\files\cstrike\addons\amxmodx\plugins\statsx.amxx" - File "installer\files\cstrike\addons\amxmodx\plugins\stats_logging.amxx" - SetOutPath "$INSTDIR\files\cstrike\scripting" - File "installer\files\cstrike\addons\amxmodx\scripting\csstats.sma" -@@ -351,18 +367,20 @@ Section "MainSection" SEC01 - File "installer\files\dod\addons\amxmodx\configs\cvars.ini" - File "installer\files\dod\addons\amxmodx\configs\maps.ini" - File "installer\files\dod\addons\amxmodx\configs\modules.ini" - File "installer\files\dod\addons\amxmodx\configs\plugins.ini" - SetOutPath "$INSTDIR\files\dod\data" - File "installer\files\dod\addons\amxmodx\data\dodstats.amxx" - SetOutPath "$INSTDIR\files\dod\modules" - File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx.dll" -+ File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx.dylib" - File "installer\files\dod\addons\amxmodx\modules\dodfun_amxx_i386.so" - File "installer\files\dod\addons\amxmodx\modules\dodx_amxx.dll" -+ File "installer\files\dod\addons\amxmodx\modules\dodx_amxx.dylib" - File "installer\files\dod\addons\amxmodx\modules\dodx_amxx_i386.so" - SetOutPath "$INSTDIR\files\dod\plugins" - File "installer\files\dod\addons\amxmodx\plugins\plmenu.amxx" - File "installer\files\dod\addons\amxmodx\plugins\stats.amxx" - File "installer\files\dod\addons\amxmodx\plugins\statssounds.amxx" - File "installer\files\dod\addons\amxmodx\plugins\stats_logging.amxx" - SetOutPath "$INSTDIR\files\dod\scripting" - File "installer\files\dod\addons\amxmodx\scripting\dodstats.sma" -@@ -410,16 +428,17 @@ Section "MainSection" SEC01 - File "installer\files\tfc\addons\amxmodx\configs\cvars.ini" - File "installer\files\tfc\addons\amxmodx\configs\maps.ini" - File "installer\files\tfc\addons\amxmodx\configs\modules.ini" - File "installer\files\tfc\addons\amxmodx\configs\plugins.ini" - SetOutPath "$INSTDIR\files\tfc\data" - File "installer\files\tfc\addons\amxmodx\data\tfcstats.amxx" - SetOutPath "$INSTDIR\files\tfc\modules" - File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx.dll" -+ File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx.dylib" - File "installer\files\tfc\addons\amxmodx\modules\tfcx_amxx_i386.so" - SetOutPath "$INSTDIR\files\tfc\plugins" - File "installer\files\tfc\addons\amxmodx\plugins\plmenu.amxx" - File "installer\files\tfc\addons\amxmodx\plugins\stats.amxx" - File "installer\files\tfc\addons\amxmodx\plugins\statssounds.amxx" - File "installer\files\tfc\addons\amxmodx\plugins\stats_logging.amxx" - SetOutPath "$INSTDIR\files\tfc\scripting" - File "installer\files\tfc\addons\amxmodx\scripting\plmenu.sma" -@@ -522,16 +541,17 @@ Section Uninstall - Delete "$INSTDIR\files\tfc\scripting\statssounds.sma" - Delete "$INSTDIR\files\tfc\scripting\stats.sma" - Delete "$INSTDIR\files\tfc\scripting\plmenu.sma" - Delete "$INSTDIR\files\tfc\plugins\stats_logging.amxx" - Delete "$INSTDIR\files\tfc\plugins\statssounds.amxx" - Delete "$INSTDIR\files\tfc\plugins\stats.amxx" - Delete "$INSTDIR\files\tfc\plugins\plmenu.amxx" - Delete "$INSTDIR\files\tfc\modules\tfcx_amxx_i386.so" -+ Delete "$INSTDIR\files\tfc\modules\tfcx_amxx.dylib" - Delete "$INSTDIR\files\tfc\modules\tfcx_amxx.dll" - Delete "$INSTDIR\files\tfc\data\tfcstats.amxx" - Delete "$INSTDIR\files\tfc\configs\plugins.ini" - Delete "$INSTDIR\files\tfc\configs\modules.ini" - Delete "$INSTDIR\files\tfc\configs\maps.ini" - Delete "$INSTDIR\files\tfc\configs\cvars.ini" - Delete "$INSTDIR\files\tfc\configs\core.ini" - Delete "$INSTDIR\files\ns\scripting\unstuck.sma" -@@ -562,18 +582,20 @@ Section Uninstall - Delete "$INSTDIR\files\dod\scripting\stats.sma" - Delete "$INSTDIR\files\dod\scripting\plmenu.sma" - Delete "$INSTDIR\files\dod\scripting\dodstats.sma" - Delete "$INSTDIR\files\dod\plugins\stats_logging.amxx" - Delete "$INSTDIR\files\dod\plugins\statssounds.amxx" - Delete "$INSTDIR\files\dod\plugins\stats.amxx" - Delete "$INSTDIR\files\dod\plugins\plmenu.amxx" - Delete "$INSTDIR\files\dod\modules\dodx_amxx_i386.so" -+ Delete "$INSTDIR\files\dod\modules\dodx_amxx.dylib" - Delete "$INSTDIR\files\dod\modules\dodx_amxx.dll" - Delete "$INSTDIR\files\dod\modules\dodfun_amxx_i386.so" -+ Delete "$INSTDIR\files\dod\modules\dodfun_amxx.dylib" - Delete "$INSTDIR\files\dod\modules\dodfun_amxx.dll" - Delete "$INSTDIR\files\dod\data\dodstats.amxx" - Delete "$INSTDIR\files\dod\configs\plugins.ini" - Delete "$INSTDIR\files\dod\configs\modules.ini" - Delete "$INSTDIR\files\dod\configs\maps.ini" - Delete "$INSTDIR\files\dod\configs\cvars.ini" - Delete "$INSTDIR\files\dod\configs\core.ini" - Delete "$INSTDIR\files\cstrike\scripting\stats_logging.sma" -@@ -581,21 +603,23 @@ Section Uninstall - Delete "$INSTDIR\files\cstrike\scripting\restmenu.sma" - Delete "$INSTDIR\files\cstrike\scripting\miscstats.sma" - Delete "$INSTDIR\files\cstrike\scripting\csstats.sma" - Delete "$INSTDIR\files\cstrike\plugins\stats_logging.amxx" - Delete "$INSTDIR\files\cstrike\plugins\statsx.amxx" - Delete "$INSTDIR\files\cstrike\plugins\restmenu.amxx" - Delete "$INSTDIR\files\cstrike\plugins\miscstats.amxx" - Delete "$INSTDIR\files\cstrike\modules\csx_amxx_i386.so" -+ Delete "$INSTDIR\files\cstrike\modules\csx_amxx.dylib" - Delete "$INSTDIR\files\cstrike\modules\csx_amxx.dll" - Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx_i386.so" -+ Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx.dylib" - Delete "$INSTDIR\files\cstrike\modules\cstrike_amxx.dll" - Delete "$INSTDIR\files\cstrike\data\csstats.amxx" -- Delete "$INSTDIR\files\cstrike\data\WinCSX.amxx" -+ Delete "$INSTDIR\files\cstrike\data\WinCSX.exe" - Delete "$INSTDIR\files\cstrike\configs\stats.ini" - Delete "$INSTDIR\files\cstrike\configs\plugins.ini" - Delete "$INSTDIR\files\cstrike\configs\modules.ini" - Delete "$INSTDIR\files\cstrike\configs\maps.ini" - Delete "$INSTDIR\files\cstrike\configs\cvars.ini" - Delete "$INSTDIR\files\cstrike\configs\core.ini" - Delete "$INSTDIR\files\cstrike\configs\cmds.ini" - Delete "$INSTDIR\files\cstrike\configs\amxx.cfg" -@@ -734,38 +758,50 @@ Section Uninstall - Delete "$INSTDIR\files\base\plugins\admin_sql.amxx" - Delete "$INSTDIR\files\base\plugins\adminvote.amxx" - Delete "$INSTDIR\files\base\plugins\adminslots.amxx" - Delete "$INSTDIR\files\base\plugins\adminhelp.amxx" - Delete "$INSTDIR\files\base\plugins\admincmd.amxx" - Delete "$INSTDIR\files\base\plugins\adminchat.amxx" - Delete "$INSTDIR\files\base\plugins\admin.amxx" - Delete "$INSTDIR\files\base\modules\nvault_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\nvault_amxx.dylib" - Delete "$INSTDIR\files\base\modules\nvault_amxx.dll" - Delete "$INSTDIR\files\base\modules\sockets_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\sockets_amxx.dylib" - Delete "$INSTDIR\files\base\modules\sockets_amxx.dll" - Delete "$INSTDIR\files\base\modules\regex_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\regex_amxx.dylib" - Delete "$INSTDIR\files\base\modules\regex_amxx.dll" - Delete "$INSTDIR\files\base\modules\sqlite_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\sqlite_amxx.dylib" - Delete "$INSTDIR\files\base\modules\sqlite_amxx.dll" - Delete "$INSTDIR\files\base\modules\mysql_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\mysql_amxx.dylib" - Delete "$INSTDIR\files\base\modules\mysql_amxx.dll" - Delete "$INSTDIR\files\base\modules\geoip_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\geoip_amxx.dylib" - Delete "$INSTDIR\files\base\modules\geoip_amxx.dll" - Delete "$INSTDIR\files\base\modules\fun_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\fun_amxx.dylib" - Delete "$INSTDIR\files\base\modules\fun_amxx.dll" - Delete "$INSTDIR\files\base\modules\fakemeta_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\fakemeta_amxx.dylib" - Delete "$INSTDIR\files\base\modules\fakemeta_amxx.dll" - Delete "$INSTDIR\files\base\modules\engine_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\engine_amxx.dylib" - Delete "$INSTDIR\files\base\modules\engine_amxx.dll" - Delete "$INSTDIR\files\base\modules\hamsandwich_amxx_i386.so" -+ Delete "$INSTDIR\files\base\modules\hamsandwich_amxx.dylib" - Delete "$INSTDIR\files\base\modules\hamsandwich_amxx.dll" - Delete "$INSTDIR\files\base\dlls\metamod_i386.so" -+ Delete "$INSTDIR\files\base\dlls\metamod.dylib" - Delete "$INSTDIR\files\base\dlls\metamod.dll" - Delete "$INSTDIR\files\base\dlls\amxmodx_mm_i386.so" -+ Delete "$INSTDIR\files\base\dlls\amxmodx_mm.dylib" - Delete "$INSTDIR\files\base\dlls\amxmodx_mm.dll" - Delete "$INSTDIR\files\base\data\lang\timeleft.txt" - Delete "$INSTDIR\files\base\data\lang\time.txt" - Delete "$INSTDIR\files\base\data\lang\telemenu.txt" - Delete "$INSTDIR\files\base\data\lang\stats_dod.txt" - Delete "$INSTDIR\files\base\data\lang\statsx.txt" - Delete "$INSTDIR\files\base\data\lang\statscfg.txt" - Delete "$INSTDIR\files\base\data\lang\scrollmsg.txt" -diff --git a/installer/builder/Build.cs b/installer/builder/Build.cs ---- a/installer/builder/Build.cs -+++ b/installer/builder/Build.cs -@@ -12,31 +12,35 @@ namespace AMXXRelease - - public Build(Config cfg) - { - m_Mods = new ArrayList(); - m_Cfg = cfg; - - CoreMod core = new CoreMod(); - ModCstrike cstrike = new ModCstrike(); -+ ModDoD dod = new ModDoD(); -+ ModTFC tfc = new ModTFC(); - - m_Mods.Add(core); - m_Mods.Add(cstrike); -+ m_Mods.Add(dod); -+ m_Mods.Add(tfc); - -- ModDoD dod = new ModDoD(); -- ModEsf esf = new ModEsf(); -- ModNs ns = new ModNs(); -- ModTFC tfc = new ModTFC(); -- ModTs ts = new ModTs(); -+ // These mods don't have OS X builds -+ if (!Releaser.IsOSX) -+ { -+ ModEsf esf = new ModEsf(); -+ ModNs ns = new ModNs(); -+ ModTs ts = new ModTs(); - -- m_Mods.Add(dod); -- m_Mods.Add(esf); -- m_Mods.Add(ns); -- m_Mods.Add(tfc); -- m_Mods.Add(ts); -+ m_Mods.Add(esf); -+ m_Mods.Add(ns); -+ m_Mods.Add(ts); -+ } - } - - public virtual int GetMods() - { - return m_Mods.Count; - } - - public virtual AMod GetMod(int i) -diff --git a/installer/builder/CoreMod.cs b/installer/builder/CoreMod.cs ---- a/installer/builder/CoreMod.cs -+++ b/installer/builder/CoreMod.cs -@@ -26,24 +26,27 @@ namespace AMXXRelease - { - return null; - } - - //annoyingly complicated file exclusion filter - public override sealed bool ExcludeCopy(string file) - { - if ( ((file.IndexOf(".so")!=-1) || (ABuilder.GetFileName(file).CompareTo("amxxpc")==0)) -- && (Releaser.IsWindows) ) -+ && (Releaser.IsWindows || Releaser.IsOSX) ) -+ return true; -+ if ( ((file.IndexOf(".dylib")!=-1) || (ABuilder.GetFileName(file).CompareTo("amxxpc_osx")==0)) -+ && (!Releaser.IsOSX) ) - return true; - if ( (file.IndexOf(".sh")!=-1) && Releaser.IsWindows ) - return true; - if ( ((file.IndexOf(".exe")!=-1) || (file.IndexOf(".dll")!=-1)) - && (!Releaser.IsWindows) ) - return true; -- if ( (file.IndexOf("dlsym")!=-1) && Releaser.IsWindows ) -+ if ( (file.IndexOf("dlsym")!=-1) && (Releaser.IsWindows || Releaser.IsOSX) ) - return true; - if (ABuilder.GetFileName(file).CompareTo("svn_version.tpl") == 0) - { - return true; - } - - return base.ExcludeCopy(file); - } -diff --git a/installer/builder/LinuxBuilder.cs b/installer/builder/LinuxBuilder.cs ---- a/installer/builder/LinuxBuilder.cs -+++ b/installer/builder/LinuxBuilder.cs -@@ -34,17 +34,17 @@ namespace AMXXRelease - chmod.WorkingDirectory = dir; - chmod.Arguments = "-R 755 " + file_list; - chmod.UseShellExecute = false; - Process c = Process.Start(chmod); - c.WaitForExit(); - c.Close(); - - -- info.Arguments = "zcvf \"" + target + ".tar.gz\" " + file_list; -+ info.Arguments = "zcvf \"" + target + "-linux.tar.gz\" " + file_list; - info.UseShellExecute = false; - - Process p = Process.Start(info); - p.WaitForExit(); - p.Close(); - } - - public override void AmxxPc(string inpath, string args) -diff --git a/installer/builder/MacBuilder.cs b/installer/builder/MacBuilder.cs -new file mode 100644 ---- /dev/null -+++ b/installer/builder/MacBuilder.cs -@@ -0,0 +1,111 @@ -+using System; -+using System.Diagnostics; -+using System.IO; -+ -+namespace AMXXRelease -+{ -+ //Build process for Mac OS X -+ public class MacBuilder : ABuilder -+ { -+ private string m_AmxxPc; -+ -+ public override void OnBuild() -+ { -+ m_AmxxPc = PropSlashes(m_Cfg.GetSourceTree() + "/plugins/amxxpc_osx"); -+ } -+ -+ public override void CompressDir(string target, string dir) -+ { -+ ProcessStartInfo info = new ProcessStartInfo(); -+ -+ info.FileName = m_Cfg.CompressPath(); -+ info.WorkingDirectory = dir; -+ -+ string [] files = Directory.GetFiles(dir); -+ string file_list = ""; -+ for (int i=0; i - - - - - - - -+ - - - - - - - - -+ - - - -- -\ No newline at end of file -+ -diff --git a/installer/builder/builder.exe b/installer/builder/builder.exe -index 1dc67f9a7586e5ebd936faf88868984f37439f25..f9a44acd1c8e5fe1a5da4fc8feae9f05af6a1193 -GIT binary patch -literal 19968 -zc%1D#3vgUlb?3c(`}V)m?&@brw%5N{k*&4t_#?|U{z!5xuw}=RV>=j>)#^#wXthtg -zT{&`$gVQDXX;+}Kv -zeV>)q9~fGuovgF>-E;0a=bn4cx#ym{yV1TI?gt+LX!yQx0pJ{n*ABS+>omUOi@zL) -zr$XOca!%R%%_Tz<`BHk?GRLj#R63U}7R_>c#7J8+#dN-y?%h9_o-#*`Oe_{&E@d3( -z1K6whV4&D^oh|oOh$|6A2iPqYqgPtKPfP8nue!tb6P^)xdil7m<^SBL^Waw#%Goa$ -z^Qu~9k!Jy-S73{|uUeEF^uVJC@A1HyvN2o6=lWg{YuWAUZNCtGW5z03Igq-cj=a!4 -zm2^Aszl>!R%$(HqtdzBP9^J0FdR|yjo8IB2NsH$VX%{z;7VD}08tyTzzFA{mHeZCP -zQqHstBQshkIFf|AD)`}PoM?6#fFjh>&+YK|?SJ95NNvNZ!|ka~KePkukx&~Q+PL?#&NA{GopzxZ2GZj -z-oa#>T(Sm1mL&9ALN|KQLa|bYR-+3bU?wZHDBnhy@CMJg_(}2HV+_`Zmp~`vYtmaR~c#Mk-qsOV$Q>gGpE!o -zZ0pt*a;W~%rD|+%>D1vy;CM^iiqzq7n({zfgt~g0pRBQnW^F^>a3o;8TSe{|DTDJu -zWAqiuSg$O^=Bii7`Z`N#ixY*;j5XMOxuHGSzH_~ZH$s!+w#zo__h%_B$tY9QK>pvCwNr?gue=%FVxxl6XcfpiExobubartPa}8L2>5 -z9gQJvBJePK4fz6%M^b@Az^2{)%7qIT5`K?5C`b2#dctqL7Zo=f$&Hji)r5YER*nPr -z%^T3gz$5bp{9@o!^9D3AaBki}Pz*dbZ-C6Kn@xyX5$XQyZ!TPDOa(a(UTL6UuwFtA -zp9oV5wpYlT4eg0wJM3(Ab5B_j?*r)iQL9>&#v&!z&yD5w;-3QYFa~Z{=qYmv55@JRuyG+uWTJFUqDJvS} -z00R1>D;lkJ$o=SwCW(zQc7e5#vCTs4qixOhZuBrSr<}LN9yifKda&_GG^lUik6v%& -z{8239NlB7B#Tyq3z -z&$cb3J*#;p)_CHENY@IAgTTWY3&c)aW5xO#sSV>6!z1dx{Pu67mD_R6Tj3|DQix=m -z?H)7H(qo~ymW+j1R;&RxFvXoO5inP?w!VOgQK?707U)Li;2bq@3;RXZT}nYX!15^= -ztlKFrPGaC`!o(sTg$jX_al*S&w1l*Q*muGR2~84{5bFazud^^$h-}XZ8vBc}pTK<5 -zmZpwOJ^J=`w2OBQ&Z&|LO0RL^3QEhYv=^5OCW2xj>hQ62KNGUYQsI#GkZ=C^MEhHv -zJ0u*MigZ!27qTA5!9+L_nd{J0$j4~&D$kNN^^0Uc -zk(<)+8a^W&TW!BZZ2389`4WEfYMHfKD71pz+YoK%BkMfpnnn>ln2I=nFbM@tVgl4K -z3#n$Sn}sT)sqPA*Dd>b#EvHoy=Ejq>uOID;5v^|@VB^wWJp^1=Cq!_B_00*e(+K-G -z(nTjapOv^Y?PQd6ah$K6jFE|&X)kM@Kqh6QL19-7sJe(zZ9-++W~$2;A45+G(Tmrh -z3n_n?OGRxK0$E~!I7U>qS-4DwJVjGfAV?q8`ZZ2^iZ)&Qqms!AYluqlXft)|xZ6(M -zBoVT10l2Pmu8Xi?*(}e&Q#F-xRG-zWNn4#_)B8@Pr2OMjXlXeO*3+QqHVA@6Dn~q>?ZE5QlSE7@KTLAoE?^(+op2eAh7pT24PKhvg4a4=E7Q(=4KAOb`BI%eKBwbc -zQ!N&8-oRzRN;;?QyTB7jQ$u^syM#uuz9y=;w-IY;FNJ)mj{?4Q9qkA8WTPug00A!$ -z^a3FP+)9OfH&u=kL!1f)EylTr6L*^zlJlYN>jcJYyGGXr0k#3wCpF@% -z(qW11e{UL{*1Q?+)B-17;(!WLZJj8!adGV_Kxq4iv6N}2hjoS`#(Gqfn}HGs<{LVG -z@F4CG#cD?CnCe^tpQtLgGO3Gv%ktHeq?Ef4#NAs5tEK!DlL^ogg2nQrDPF -ztHNBENnfZiV^@UlL=BGR0u`PJ+m|%q1Yzx1i$_`C$rS61qs{a5F9<6NyF*T&Lt`??GX!95n8Xi^X5#sr0*mg${^&x1UNk$6pD*up-uOY&a~Ygq?J@lWrCLv^n3)T&-1iCzV%%C%`;t!v%21 -zZ@WjEe_wmln=zz9$kc2-;um{x0M4MlQdhJG1JR)M1Q}p%rEt+*BEp>`?$V)e{Vh3X -zp5n0(D;^TozoZ1uhP;d%8SRuStmhs7vyye~)oWsmC+nAX$a85gYkW->R=D+rUZR)_ -zhxTQ&)u5CAP+@+jIv2qO -zxleso+7&_{xcS5uY18dHJe}fPQFVu@M`!3}nysvKLY^Xcv_ -z#BY6E_ijT>C>5}%f_;AL$8*TkK*eQ;F0z^x4^+Pa`Q{Gs+$goV0;^eD=SxMZkvUXn -zt5W@N4pnWi8r7~~CDp`yD)Cvt8W=!Z)=@oYJ%B_ehOmB>^=H@>HK5LDuBLVCFR2^j -z4_7^vq4jSzbtGWvAxSMr>=MsB3$(|^qAvuzt;2yI(Wxi>9L`4uGKdxCB~Pu&!E -ze-xHC3yH1e?ytl0l3{5PH185&-eg1)SZy{oYHhT;F{{_^rZj7>)Aw6PoW5?|x$|USCm+*L#X_2~`M51S_BlnUzCfS6nHdTs2*&DRba?KQlEQyZS!qfyd-qiPkRo>+3$dVt#jvDSN{VyzJva@P7t -zwEFs<^x(hZ^sN`7?ml;xTCutL-hGWcd%R!9@Fz9&S+C!EH7c` -z>MlpGBitSqdVO2!6^5-=}%^_N# -zGaEWLt=mKxA!0KhOOybN^X*9@|cZFekXZm)lpApC~9@ -zU8;uR1hzVSPX89(yndl4c>>xuCSj^B- -zhH4V5kw-MbIQdwV2=5GBnFjGi+k$4uo3Ke%lzjS3-RZJt(1mhCVEz -zy$t<@gsx-gGZH$)(B~v{l%X&2d@b-UgwFf^3D1qM`(DBJMQjyVs7+$q&g~{{d$~Qt -zZ4O(Fxperre-hhIa{DB==eRx3?epAzU!(TBqVLdX@Gt%kC>s2X+go*NNu~l1>XQ}i -z>uK`LolQ;bjW-$kAiU&z6`|Ff@b82l`IcfVHPM$jX!&3G-jKg|It?F8`?dc>=ruW3 -zr@eu5-?hw@slojMf}&PJ=!}Hk%g|W~y`Q1SB=i77PfF;c44sqE6AV2gp)YDWu56aR -zz=Yd*K0lmh=vn2wM$qjN`i8a?q5CCd_!cNS6s{7`kF+)=2rolN54W!pGkgeVXoRO$+4fwDd;CoYQZT~PtKG2$aC)^n*6hgq70%EM -zXIBf&6rG^QBox!{Q<~v%2`$%kWg$E%p-!Y+1m`5QO@Ajs&q-*H{*bZ=UY5`hjxC1Q -zB{YnDnDaXXbd&ywvKZ-iaF3A`!C?m#I^LCXl}Uj4j+>&>_;S_Ww` -z2ISjia6m$2vt{s@gviz_;Mf`gk#$$XsD#M!=*qRO%r*$Fb!E0e*IHL*8|+=@%4~;M -z*SRuR!)xnYnXBQR^{&hgILpwFfh^wvk4cE^*#VDBNMYzn36bSH;OPwlBClj1$mh## -z@DW`>l}Eb-^cX|uH@ow#h3{>4=UWS}Zuau6@AmTD)$Qdw)9vLu+wJ9hvV!t_1?4v? -zC|7TBwO$K_E$)2l;h8P2l=bl97FWu8czKH}Wj%Cm_3|Cr>g6kJ_41XsdikEN;H%x{ -zp|P@#>7TAv)zq}E;zg0jR|s>0zdFk -z`#QG~&Fz1O`!8v9N`IgGKlQXh`hpN5e)`O<#_!@g{gsp|9AwNfrWbRWjJby~VwR6G -z=BwO(-0#Y7)k*$&zpK?j-E9TsOPY)E%DnW9^GAhz@4TO!r^zQTBPRspodhh$8{Gof -z2r0N4jv;Od%)mm}43q%+>;Jl831|Crkk -zApX7l%d={gRR&*Qu8t1wV3+c~e8&kgw -zcQgKO*q|=Ob{DsYxi!@1@O-{a{U)~WSBd6BY6;tqA^vW7nn%B*zK9zBE8;&0Zy?Q1 -z_?7wq&KUF+;ZIre$GFYFUnw2x4)~g~SN$=(4*!8>jwnl%jIvX?R(Y3_RZ7Yo%45ps -zl&>q_QeIYGSAMBnP@2@m>Tr)6bNz_mtsuTdN?Pe6}ZESUuZ4qN%Mu{U2dVE?pXWy@G; -zOTND1@w{agr;K75#*Omu{=w@FtCTm3aG;PakD1mKmf195gU~mdGp5T#(VMpnn)ZZL -zBGbPgNAsm}2}Ctd^XIZ<*quim`itcQWeaXFEED!+tW=UqZH_ynnqDQ=G1i7GKNeTGG@zC3_aMGjsg0M -zVsh^y;b959ASSFgPG+54BWmZG7_U5zWMYB}S=SomQ22y1pJ7q9% -z*t8~bdRJFM?zF~dC=LYup^`B;VH65|vqo+P6_@h>PXvdv`SNc1eR*D}Q^|YK7-h*w -zTO7?=qx)yd(=+9&Lw%NoaZ4iR5R;LI%)a6%*`{QWHEnhCXw&}Us4=^L3`S=11@g(( -zedg#)!FZdE$QZL|&wWRZ97MZkkzYP7ipjD3IPBadIS&+O#`8rG{K#UC0uRCAeDRuf -zHWm7NX4VFJOv@lTeD|8Y^yn*%(W8glI!Rt09opT)j}o;5*k*G!`_ypH*f{i;aDq|u -zW?V~Y|KJheAL?fhUJtTAXCHpvXjRCX>=wU-6PQ>&m+y2 -z!T>UOMLB}Vo4YM@iZj9fqA;+tVE|(Sa%dBFo-jYzcM9LMdBobqMjF5zg!?)>0`xy% -zj2gIEYFaow!IF_v=%3=Zuan!rFAby;A6 -z1qKxGorMy%8C*jV#=r#Fxf^kL9vg);lo6K(izx}tAxxBc7{_`ijo1;ypeI?vI7)(+ -zU05BF1fn1FNW;th67LvpLzI`pF&dQ=C#uaq#?l3kiCh+Q(Wu4TOR(Pq6WGhaB=%QU -z(5*y_3Dc}2X`g0km1{x06UT7oDVW8#iF3^|#!FKIh#bR_0{$!U=rs0baD?O`=Hy^i -z?Z`^g_>XL8A)T22I6?*NjsAYLKYjP54M*ftD26Dq9%0isjfo;GUi^Gj$T7$9O$uM3 -zDzRQ(=*>I|kq}aZAx1y0_2IoHVQWIhDUsP?-Z>yfOE2R%wGi`~0%|J577|m~o5Y^b -z3T3T2giIyY`n15782ZToKC57k#$e7_9M7<@7OR>m&nu1Il-QgK8<*0TuiZ4L~7dY -zlnR9hGOT?;rq?Xn1Xj7J_83}+_Bi?f7+lN!emDRbNliPa3bti_)D?Ke<2+Mk-xLXc -z$$TDq<`_qL3RYC#k8`NDT~1Er9vOD_Dr>&;O6ItvgpP~txT@4^tIu}{jurFempNmU -z`B=|01Xov=TZJ-0`D03)7%8_uj5P0|$k=oU2I(Ub^z$(Gu7ka}Z`Wc>cc51D>Fulv -zEtgosri+iQxzyS{`q8duT*8Z+qAcK{n&90#&3neil{n`3%<@nkXPm*fB3o>X={T<> -z@<=7l%q;H+sGs7}g0wJs2hy$*r{Xl{MuYPVr0m`ppY|jf7EE!LFLQ -z72c1y7KIkKKP+?CxKl5H?omBHtgu{n^9U27`TG;!-)!R-#zVbJTb=jk$d)%PpBd+=$5WY90E+ -z-m{}pzJO=(>8)($pRkA7o;{drj=1&768C(%2t`0hhb5PrAFjSMg~uX+GTJf6`(>=s -zE+K(IX?})l%9VBqNQ*VPbCsPI@sTq7i2c=4jYf|7xmK*t%UWTQV{=kuoBASq%j8{` -zwWFcKw3&uimYtm0(ZcBq7X-I6JeDmWLfC*rfBxC^jAdjUI$t7$>BHbD?B>_|s}U7^K!mQd?0>D~S%adNo&6 -z9i{ds`%s7E2A`gcsyYf#P@F%Y#*;xkpeAdRX_TP)0=%YRlRw~VimS-2#$$m{asw)W -zv&VyKAg!v&Xfmw_e8FTZPOhlQRxLoQ#i^350aP$q8z<2V-xOQkQ+ugA1M -zjBOtt98{R@$I^6|3)J1>ukOHKYd`yqEyw%XE}#6jSmuoN^32!sm2kJby7k+i%;9S} -za}DwJRg{qKHI`oQgD17u=#Ma21^Gwr;|283}6V~H}4s8H!sF8wKC`*0_ -zkV7fgS6tP^pY&PIbUjW{T*TsOfD^jGdbl)|vgXo=`Sx;2M5SjBe~@#6H6O>~r!46@ -zA&7MST)2`pMW%M8xmR{Rl3+Ew_wTJNZC>N9z6O*i&(Cw|)WnO9V+ex+a53R^suRp}= -FzX7h9Y19A! - -diff --git a/installer/builder/mac.info b/installer/builder/mac.info -new file mode 100644 ---- /dev/null -+++ b/installer/builder/mac.info -@@ -0,0 +1,6 @@ -+compress = /usr/bin/zip -+source = /Users/Scott/Code/hl/amxmodx-central -+makeopts = -+output = /Users/Scott/Code/hl/amxmodx-bin -+devenv = /usr/bin/make -+release = amxmodx-1.8.2 -diff --git a/plugins/amxxpc b/plugins/amxxpc -index 58ac0e05fb44e4d53a5f48da59912dda2021e3ac..5f060f06c09d685b7bbbb49046e556191cfa3d1c -GIT binary patch -literal 150762 -zc$~Do3t&{$wJDRoyjdriKl%^);_u1dNf!KJe~Z(sZ-aj` -zqwV-xI@V(OaJq%Y#d<3w?l&ciyD-|0zvGa{U$i*}{%W9m4UCPyc%&zyE@l{f%-SRB -zi~pw1fAVL5(^b)S{JEeIf1&yrP;VLGzZkRrrrL$~-c&pPhT4UTeJgKVzU0Q6MY+?Y -zJ%3uM$?HL$d>4LM@JoW<9q{`;{1Q#Lx4`dm_>F?!?eI&3-vszgHtD(^em{WU6!_g> -z_PHqnuS_!qHd?NYD0jmz1AaHc?>hLU!!HGXmzwpS$hjK!pKPW!GqsPth;}&FR`dCLW_pF0PJ-W6@S6xf2mHps?`pH|I~E~} -z_}?{V8fOvwPk>)C{9w9BzVW}?;CJf?cs8K;_C5#C3TKMe34X8tse7csuwgm=*FKM9x<5B-zO -z`ZBY=Q4;k9P~R5O-)D}0*sR}e=Es})#nArMP0@Co_i->gr_6ehw^&x0d8bvhUlp1h -zlfI|S=f9fxF{sbXAEZw)@k2Spd3h1>i{NLeS)XU(^D7hHIx|1btbfsj--hEy!2cWM -zpNxRl3;DSb{5faB``GLs2ZG%)b+En1tj{p%y9w%_kEqX(hW5V$`)5ZH{7XR!e`ofO -zGyDI<%>UZN|3_xtWA#mv8H -z!XIN9{116FX;^-``CMzZpBqs}`Vn;e{ixf2V5z!mMb+I4ezb78x?ovO?Y!m77c93_ -zRsHDxC5x+;tMitrRaMw{eyy+s^J^C@Tef5wr1#Y>S-t?$?OO~n7rD`FJI8R+rwX|mbGU_o;wNx)( -zu;9m#nZIx`7Qz25zQtgPer#E`KygRch^W#JXzUe4w@Jo|3X@Daln;_pMwx@7{$g -zQf~HCRV`ftyjrlVN?lR~G~J6&4=!C$wQzCu5-;_bsisW67m!@A^1cO2)rCtIhta-o -z-s1Zf)S8Vv;ci%PClp{OlXt@hPKg|N=x{?3gy-c8tL{VjxM;(aTLIv`^Oi3d(yD6l -zg1V}jd5ckc!dNc>q(=rYZ`rbW4_-+AMG5&qRn>yUzWYb$HOQ|K2OE(l;B_*NhQ$l# -zn?-5&60eu5ke_zJY~-eRSB${8l&Y!~_y04TLl#&27T<@kF5Yl5HJm^1{soKGd9_2^ -zUNE~bv-dAtjLXdAKS8{6g`i=Or6Kh1yim-BK}AG;ix;e1y5K%_!Tdq6`Gt38=TzN% -zLnM -z0aI{jk}w5lG#OKHwo@?$r!);ya2PW%1t&8TQ!pO6n1XXzfGIfHg_wc^UyLajtrASZ -zQLn%hob%b3g0Y*6DNN{mOu^Bw!4#Z;T1;;jHZ=+y(p8X;f$3h2DbU=6DLBE+n1Z9d -z5mPXxEtrC%{}`s=Fh7YY7_4V71;_Unn1a*tOH3iCcpg)5u3x|u9Ox~Wg5&%$rr!<4n{PV7{30 -zI3qR1n9rm<&P+`O=94LpGgO0aNHCuAI8!x9P|!(voUxjvn72?KXRc-?=1&e_9%ry- -zHPKIboXMJIqM!0Oqctr=Kjm>|Yn~+fDUUN;^9!P%@;K8q&lCNW#~H8LLiAG}XTD|| -z(NB4lfSNXnv+C7 -zz -zyso~j2}ZN1j-EKJP5uujWQ>E)VZxpMgT9_UQCKfQC(-^nXJ)kB-=6E(DSN7}0{pw9!IfaDBDt8i#a{~<7c#Es<1QyM6 -z3ORyCZ~$7{9oNZv*>Q-0Y$j0T;Dv;e3;MNO7` -zQ3b0X0-~m@eh7$4_3vZ7s-0&$ug`Wc$$v~8&9hznE@$FiW=m=F_o@z_9n0@=B_3hX -zDQ&an;4rg@{yCkqhy!yviGPJ|m?tE-TI;i`4lN)v30S48-?Q-SRAsAd4d+oX05b=- -z@nSbGNKkfFj7~hj_C9s`9BT()PG(POyJuEsh`z}7@w~wOP1+~%g5-bL9?I-MfCC6< -z&5q8H8!zdi(23}r)tM39IDx~I-2;&B9u1s0gph!mS)D*y&&SYJPH964^2|t5Q#>=0 -zw_$hn`<@x8+t58wuky@D+lJdysto+=+=f0%g#4AP$-o(7PGAtplQZQYNP!)u+{J1E -zuUdC33Wf@Nu1fO!uUg5cC-1;9JbzGU@ch&rIEv?W)ywPBJYT7vl!GvnY5slGM!m`3 -zMh(>O`FpovaJ~b_S7Ujcn890@*m0^CF*h`t62L)W;5cE$ILN4Y-R1eiBBAG_uZ=u?ZbPLoKP -zCHvcyre|&9IptW20ouuta*XD-fXQy{xQzjLrHLc4`?WoC``OrCC@M_{8B9@gsYPkR -z%?1tdlU~6JAwP4lz^YDSZ|uT+`#ERRvF1uiX+jh73Ko&TX=iOpQ=%B(p*#MJIOiYg -zYtFsOvU=4`fM`?q5c$_SZ0wx&zK#0fCRap1(M_+CRGnF9{DB-BcW8Z4>NQ$l -zbc^E09W@X@IlsB&Dhqe*L|pv`m8Lm>H?jxHFNrMA!}44zkBTh65z9w_bNSc685kHD -z&PP!0S%q9dX9OYY`4a0AP}hNQQY-YifG=`$3GjNQ6w&`bp+=NiBT8GsrM8IDhr*?D -zMCtr+X;eh%v~X#3L}^;MG$x|-8Ym6k3WT@tv9N@2;RJKQOX9aTBp_0#*S!5Y~Vq3Xvh28KY=NFks>zv-*|RGHdf3=r~7eE|Z$)SoH_` -zl-8@KV=JX~nq<~DM>kKiLIdsZ^2KWrou+j#C^XX-_iLZY!`i|~{h{_stJl_?2RIbL -zW2v>d($-vL1wqjl_hA(@?Q72K8=?A?S$(QG@09j;C-GodBgOv^hyxfRQzsFd8~u_Fh4dg#VY&41wN;)&>a&vbG5pp`L97SDnY&R~GkTN=o8E=zR>DnEzl=a^nBsnL3|jO!xTovDL>kr4{$VQlPY!or|5t<`E_F9_MK>l%+nsFU*V`eh -zd-&B_hYVU#3(9O#&sH3u=h+ay;{YF*8E2s%6c2dC0+0msbo{Wa9B3tbccAi9n*I%G -zu1eT}=f&*EcP*f+s?mgMSgusBc@Ux^#s3cERzDbRS2nMqCy0(7W@CAllh1G^cCfNI -zaN@4da8BYG7i`bRqPJA03 -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 -ztii3Uld_1v*db{5<%J*Al(FMX^C~S)I -z;yXk9A83u6r?*Futs;xYjy!dmY~qxsP8*4b*jrd&TmUenmv-0Ex&AEHjaz@pi*L}H -zz?G6THl>#r-eyTLK;#PmKq2m;Nc&kWgfp<(f(Jfp++-2r7&GZ^G-E5{yF!fms_wU>O9A)2z*J%?^rodbUuK*f$QT}uaNM!KK(+v;HJ|AIGI0)$3r#22GI~Fzb5zqW(3>0 -z4^K{Nf^$w&e>^v;3C=i86Oc4UCU+arfnqH!v)o8`Px0hrxl^pf6!R?UUK{r=V1&9Y}%2rt-y1zU@ -zL<)-!i>DeK>0sSgf`w%2aplV6g7Y-((9K|qX-?n!Wb@8A^FyFzOKcP5HTL?Bl|yM?~l0Irai&ILS* -ziOPB>5E=h5!75}`@f;WN65Lv-2wDTgio(zqYjOOJG2+Ccm@SPBe(*72SSSk37@v0U -zi&=hbaQDZ^T8A&6ydrbCm6eEHc~DtwP6g0X$fnJvF&EDb{zUXp|48K>Y^uQK$Faec -zADft%+aNPTHH7CqSZf~hAd|9j6R4Oy6uSdgR50D7PT(2ZeF^J_ICE4y%*0Wbh>hf` -z*r4@eQ+rWIvD?NT6xBZj`ago|(AGu?^v+;QD(JAbZnj{;Tte@akIeI4aXuDD3n`IT -zy16ew*;O<;@h=RIOK4lbMVl#hWm6lvW~tYw9K#!+LELy_z4{y(&mrmHHOAkjmZLYQ -zfnXWRW4Z1t!3J&mh42$oQ;xxUrpp_-;$*buARelUt64blIb1%fXB-76mw=H^Ydo}i -zmHSGI?@dH#8y?0%M;8RUc-7MhE$nKd^hbWX-|&5c%NP2+Q?1pHwk!T>yrWYlOP}C5 -zZm`NAmE!V$>KlWn#A~J{;5!7+$EEF#qhll*Nqst4f=%(*PTjzwaonEG!|$KOLBDvS -zdA8eap3NqhXR=9jMhg*q7T&D9c2A7BR@vpXScHT*h97-qL^o#gEC+ueIq{^j>w(cv -zogVOX*5AytlG%Q622Uz4c2;Wxc0JCj=g8`JSO%Vl%YmXpfM_eUJkPUIdv?-g -z$DU`{UOrWp_V&Eh54h0i;;2t^-3fG3pG(KIfzSR7K_`$~+N=zF!WI_~(M1bT>@Wry9^8LG*6u0K&E1Ni=7~-uftg -zxzzI?P-b2~h`4WvvNw2_SX^>+@hkZ9B%YJ3?3yYL?&!eI)7Nk#+pE0TRjr+|>#nQy -zRI8pRt4VlsCL~mo58}0?l!L(NByjx^UiXkI#YgxYSvu15#!&tg0)OV}!hFa&VgfWi -zdzkoBFqA(9z@Hi6Ye}wX*4-WeJ~@F)xd+Y-=hKx2@o7HJTnWtF@;~9ywlsWCu&h7; -zY`{bR8e&)%ZLn#(3yD!GagJdKoYF?Rb#kbR*6&657teFt7x3?Uz&7?r<;By)LiuL( -zMm+qRZSpS;=C#`}fO{A4Ep*<#QkKrKBRy{pldlX^e!#yplYg;D`%Q<4e`!Pcmj?X1 -zGt56nG}}*dHX3*r!MAG#-%3J!OaEhtZ#n27rU^g|y8zP)!8aRT8qs!VMDXnqpr8U) -z${*@SNw7o>bDF59}4rc6A~X-H6B`~&+!I;&@l=94gntOM`ei`~IMxFn_N3UTk& -zWmV(M)?Z5J^o%iRNfbZce8a}xp^&IFIzyFPz?1I>~;3gl!iXcVKH -z$9S$RG--J(|U -z@AKV640_!*lxnC^{4SU=FQVXU1|?vs((Oci;RVDuS%(ro@l8Q|2au=Bwk``1pE*eU -z1U%XMaKA}>2@vl>;uX}YH$dm$eK7ns8ZGyN(XJUb+6!-p(MoVMhpkJZ(Xxh(w&H@( -zXa;scr{FO#Fkd&Z`0i_!D -zp0*67?bJRo+B5quwnTRB9nMLjEe1!s5(CQVGCL{l4L0I)6+RycE*o93>Ib8v -zlue(<&^?%~KXC*ZiZ%g=JjwZ+3S%jNNNlNP^E!UkCW8mu@N457G -z54}GMeD&3h*zrSwic_yQs4+XQw8loX0wGS)I%52|&yl1w{oZVjuZp0@6u0_8gz|H< -zxcLAKSz)jv+VRFixF6&kg(pziG0>FWw$Xxk`6CvQez2CtT{2)ISutRC8zqdEQ@?90 -z(g{#vwE)={9PGhc^d;w!IIZI{vu73NU0SW%DMx@ngo(!HI1r-V&dl)Z9!Zmw&DV%K -zc1gSN-rFnq)}J8%NaEXA-2R#E&~feK7zCts*tN6J#wtO=)_R=KfR(9n8xU^fC$j;=W1kfr;RyYaiW_xQAhkY4#?|e@;^8 -z;?<4ovEQB8sX=1r+RsgD?}1K}u+v{6JCTsCf+27hCu2MgaiIOor1l`R9t~ohj6MDs -zYTZilDWOEiE90O&BFqkjMwkfg?@auQe;*E_H2Ezd>gwx<4KqkdXqY`_%b7R;ld09) -z?Z%|`&!E*5XrX5fBo5%+P_yB62vX0Jw4e=uKGpuoM5$Xlen(K}h -zuw72C#r?ADZFmLsD)D|%Ds55B-d#**2&;DEh3Qm?hm*5Ie315Q@86M#S0YmZNUrSv -zRN4GAZm2bp1_M9!RZ^NPhQBOy+TvJNa!bFdGI^by&v5Y{Iunnw@;JUQmS;Ixd2HhA -z+NXFoaEY5OiC3DoSm}_fg#hX=xL3kMR}Q_0Z-R&6D4E2UJNU!SuFM4d231!keKiZl -zA{0v8_QcbmASr4qJxn`pSkar62!nhe(JI??E4py0llkRq&eH1K{0vmE&r^Qd{nK~<9A!6wt(li#?4m6Z6QQXI{KrX&e?UK<1wtOITiG-pz^35! -z$AsYDP&;pQ&p?mn1xf%z{blil7P-5_!1pc!D^Y<8Kf{T5LwAg&S8Q-@Hq~Iumj&aiiSfa;rWHQ|Rvh<< -zg^5i$Xzt;I5yx5NzsBz(v4!)4_5plpqiO(1`^>ftzgSj;Mgt6|uzl@+jTr^zZ}mf{ -z(I=gO5faY=wVx{fWBs(HmPXsUlY;$_rF-SU@AVl*SH3;@C$c@5i;jnDto}n;I>g=y -zrlP+gj|GY_6vs=~|AiA$Aki5nl*Q|DSF?6$xn28fj6Ty2RwEwb7W}x7f1i2}z6w%+ -zuYzP~XKZS+c1CVduf4ZlwDC~bC0rx&$bwdWPX)J?|vC^`5 -zX<34_ELmEXCN0YZ)r@U?@8U^^Uii8kTns#uQjv<_eKbGz;H-f`p|49=^AXO)nm?k8 -z#Oe})p8{_}?~9j+_nDQ}Y`IzD*$$Rv=h=3aC37pwa&&4Z96Jh*M%l^vFyGmj+lC=8 -zZqs4z3jj^;%CK&Hzw?6kwH#ftdn!N(Y~KmPCT#1=bwt_ZTQT@ -zb3Z=Ui|4p^;rRjaT!POF#PehL{6q2lCO#L5XXpRIbC!6{#pheZb2C0Cisu*b`6}`J -zE5KuvSmv+|Brx~gbZ~1*?6(%zqO=i5( -zng`ujuhR5Gv!mbaSdSg=R9Yp3dbe5mpjr7qWM!UNIbc@yQYDP3_?xY?r|!~c-)O~f -z;8!)I`(o*s1n8^>Ug&WN^v(^wu&oO9)d~dTTUVR*K!4ABihfF1E*C7VO#ygLJcoW9 -zi3@^f|64>mFg?FV)S5B -zYw^D4biD6*Gu`)eDXp`wGq7Xx71T9B8X2ThTxy5%+1AMReP4sZam&c<_kK$P -z%O{HR^b)sIyuYg7BV~EMG~cGdSCM8)(4{rkMhz#ab%Ox2u%|xL>iI&QXO>v0#0DkP -z%@P}x$WU^dSt3(O6qHR1%<6JcJ)qAV!0KDg>JqcM5M%9` -z=SlF-D@`lUqd7on^{a-EE&sz93_c_Umx~v7({M-SU_U*(*tx_*`Z7s>*w9N7tQZ0J -zEU<{zu^ecZV*{N#@XoQJ&yE7eD&ssY*JKn*=?l_t;EbGnMU1q0il~l7ID7}4EX7uL -z$;megh^e?KE(h9o(AZ&y;gOlYSMk>YPQf3Ew}{hl`%A-uvWSA0@c7d!-X~7OgLaRB -zBHDRL*|ZWAgLoOdT;7R2*xpy@+&OR>T;!P5Q*Kb2o&trk6We5Y -z{-87+wul$QeyshAFT_{FQ}88}%eiZ_9;YJ~1acm_ -z9DmFjRyudY(gh=y&L6RK&WNS=jaYiGC*}-M|KpBw(?O-F8o#!H -z^S+%Jg0F-Y3NK_WxOKr#2SNa143hVr9U_b0M56aue=YK{q5RV#A0NtZ5cvc%AFMM` -z3hnRuzlS0`FZ6z_XnkFHKPs3%y!|YEb3J8f`zOwa+fNwY{t;|14Qb!>1(1~`)*Cw? -zqVO?%3pe=oz_9-Ku6?k5V90ns9USk!hPU60?H>uXAABQN_Zpsd^)vE(cZQ{pKI5-j_{Ja~p2>>4omQFo-mv -zlIC9VGAZo4z`3u&7Y+iSR^e-dPV9Xh)S>*mVq%DwiyXX;>TZ9Tl=57TRN%G2-L>ZX -zxu~sN^!jd&9i^_&f$vl}@bM9V&6nHtnGTlYB4ATPE;3>r_5a4F2A3KFrBTlrmxYXwROdcB42q`+HW8b%Z7W89&6#VQH@nvDXFAmelC -z_DU-5B6V8DasRez0fOErs{JjQ*VOGxv9ORP96adK-(qn0AIK8%ZXjxX{0_=1PYQK_ -zqr8c1>xPF@Vg88^h-`XL43)GUuZ`{61zr02Ju>^tm;b3cX$N&z2ZDjTuR1W}OY-&i -z9Ss5DH{jRz(69ZU-%%A!$<6Tm8qruwqu+xx{^oarMq1ux#Y0%}@^1%w_WjoMHt^e5 -zF7fTFKhvx0x#ANqC?v=FLi+~z3Fz&A3$X*L`d*^@689^FUQ)$BG -zq1TF2MMS)^pH|nNTz7^XD1c_z-1(B&zlc9C@>?LUwb^ip*JjgFmRTp}K86n4Vvd=! -z1T9wx49NcO8jlsL#IZq^ -z8ur?9L9b@4glR08CfHH1#hm{a30il!L+}Kc1GXp7SVa3*f$xL;AKV|n*k5K&ao^yZ -z<{>twxx_h%D+8+4TT^36heJ2rLZ49lw -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 -z1*UB6#EOrj>^)Yx{bc=s>#er0}z4W$Uya|Pw= -zk}sl7dP>nBCxzqW&qlDTONQS3*$9TYVgPCx2`fs#-sQB^x_n%v=UtIYO -z7VCjWztLiK4O^@(Sgg(qmucjF&aid5-Zp%lPB+)7eNe`x50$a0C}YzjWb7_pUct(j -za`0O6XM-@&h9@rFRq5p`m)Bjeeiw|ievf|jHS715)1mbX0;}~!)qPLfMVl$=<)Y_t1S?`p40!%hjA+;WUP3ppLRtTUL^BOCueF^APh-RMr9uhJ&ippCfHOi1 -zT#EMP8)yP>XKS+oVbTLy+W^a7D%O9o1ooDE!MZ8oDWds_9h{%4BtAW2etvl2{Nyhs -z9k3L2!1G=C!aWbM$s7g0jI>h1Z3_re%1eYOj}f9A9k!R(UU6}8R+?fZ+6@bd^gzo$ -zT#|~PUQZ&)4!$$EztT9@BJR_nw}nKPI1Rpei0UbT=gpC-$9@sj<9leRo*65M8)fQ4 -zq7Qfe|7mq|%|E6sv|>Tkfx-)|+myB--t~o+q-Oo=%rOPwYxUSj{JD0*H&AER&EH6!IftpUuT^Cc`z<~@j5(gqiSr**9a=-Y -zMUB=P+!mj?&4T;uU3o5&_dL5uVnvc9LRG56>t8v5TdcpW9=CaNV&Qqm1ElQLs2%v1 -zv)N1;9d_s79_TaIf)_t_Fkg5L?enp`-eO) -zv_`u{9gF8|Qh6Xb07}%`@0qhoy@kzL#Y_97qwVj9!v5URR+a~0zdV|)6JdYuXql}u -z!~W6HEKlWLr#LtPZ9P1O5PJ?q4t+*U`zJPOzn*nRdmviRb&jFEu$gfXAY7(Bl%V(& -z?V$q2HwySMBXHY?`1eQxp>sUw56xnDcAUS>7b9rAiZ#EC;(K?Td4g1Mt=C!2)^52R -zr7h3YP#Bh4r2Btmu6-L?X3PF}Y -z&9g7obd=x+dSxfC@2~F4U5{7ks5X;%ceBzrZ_B{l=*{>i%6KXGLdV7ZpQ7E|_a=|q -z1igUm&syQ1^;U5D(tUx3XzmLb-VcHM)l7ZT3I?IEfR`SxHsoa~2h%H0tQy0PT<<-> -zi%xRa8Uo;WR+n#9UTg={q;#^5al27qHb37F4(jBca^Pib$T91;$e`Cd|vt{D?MTW+3^4RBiyw)y|k|} -zi5DUHk61k?)k*C0#CD=aege>i#UgD+QUn`XtW*8Re7m^sFa+Jtg<_F4C-9P^In5Bl -zzROD;pk{b1&vei^HT}(6nAEN{1+@4<3#`G(xeZ^&^y2+Ii|#wld@UaD;re@N_Gvmx -z?Q1%U@$YWbALib7f$(h>^?I6kgrl#N*iL)^beON3scU3j-@Qkk0Fk~KKYI^z-@70W -z>#WH0!$7j9{_v_TDEw=&rw|+V(^Ue$HSIVWE7}NStl2{X=xai!X%Tyi#JX4lhOj4S -z^pbV5R^Kf(jy7P*>bu#Lp6D+6lhfSFyl?VS7*}2^0q$?^krk9+qZt_q(=Zm8{fZTk -zNL-7;fC_0nf`pM8o~^UE&+ZOSf&1$EC^R>!SJZscq$}-0?eJ-zM5_3$?x8Hzw3} -z!iuY5aC1P%v&^>_&$%CJS@|Tl74y+{h|_ -z>FEL%)Jg33Dh>QRkK4i>+dyo9te*o}o5C#kWtau8QQOMrx#Jb?+ag%7We5vI+sly! -zFYwRju)?2P -zIq>Npi9vjZTCy9T*7>R$64f5}q2>v~D0sjE+XTto`cF{6XHt)xGp@@5Ww!w&Vd_55- -zCO`L)evEc19W%=V<@BP8Go?*jbSrA%zNTthZrOm;2K=0nt({dGPNW=5uk3D2=Drrv -zsi4ilO}P?Jexx=)KKX7i3(0}n2^hx6&jPp{Xy0&1|5XJHH@Ih$B({gUy!2PSL0u|a -zi><8mlzDlFKB-7wwM5I|8@*!#=Ftx`-4$Ns^nkA3d~Xz;AM(mmtg;WZHJEZ`>+J2( -ztn!rMJ?SYuS$|1BtN+kb*{3vp7e8TI-%ok(Nk#7>#n^{t(|baHoK7}M1ExJZp=^CM -zWd#&%qd%A0$2Xxn;AwA|&%FU&3e|B|{CY$6sCDQPn8%Lv9C@x-t+cLtX|QY^0@+Rw -z+YgHD -z0tHhdg9W&4S$}f0viVw!#J29-F#?nB0VZwxKVecVuxQ&qWYHxJ3%+F*eJREVuL>O0 -z4};m_KEMUcvYE^(?FS3?Vem@9qMcvEqF4XVSoG>YWYMUGdx=F~eQPW_ZL+ASKMTBD -z&=DqozKY;ajLDzM{v1~Mp{YgjY`Xq9Y0$BQ8nh=K?^~Yoc>8<~`ny-6bo8Lk1y7q5 -z_47)n=N)C!b7v#CL~#CtzOhiU -zL6p!R;x592cyLEIMH_~BZBy6ioY~v0^914H=)Xg?#e7FVNqf8}l+E}7Hl35oD%#7s -zx$gw|>m@Hm=cm`7thal*#e1ab^>5Z+!hL(IrHpkw>Gb!G+tj#p?i2?yT3>Bw -zs1JIs4(U&0bmJH(#1+spiuJ-H&U6Zd3#R~m=TP)}uJLqJS#(6%*r7xl5D*EpH{FdE -z?$LPS69#sIPkiktYN*|f^@AE-Sz8i<5t631qfKv^;+Dg277u$QlDcih_ -zm`2?2zRAFSd>7g&TMMC`_c%C{9^Y|b$zG)iLuXIv@p=aYZQz7gORn`jw*W^brh7jG -zj`-dLj;srDBu>2lQGa}N@6lgOmtzP0+wSVvFy3pvzJPu!zGSLstkyQ>H{8d -z88*$pFb}t04;Rl2bbVnM+wprJN^8{Z??>5r=@E!-)>?d*?@WU1o!S{|!x*JiPN7ou -zGyW)rlO1FA+&gVj2cs<88*wi;>|5}9Cx4vQL|_koKMW#IcV-T*r=xG?8LF3gFz -zFy{9 -z2iz?p|jQO@u74~GS5qCfJpY+1pAe(QQ03w*@3rY -zH?I%z7z}5nvh}J=tc&1nLnKyH5QB!HSWWp_-U27}Tx*0!7=^&YplwC{g0XaWaW6(B -zgrJ`N72ov25bLh^$4u)pnb!Az$F#nSGp#Rz -zX^)~tUWdFwH9O+nX^v)!0w%3-m8GF(bz_{>=b#P#%2DEK=K*xE)Puklr*!x -zK2GGXqkKFyA2?0BxSaODwD!^MK^uSKm&B#f?Vs2Hl4pP2B|W3ex1P(Q*a1CH2J^H2 -z35rkf1e0!@Zw@W#S)e44vh_rGm7SNnHmna#W4=q20MpjL6fRS?dR_d9VR~@An5!?@ -z6M|``{t1J|B}{`ZlFC5$09}6p(u4SSpgsE)|NnVuQdv||L8%%XgCMcouz+5`Wa_Uc@YSh=GrVPF|1kox& -zRQ{I`{fj_!h#G%(Bvj>*P(@e0n6F2F22&TM<$*PQqzUz{h;o_!EaE(~Jn%Tq{_c48 -z1v{cYi_Xe+{Mu!dDu?&5`|o`4tL;~z&}6HTMd%giIR#`-BFd|~)^CK)lBH`siXXX8 -z>wgh`dOrO0r1_-PyDaJ`65{jGgI7mdB6V}NolIV4!hu7hG -zmeQJGg%G3UR_Sb=@fb0t$Z1h-;HSqbpv -zS0dEI$sm4l1>)V-^>|7Q-Yad0JhmoUCR-~|><**&BM1Zt%V*Zg^0yW<@uCxhnD$&N -z_Gf6Arl)b32!v0Vaf|m9Zeu=q{CJcd--K#FHM=eIlPLRerk1h3Z|pn0JrvE5)zous -zAsojY`nY=3PKxQ?32jvLuc`0H)4;k*A*xbZIi9YwqEkKNDgNqj55y>~EqJ_+?p4t# -z2$z(ttGM-oeGQ%H$E>2N<%E2`&YqIe7TITZUdGkdiyD2WqlER -zEd`RkF=I>nBLdbD*m~Ka1^swlVq*4AD2VS%f1K_gtbGzc1%MK|-6~%g%2(3jdeZXk -zN#+pVp+K&+$Rh;wgwh&BiIIIBj4kZkYu8)Ib8SJZ*|jFS#yTudz8|;hOUl) -zQIEmr@RgBRx-z1PdkmU+WrU8%FMRg^>=EZ7+g{2}B2zV*uc>xE)3reh%~y^~l)!vx -zFNMpLt$X;R!z{ZNvg}mRbLpXvsz?1UWYW1X>4wi~_#86>qphZD51kFq+)`m^a+OWx48#Xy>LnddI$s3rvl!GZo%04=~@sN2T^`?QC?zDeY`y<5>136?H*TW5cQT&#dC(oQ;>UFC*HE!iLX1XOzd= -zfWGGJxUelVr6lDb-FH5s9hXLR9O#h_-s#`hc=Es}tb0~OJB=o)&))F8e>6KiF0p^o -zaOs6DtGhH)jJ1~sDIYe5)0h3vNx%rudQwCCGkq})2_qn20tkr;b?g&3gkHX-b@P8l -zZnvmL-7KajCZwrcWk)~)QRyT{99*bXA|Gn -z&ML|#yksEa0i`usYM0(nTJt0`wVJ8TOl33uf9$<|d=%C7Fut=Hk_jx#BCDdJM2!{{ -zH9^`Eh?+z;iAW$I3o4@G3)R*agqZ}Wfeo`O8OPNqP^slF -zDp;dN3^?mXTp%W!7_!ef=g#a~!t?Ftd48Yo=lOj;&p+ABeLeTybI;4Y=bkgf_%+L? -z8NY(@n{NCLHGYQ~zc%A{xbZu}_!aS2X|yZ#A%y9KlKMWqmbB)<3-w(K`ehtNY5H{-J6b2gTca0I#rlYh^yW -zHYnn&9NAuq#vy!ct#E=}grFrt_d#!$bXiw@igfXN8PIE0(?lzg+PZ*ny-g{YDGh;4 -zSy%t5^p6#vIsx4C}t2-)i -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 -z#ybltrx)-PFZXIX9(QOz=Lzh)gvFl( -z;zjW7XJ%KP-3~pX -zSFB75DR0-D89C0;qUX1$vqL(1Q!(~T8M -zaPcvEw0t{Z1w#Pbf=$}oI){3=E+XJqhGFoQk2qND+{rLe@^B5vpyX3D_ihF+R6)oD)4W$qWelTrR-2{{@AhcKUK7b`Fk -zZKztw?FKnu_74a`b_;G8nwEv=z69@R(3ZFrFDL5ZPgfm>_6V6>1$IEm#$o&h3b@<=8R -z8IZ4_8MAq7m)`+c9mNXr51ml3_>3_-zao06m1Hp1HHJ(~W-wk$EXx6ES)?>W^{dW9 -zfeXxPZy^&Y$pG~otGUJydoHOZSt+?@BkY^NVVIl`n7f5TbZ7YyB`k@N8N{3Go+WMD-C%D!@g;FOU!PD-WY&Fr)_q&`of^SDKGo*^3rqjS7Bn`u&A0xbF#^v?YA@-t34E -z7~GRgFoxMAb0*}@pd?)BghKD3h11R~qWf)HnqiG-i-wN%DG$}NYrX?h5gS9^TKQ%u -zN0;_(6qj%c9*=)l|IS47O^@4t61i -z&0ajP*(pY|Q=q*5uN){!6?R^O1Gfw^icLm^bgb|SR8V@Yl87mfAAyv8Ftx$2;gjTN -zeF3By2cH5(T2vbW;2CsqYuho*fXAmSFk0OS=I -ziD(e^FT({4 -zc5tsLpSc8Yi~LFO9pgKyPeAvmARN%IVztpFD-T;{M1t~Ajc>VNW|r{kashJ8^rZJ1 -z@$LP)pW3teE$0qaGim?1)Ovj`9*EZ+`JRkYj!9#bDOZ)B51Y_axp5CnN>ii_#AX=9 -z*T7E~X4mdnNXTNm=fNs!z4Rl^s)TtdbLl0Det{CUmY=81;k_-@P$|Ja5$gk+(>*Zi -zg>;3F`dLE!L1zCXXvH?MW~AC=5H@%3V^ywh$q5X(dqP%jdii{9mMyzW-0kf4Icj`T -zX|uY|myfEWS|`@b;i{Uk6jUh#F+K$AX6^o5X%GN4fYjuxvuqd)4%)_{R5`oNX3JjB -z?h1Ys2M@>w$L6Vx@=%b2#NGBh46@hzkn|&^w@eyxcXlnTMMy8i9av~1BgsOWyZ0XX -zm@#a~9G{SxU3>RJC;$WBW4woA_H;O6khDrV#TrX+if6ApE%#RWi3s#o(aBxVq7-JO -zDo4*K^%rIDRYPXPch`D(KgbljSGT1 -zJ$t2BlTt4XzLFimDGHNtl#H*9r2EpM;5_3n=SrYU$Ke)Cn|lR!k9?Ic-NdcfazGM*3|{ZDknKe#`l!Cernx3^$>U^2S8+Gt^1d%ph*z9$LmI -zy_k>Ijkp}kZJ_VzpEe`i*m(-Yn)7`{Y~;5|Lt&<}Ye^3gYi4o2A}eO}+#`DG5Tlw1 -zM;B(dB*AZFWceH|;_f=%-0Ef;w2;SY%U={sotIJZvQ{_-=1${*KMK?b)XUGkp#14* -zy}iLkmR9x~tx%}bQ{ZBD$Wqsfl)Bz0N(RjXxBlhFDQJzho -z{1KghhY&^W?%o+pl!pB&dd8qO*t<*~?q1FKgvX1X>&epZDk&2?`W%<0m=D&YzXxR`wP=;M15{`b7)*nI9PAos=ha9t!muj( -z#4zCLtGH(2Xxo8>A`Rv^#gm7BKEr=bl5B%#Phq{U8$_K6<|nrE4WtAXpukA$o!H*+ -zAMo7Pid-bD*OI8G!+*a@CAp@^=AL|uR0hvxl%t`Ph;*M#U+ -z22oZNqMsu~*To9=Fbwec_(Vw>-f^3?&068JSX5@zxij`$?GCS&bg*lnEM8nty@ -zz}hSN&w?+-HeJ|H_kZ6azKnGDE|rG5d*=b3_ueYs1ned3bA>3D2R-!>la>>@d<{pN -ziZ<$Dx*q{@@Nd{P!NY17vEAwAAL4zvN14{Zgeu=`PMr^AE}zQ<0{H?6zeokewI~L| -ztWv}lV#vgTza4)N8gA)g07#>t1hIu8WDBBaffdEF;0%M?hxO4Y&W=SLh_OWw5yN^) -z7cE6#9_|~ns41M@aO(G -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 -z%>AS_k}GM2EB+kp2f)LLB|@0&YhlW%$` -zcoB@HmNz`;>NQuU -zD-9?|&InX~fn7)n_Q8b)mB)G%W(WzwSiU@(us+`!Zb -zIF_LqN|7+kqsLlLh`9w&Mx;#e6EED)v^K!*(zvv -zwQ+dd&N8WG;dT;%nD+^U$UQr8&;=q!u;&WOPf=H1f+5ypGYe}yo2CAUQg^XTb#gvpD8?(+Wy -zbVI1c8)7XEp%%Zu7B3pmqKSnEPbXm^hB=I3p}@zmFmUFydH)<+@R77uPox=Z_0Yo) -zJOFF;;A0uM;Ez1KXc?>(qlR`|uaSY5dJ_G5OzDBTqDVaJv8ru@s}QSvj=B?gIO -z`)js<(DOryDO-m!X=t9gOmE=5$AMFWKzt!V{PB>);ocs<$D)J2F!1H6gt=mKePD=5 -zr5|1@!Eoh8kHCfyq=)3kV6K0WAw3?Q>uaNo3zZRes=+Au5+1{q{x@qSC(!9N*u!WL(V0L>Z-3_pUn5FS5sr=lc}v>|5It8cQ?K1Mz0iIaoO -zZaPiSTSEroLn9Cln38luonp)MHjvoBIBdw&AX%?*N+e#s4bUS&Jb5Vuzi44BKbk;s -z<+K>ZeK;*%X-s6CcZSSfwduH#N2(udbATtM&?X*{9^J(3EWRE$@x1RMbOz33sp{h#w^pZ&lRa-++*@!cfdjgVO3{3$gSDy0xmkQfj)H}=`$Mz;|-7cvFgRx!9M33 -zs<$+P2ac$+8U@Q&0#btH|FA*#+FAG7Pw*+nib$0888V`vb0?ycw~NNM -z%Av`xVCkDqpuUA5aAgxT1`E@2P=R3$oEM>R%K9&DsK`-S`AZ{@Em5&Ue-?!Mz{zjX -z$ih^Lrova?^bZ4B;2%05LKxF40SF+-9ca7@@JN#iy#! -z7%rmj!spV#@n|(z+#GRMYtHH%A|~Qfi%G9s&cNrIR4$b_9lm+Y!#A68__l!_gL$}m+=y|fZ`Tct#Gk&|kn8;L -zP11_&#V&URpvz~wqgf(lEyJuoVAgA~Ssq1MC{yceF)Q*-BuRHVV?7&L=5;Mx>h)=&moW%apqz}+8PI+o5Fqlj6k!23|S7z4bnwL>h~*VZ1zA -z3==s4`MWhxO-uVgR4N1R6F@kDATL6KjPL)5Aio~?Q4B-T@Kp~Vhvu5TP3+?-tAC>JN<$8V(1 -zdkB*Q^S(*Mn)?udp}KJl++|6=1~8CwJ66vV0(%278Kgs%Lnt{qJJjj+z~8@#+c3&x -zi|Ae6fxBd)=o!Jq32phu*;ZRy4gYAKZ8pDg#ZuD2N~p!4^8)2#wr|9v1Kr(;)Aq(O -zWMwB4=HSmK6K1INWa20q?Kx!+A -zU1LBCajpL}p|>Z(C7;)QOOGslShUJ!%>$OrkfaDSanLpb+fJL;#PRi(-C*u>T%SX+ -zi;0-nkD71!BoaCoFM4Dd0RA8WUUDoE#Wu9ZtwBJIHf3na9Y~c=eubF)g^>uwS{6_1^v^2*H0d -zu_~_G=U7dp?FhwoQ8DxDZ}@d&puI)BJ-zY5? -z=HW+3x(DAr%op(3z&!RSyAb|W!#IQS)!uB2L_k^(4Pb?BmWc5%fbqe^yJTp72_O8+ -z0DCR-#iL)d>S+Y?@m+Y|m7;_%D<7tLlyL@qR8J*6iUKdNy0~a9ZZAynzW5@kROCG@lFE+XvB+x%cgczq(=xd@9x_h|I3sl7 -zBVTQly*#e$`K;_!ST^3@N8;SEdfP3rdRrKux)SRJTjJrQ{HKmVz9GP#vllg&{=@;Z -zW3A0tYABVu2upq3Z?H>AVwa_a{^O+KIe-m|Vq-!%W@XY8rcjF*Z6)qRBj7<>sVmul -z;uoOfbA#7FOKqQ{`FVdV;Q%BAe@({5K|gV;haX+^Gddt%v=px^R^U~|(7<7nnce^R -zqf6*EV>xCBf!+N{@&r%YN45CDr3xkj1`!mzPFB_)E4NWaK|K?mmE#Z^gBK?p^x@Ek6oA&8(lhry)6pqZLRn=g=wrn^jM&x*I;xdWr}YdTwFt -zbCFmx!wOR5IH}CtbCrB+@Nv_g8tqHcv;u)pxX^(xM{yF(>;8;yQjnS$@*-;)y>iAe -z<_u|U4xSm-no>KGrb1fz4=u4<=np8{&Mt%o>FcJxh9Qg``Hv -z-43~d$)*?y2`_&_W`cp0aSQz%qy^WTUzPAx9l%Eh2qnsRqW3m*5rdB};`i6Q+w`Z_ -z>Ddiqs)tmg8F -zH3dTMwW8-msETjvp2Ocv(X*B!8mzbboydDEqNk8EoU1@3tz?rXZ&DxJs5Wy=TFH9V -zxkYnsQeCg8uC3~+x}#POM3wh_yj7{c#K(K_)s%8Hq_l;`H>f3V_-16DKmL$!TITu6 -zmzd~{_?Zj(}bF|PXg2K1ZRV-Z*>_saBJq+j}!Y4`-UV)MKBDn@OLTK+jbO6@S_U}Q7J -zF@px^txR^ry_~yK^!kxD4K;11zxdc3s&~ABrgF8K%H9^6{wk{dR$Q6vmcT?zR<0b- -zHQlWR*MJJ*w~$kvZxZ-3`h#`~XfL_>dBpP7+bk@kj19&{F78CnTeQTIfQCP-5g$rI -zWT~yUvUdW`HqrAME3?q>ce3*P{>ap{WjAWBHWmwx*WZER8o6WOUsZ0a)?^3NN!MHs -z=1K>$6JM`R%G5*OW3>>B;b65lB6ouP>2!E&={{CYH_#>ccWi_G@3)@8GxTj#3^WF3 -zG{Zs}FOi!YXO#CHCwfujxLfobTg_~pX!gN=Vtx4sQ&Xt{qy4M^VM>yMn32D+n{o? -zKLd(awv4LJf$INdyfP8nh{h|sYyW?1ys|%$v1?qsvRk4FuhDu@ys|&~DE`UcEdOD= -zvfPvXXN^}j&hSS)XuPr@KJ}$|Whc=~R}LV{ -zxtsmm!+sXBpS#%4{qSRJtbBm|Jji|)v!9=_pNH7bB39vE{8`voNh`mH%}1ub;TiJ( -z{a0jtAx5!FAP%}kyg~`M7f`tS9;beC)pO=C@gBrRT8p=5g=%JPzQMXnj -zhgT?`(N?^X)n?BScjrIAHRm*n${UvGJ7RjzBo>J^2i4{)P?m$GV6yuSZW0nufV-iV -z{zcby?w;$)S81Mg)dq%XavPc%XQ3g3+@?KMZDD57F5z8_m`w*125HU>0gWvY)HktA -z9KPpNw3c0rJ`i0;3|OZFtOXBnO#thfyOHA)#z9`? -z4^m7}C@0puwSzK_fHZgg85Z9v8a8VV#hAm!ob9apz;$N5v?A?k23(zwPgU1Y?#KvL -z5Z_5t{8sIGmS2zgtoBLr?;vQ9%@0z&g**`8qkg@Id=U`T`lmhADvSjnseFSq8aI~T -zM5~d#sY?JU+>cyiMm--`MX$uNyYOk}3q8^CK;=3VOhNJ^J(A^8y?juNtnb$A=R7$R6{#BQ;%( -zf@+|Zro97zI2AS*4_MS1>?82O8KVW73Zt2QVXC3mhuL`E+-x-2p;l5Y^$cZ@%QbBJ -zU3`74R#LIBuHiF7EY0}?_na|jK&H+^yYYkt8)cJ=-7KJPVDh;Gf$O5>odkqV{tOZ@ -zPG{XG1AQ(lS6Pn`>hld41VFT{2$%LW)poCENMQ`0{4BBwq-q&##M<+3un||X;`PS3 -zpYJoC*6m=v=0kQi80NPhR@}#LK*#$yumVmAkA>cyp|Z~cw^KhyfZ^2NtN()DvInO1 -znM1v^I}RI5x)~0aByTcTsQZYCk^+V^?bu3$AoC*Scqp*%2lIZy(1*&_B2{y}juKL? -z>TKG9L`ZctpzpZsTGME$sH2}k2$s(9=iN*4S02U(wxI030v}S>&Lz@X(uCyCH_b{O -z=K|xHCx-oo9_0d+r$LkVYXx^HjXc|onsYxs2WwQj6@R)aH=|SR^k9F)y(;}dpCb+5 -zhkA0TazkZ3jzqr=tu^rr2d!_wFS*&hO5pItIYrOKOgu`|$92&=u9AkvO1x5t7}VH( -z(@N2EL5it)v-3!xC7xPoV(tufe3?5(^jwR-rO-eA-X?l~hmDss6g5_&;>=ME`6I2Q -z4Ly#oW?ouxgsG}66Q+V|L=pLvQqSvuV}bg_nx~M?<$~7E^U?FC>mr4U%7tBu0>p{Dg1`ZWH^y_$PS -z^zK4h0DBGiK}myJ`998L!H~eK_&^68C_Re~Q^P!4bLL<1a-HFPadBlGkp{Vej)b(? -zV^lg<-a+QYPtn^mxk+u-Ruw~;@!<~yN=H)Q%bzg58N)1Rz)#_5U;a4!6@2-b_-ps& -zJMcHlmv6`4$-ey2_&d&*KN)}XvTOZ?Jb5QA9K(KW?8m`=Cb6Gf_A`O~Od~3@8<(l^ -zDMD0pezI!=f2NnN$c1cZULuEpoHnZRp}NbyC0dVx3-_&t%vlhSdhn& -z*)YOHKUljS0cvZNj?=+Z@LXEoT&r{m5V&d2+47a1QPO4F25d;1wy!UjtD2UxK>j?M -z62?-&Bh2WJuFcUpV6j?syXJJm&z*?6_$IVUE#iY~qV&}m8eRP`y| -z*|i`}Za}X`st@}U6?6;FSjF4>X#<^KRMian;e?djb>-ujf2Y!aFu~B>3pjfSpS<@9 -zqUS>^A}#DV^nntj*#)_2_DcX8!MfG9~49)X4 -zekcK}x}ljK12$0}c|G>{s2~GQ+kk26dP>uLSXh0ADwEF#))&&U;ix40VttAqknp#i -zHRfzb@%aKM0>Z{Q5i}yiLY(;QzYvbU5ak(L@I(^_y}U+OMLpNTx%s4$ys7zxW(aV?a!bDZ$Sh-X(xzv}5qk -zP~gOw_{nQNV@{sCcdR)9#>|DJ%f+?7BMeKG9(DI#VEP~NzC=DSMfDHx3o-|^x)D8E -zkkpM|PoFWD0l%J%%9k&kh=+IXnL**bf#4;lSqY$C5d}3c{Y>0C4nGrHI^Pjveuadp -z-;fC;E3&~{f@3IN6>e3+BgN#5$CjsEzXV^1`+bGgRIz&S -ziYut1R?^NjVeOUF6;1!+@b9H>zfWlKz5&UCKJ)9>-Tjz=uR_MNLK~=%D-`%iLLo@F -zBAOunEu>OuRSpG4KyrFg-QFL}qDad_fp5^OR~uEf+WXy}^M -z%laRPrctW6zLuP(QPNbF^gk%+vG}ClQPP6=q~B6faeUGyO8Rkp^BXAXGK8(m-Fvxo -zk-K+2I{wK(ecRg$N@zDtx8(=6Zn}P62isOU2g!k6MqS;#R_Ow9?N<2g-zR$ODVcE3 -zkN>_y|GwWFbpY{!DL<=+=MfjXO~39*BDuBUu`ck|UM(=OHh(XlqftP{N!vf`r3Qkesjo0xG#M2$;`oOk+ -z<9&~DezSwE&vPqreIDC{>(fC38*gYh8}LF=^^GBzK*#|7;|`c=HLRA;@V%Xd$*1%K -zr3OnCY*!h;i&bJhHzNN79Erp$LDeQbpVdq;4 -zJKs{+`If@Yw-k21rLglYh0eE(k;{*3UIP4-;a}hHY~tyMu7QmCD6*q}8zO=hG -z4ISnZ`V`A-HfEnPH=o^p-Sk;Mjq^&HV;q@9_65+*W3@i&v*hzr77qr`p$hE!H7jt2 -zZNEY75ko|KDoioP_a06P-UrOs+J}!n=5Fotwn$?@#u%M*P;!VhMHFk!h{mR`gpLY} -zl>T$%4?&#IuGLoBy%9+;gO6ygR&)6a?D8Zi0@%N_7?Q__wCVR!F^-(0n5By45ypfR -z*aHtEMil}1AKafC2x<2(r}$qlF(Hka?&!mj&i-n{wm&4evrrijNc$?uJOs2~DTt70L^V_8qtB50vBZZ~nEpRaEZ;BxPRO -z3f^&8XD-F}I06fpqfxHvD#DRZ)Hd8sYk>82bP -z2@jE&x&(U-fMyLUvi?n(T5!>yf+J(qenejUGKgiN;%^2DSM-;F{eCb1>S#KA7a# -z#5*X^gAmz(kieR4QTm5STj-QV%4ZdfRub#5l@fNC0TBpU)ke{S6ayBHxj9T2MH8S> -zATwh6Ypd)CTbRKUX?u7wPQGf;^X~`=vGUsuXwW0wVd5lGR>a9!J%+2a48)Twv-ZEO6g*K>0#21vB-CQ$qE}QPp#?sz5n4_C&@d;_@GP) -zuivl?2Q+2_4HyT5C;tK)@CSs6tTPD@XyZrqp -z_(8A6yQkv`gLlq -zSOEpyE3n5P|9c-B(eSe`&mY47=~hhk7xw?_`)lU^@)%4Q8r?Zuu>yemC^;1ubj(~Z9aa7>g-(gCg{sPeiscFw77b08pp%LQkzzG -zm)Jo}7Mt}zVYS=mcneAd@JWMdJ{@O&#NhYk3)(F_Et0M_9n{svnQBSr@^OjrO1e%oW%!wc2_!TtTL -zmiYVo&IA9w_xF9t_xI5Rc7M;}L&}2qPN7{rRi~%GZ0U3+R$}wHI+Z#>^-~@YnqDLO -zd(?v=&4=L*qB&3$Gmo%?KDz76adyIXYKaDPjK$j+qd)N|&S2?tfPBl--OJNgVvvn7 -z#?e1&MCAwj>F~zY=9`wrQ9KINrjO7gSb>us04ZEwiRTNhHnm@0@&jtn^Er3#9QlG^ -zF3qpIcZU2Yv1Xn%uMm>eF6jz)Z>b#c6?1sE0JGr8#L&yD^~>q7Yn~O0$)7@|>FYT! -z`1?ftgYfI^N67!_vxHwaMz2()%Mrg)q)|$kXZUrIKD(LltDDZb5qIw-X%haS%a&kA -zc5P6vPLzk0jx4l#D>kupQ>RFtrvaE(SXtOCgLbLhdTyccNN%qX@aku -zAK#cGw@R0R#5T2`T^6FBL;wf9kO1-lG=@DXyOxq8IGb{t4`?qCvsrXY9MX3iw~9FF -zY8_H;k?<4kEur0=5t4aQ%18Qaf5+AgV_08l#Ovx5y>$Pc2(Wh+S-&X_SuBi=VQ*{9 -zpKIX!efk3(%%UG_(et?_Hh(#6{$>dvDP4fmW`}KO2Xdf3xkkuS3)p&U=c5}#jJ}gc -zzScJVSMxROOu~HK^+VEpp^1g04l-9S{6O=fo%yflWhTx`B4FO1G5OGls+;isXP){o -zM(mxUI-C7YG;XJuh3Om`rWmtf8pTc0oXrvEksQ1DR0}dYJ3^SiFGi>#uF1E=oDVWe -zA#?g;zM1^^x}1Z+Fhx%dvF>*L3~knCu_mlKfm9yG^JEkY(dM#QD+cm+ML5l3S$sn{ -z&4{8{(k#A{Z>(RAvsD`5zQxYR>}6o*!@T)s3e0El!d}wl=Akd^r5TZ6w|EY`RV18`|!bVHDm-VB3SjCwttwRb^0*TGY-9cJIUH~l9%rCCS~g1f5FV~bd^<0X(emxSZCQ^Z{%(IA -zS4m3uDOpRf`|ZH^y)7y`VsmX2J-I^+7i?$bz!Rp#UN9iu||+C0XYjLqmm=q -zwC4mS9#xZgwB1{~9F*20!Iz9inpY8mE0c~29fbl!lYh^YqPsnjTqrQy?j!Tbd^vi`HY3T^xY%ZsF -z={~=6J(GLa$DM<^k6NL3&#hc^iOI|D5p-A3XqbS*Ea)Sc0X{4==iKaVk%Kg#&Du=+ -z6_LnT#Fe_XVU=G-0QB@a!b5eYJ;%9ON@t1i1;ue+pTet;dnxK>HFk+nmiCM96htX& -zvtEf;>LvTN6(D0aAw|ijIdArX=!t^7aYX1*j*F^%NOie`!_@AaiUv^`O_oy)Xq4e{ -z`zDD8PiWJ&f;zDtc!VPpqzbg*fF4$NkzsS426_^o2{c-Nw2MRyoUm=0s{^BeJ|nKd -zn5%`V+z|Xdn<(!+R<=w4J1lC+Gx`QP+g+bHtC(GC(?20AvTE3iY?7wi=@Au7mJhIF -zrVWVluh2taLm%D=06gRn1TdRU+JhHq97TLq4dHO_dLPM0o9O95sX+$qI23(&;8C6K -zpr}@$ -zz2@?ukZaieUDye1FitLRHh~`A`JA&D@3O-|vSi}vr^h{O$g|=;D -zKH1-APhDm6t-}u>`GpP)1dNeQ?*x%EByZCd=om^!?Y?;qt;_*A3Ey1p-IM%Ym+Z5hf_}~-oQjic0BK2-Bfr+hvCn7FG1_(;=kIu2!i+xX;jDi6 -zUaVRJRn;OM&HvNrFrf%L_7}0+GP;j(&$44I0IkSA9O=Jz?_#yc4)dnq{Ha9_^*#J2 -zVFi5KXtcn>A8G)elUNdypTJ4kZ;lt}3a#+8OdHybu*mV#qVewWDbwCW`{CR4(FA^X -zC0f@xKoLjxFZ!SM^he?=|@c7Bt|jRR3?x2gS?j!{hRWVg1bAIHXoL -zbblTo#b|SOo~iGTm_cec;&xsbHiHokyiY-Wxx%KE^S&Z}d`KrhXfR_j!cs;y5}hc^ -z8&su%tR?Jt%ru<`k_7bVWGK1XO<1VJ&NL(>Nm%pg@6N7GgZ_^5ffkjSG_VvmSyaMc -z6E}FX=)DTL!h5t+Bl4&KhHt_1o7E0v)#%HA>QCW&=?RJ_^5gFrk=idk3XB(}V)h7j -zKQfJB9O*n5t=Xy-3BZTMcZyID=qj@FAPlg;%VJH4o=g7x1c?QSgL?Y}4GNnmfECQXDLI4Dj*dJiTDU~5dSg!`E?9*^W04Sgt7Oa&n($1f1FB=vdMf%!Qd-+gb -zv4ebZ%clUNpffcGioMFl<-v3H7y^92}$*}khF(r@_v+1%;lSie%#PAy$=*k -zy3TB?M80|?QH3%*;>F&g(Rm}Z`=>g(^sMTq(-PgVSPjuvE1O$q8}fK(JIoP#lU)|o -zFG%l{f#cfstM0;;PhSNqUtt@orE04L@kQ_I2$OIM@Cnle?p>=18@zXMiT0;{=SKE} -z4PpcTlf5^AhwA(P$L}y0SretGrbsAzNt>m`5=EgTVlWuS%w)#aB1L6MB_(ZWMTcL|q_n-W&Uw+=;By<)wf-z3dPd*vl132yPbqGbwt|1$Om1dS?SJz-QSU7-+{ -zBruOe39%i5D`wS%RHTzMUp*mq6ZE{~*hp;P8wo87el`jd=PwJ2EUG;S*j4X87ewQTzEG^F==*b5|(6?FtZrl{+c+mSYb8# -z2I8!Qj^uIGP<&Wd!{Wb~8--SzgHe@lMNf-fnVBOPnksk@e}r`6%p8T-&w?(PlZ405 -zE+th|ze*;f@5o}L^NnWgw%@ku-i1&@=Tmf)K6`bdK7u2#W@ -z^{)9)S)^}COUMb8Xwg0U2%H;b1+5}H!@;_`#`Q?DgBZoACK)C-!3tZjr59XV -zpbtzaCiN#(C6lElN^&KWW*$M?G`QyD4?)9(VNCj(5GC6hfmYPBC`qBRNz)W3!*Y4{ -zmV~hQ1X!2HnIRDj{@LkCVJFb%;X{=Z1bw)57+N}?KhwqU`Mn$Gmgf0r4!snK&YrT# -zv768bluOWGosRPzV#yqSY!{y=3;mg|d}I0B(bWs+_k9v3cy+c04;zK$H){0U=N@X@C7g+pG?sKSOA;> -z^9#uoeSkUO(Qz`R17K7DwgHhKPX|;0ngCsZDIkvoWCQ#m%|1XSpbhX1KsiCC3w7pQDIb_PoTrx%d5cCDW2Ea5Z&s@MF -zRPKFb$_IeheljHycrzd$a0}1{>0cpz=m(Mz4)wttIXniN#hrxFLLxDJ1Na-s@ij5l -z=d!Ws><|uvNjEXZIKEz-PzHX;zFtZG$21Jk4+ -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 -z^v!Q9rB -zE9uG~t2m@nZE4;2X%{oTh2?p4*tTMyR>oF*)S4RizW)O24_mCH+xLyR{<(8&^4FVu -z$1mQVk@X8EoT-yf`0-%kGxLX~pO-WwWfnHpjQITch5dv_b+W;=ZT`9UPu8{FT~(lW -zkG$Wf%H&p7br7fdj^_}~8pW=~mqu^dbun7^!DTy3)hjpVFR1uFW$T5#tM8oO+S0!~ -z=h*D)nU^*~OI@w}&|l^%Pin@E=^<-x4!Ki)Tko{kEz7iHDG@(HHtA0rvw5&~Yw9lZ -zgK39d{I-33HFE2vn5HcqS4uN)AC1mP8(_9;PgLh_O?FZG0Evk0vr3G1uBiUB!*F~; -zvXqzo`o&M=HZYQIZ+x>mCh_6dX-TW?$O%Onm*eC8cEp~OcU#?@KP;yD!J}0!H&Ww# -z56)dPNp;XVxzKxSv#OrvZaYKGxkdIr^o_Ou@bbvldG<;=$CQq+kB+*0^oZ)J57`E< -zO%8^;hV8eqICbEnPDj?K>67*x`ni1H?rmjztGE}7UJjN#QI>6aGU4XxQ?d_l7EC^_ -zQ0Svzcifeplpi>DW^{)Hk8ITsh@qY*!|qwap`4f{L=$Ui<2s) -z54}59q_kk0&qm|-4HF)D1&=yyR=c}R`^2S0N6HGnrn79)I#O-%x%;yo*9CnviD+z^ -zujuQRxnQtUr{RGXSjRW8PoP+-9q5IMUs5LB`WB -zY`c}Il+RaIWLw@-E&mZRrz&&&m{S_bmsHa-vsUVk9&GdT%yO!g*yfGxieFo7bEdi} -z?{u@s(KxwjsL`FTdlG_fhbt@OTs!haYGqlR_XWusPS)a6gVdWB7U#B4X;g7o^RlA4 -zDJGgBZ*YBCux-SJy$W*IuLK_F>Rchy9I}e*Kc};2Y~tVf5$)vvPHn=2`Ljo#me;nF -zIC;4(fB(LCS@j|L4_B?M4Vah`Su>`6I4f2BtJY-yO*>-aEeulLx~1y4c+WUtB-J6? -zm@|9WncE)@zG>Xtl~Am29WZF8ix_A0n-bgiOBxIut{TRCd+7RdrthvSi{NipV($zJ -zG(8`xkQjA+g6H!*rzakke3v<+(p$c8?3Wx?!n7eTBhg64;n8d1_#gfj;{T@q1xx=>yr&$ -z^EOCVOlU1yT5pX7mX0W`dS%oYzj3~=A?@4!k>re^9cK@om8v^WI%mo{anxCwqOxO7 -z=up1StpoknE<440az){0z2fGavLm|I{Rf+Agdd0r^S@lDNLuRMm3KRI=T+{tkstOi -zut`&G%bj@i=Z(evXG*@C9qya(;a0NNj7Ke29e#7848DyUmTL9jxR&#|`#WB@UjA0N -ze$Px9ANlu#r5Fx-%I5Bz^3Zg2-1zOA)112W^|zmP(fZNQlA*N3bA80XC*yAEo8}(2 -zOYA?h*+QJUDz+p%rRmv#FCL42E^M_+H+TIoLUJ{82F?8Lp<79pZ|6>kHnUoJ-&5-X -zt1uya`Tcj-F0$_rUD)sVo+r-&W- -z4_gnW1k4?tn}1{JEm__c+G+m}k`m|zTr5J$FzuZ@ZR~dGxo4z8E)M1dwQp?oJup7Q -zZ|gq!hw;WykBav<-D@4Tt)@O+`lQ2{=;O=JzAV<0+H`Jc%Ft7aenI)vkDpF2v5hOU -zY8dk1?uwAd&tJFSEt(s9XU&xX%=Gzw!8zqWeZDPCq+flbO!9E_m1Nd;DopiFrpSGs -z%%WC0FccTx^R{}vH(*KV6!GWP_T;-ZHF9fy9_UvTJiaKWb6P<<^I^%=`$tN@SsK?d -zpUrIa2zzv2?)Ks8sSCC04Uf!iz$R7J&W$-&MH@KcM0?Tv!iyTW&uraZeD;8Xwpek7 -zmqa|}vTS|9ahX<41NQQDZh;Q{&(nq;KIyMFHT;p)Cep(tlIbG@UZBd^rvoLE>mb&&oExmBmmdQ2`q!#w)7IF`EOT;WOalTT%N$7^=H -zx@R+ScTL1G@_s~JZ67|4*U==$ojz%zy(aD6b-bO|e1@@3auweW;HW118nEOiffJnP1{(~ay6 -zWo_REohqB|oxkDU{rme`_Ee`vo7GiZbZq=Muev1Q!@<%80TxA)k8KM~?d#;mJUG@* -z&B0WB))y=CQtw9ZwhK7{jjl$l4Q1-Dlk7V%rpp8cqP?My|Yb788X=81g=&s3R8 -z+^m&Mb!k|jqfsAluF!v}{zclXV$VP|FcU -z#-={2$LKj<@MB&guZU=$Io~~dt)o@imCE`=N_9nvU1wWM;qm+lWsCBnXJ^Ff -zZCIDCetTAh(p=|y4aLZI&K+8t)n@&?TGt6h&C2TOMYR&KacQg7(iiT;a#i#7Iv?hm -zUfJ7Xo%H(aH)Xq -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 -zDf<5NU8G8JQTfiNZy3$erWreYxu -zm@fQfU?EH_Bm~pb!&o$oMUMdEEIKw~DmDURMW6_bJr7$x6=Sop<;yXS12$$V#$jR{ -zNMf#waX8qRF&Kx7ad;5MmV{xUv$0WAu~28s+#Dzb8-;~(!H;nnOX;v|z_?2>A2ypQ -z_(P|$F!WwD#$>~A@MDKT@5202v_#bpGrps{=dX`$UASk(UtbjKn~ -z-61bn2=%nV4P=M%uy8i4n<9`sFJ8~IxB-2A{onh+6r?|vDu~CEhSC^3t{~c+i2v1% -z@K~xjCTfT1DSv4QB@s=-{%@pV{L@5=PJF&6UjervXDOXrK0ce1=fGR-wy#MpyLq2Bn;aC7`JYd~N -zVDDm_oq%5gcK}Oz;W`M931~z7L_j>qW&`{I-#ziP??r57c>WF)FDmOxkKRW*A>IH6 -zdjId@u-E@C>i(CZ?1i_n$Ksy-CLb^Y>SsK_8sH8H_U`UqtHGZ}gbxCj0%`y)MBEQx -z1sb0}5-=WM3s?lGV)OY!IUr}_{`Y__y&wy6GN)TkQWKx7NXD>LFc+lry7=fD@3ygB -zd?(=e{ayU!z^b`j{QW3g(8YfPTnS8;z_6UcF1|W&U2zxR7KKZ@_&nhFvt9gjVAZlN -zekpJya1(H4MHhdpB!*Egbnz{Lwqr;o59+e3>UPKXpIdV59|S)4jc(w2fPJX71rM;fNg=RkUsDm;9_7|8K^H{ -zZD3WnPM87g2J8nM4;%wr47>}t1Gp4en+p9A=>fL`rvod?LV1A=fjfX5fXznm`ApzI -z;CSG4;QhdLz!!ljBVjF%^nib$cwluounTKzOW+n@Z(vopR>%UbMAr*P#aA-GDn1q1}`qJ{9U)34Jvj$_pHy -z2G;_>w%g$P1h_aI+6%aHI~*@?&JO4=1HjHsK7TB*_HIZA+ycx4b~^z51-SAs`56R>I?)HiT3@Fw6E;3L45$N2mk%J^$&$dQ&hVWj00 -z32f6i35qP498c?{FIS!9Zu8hEVaDOU2b -zR`QBg^2*cYV@RH&`Z-~Dm5|8pl?+98}lPTH~M10RO -z8j6;2Ie>GYOt~W7r!G~fi^_nuy@y3#r8M0!SG+E3VY6Ufk%NntD;%mvV -z5-|DxRog2PW}(_Oqox}P@EqirdJ&5OHIAv -z&=#YXPkY8?AwZm~NF4esBKE914wb1Al@sDIn&98bw -zSyP*MEaRJ(a*+0 -zdQ(*PbuvBb=J&F%))JQe*DK4Aw%@P3q24ikE}nvH|3T)47-Zu_%Z%aW;i0r3v*@Ef -zREd7-0rIhZ)N?*+>po=2E}B#0{=zQWPIvzw>{8Iizkjfc`st0ou!}Yge)9*r-srt> -z<-YAM2br?+pY84f`M5sPA{p8$)%Fi|?}E(ZFYLC1eEA>jD#Ap%=?`|tf^7d^*mVH; -z#Xr~$1XcK?n8#^Rvl!1ga6!brhq)|4|%$QEWHnz -zV15GGk-xCJ1XoAsnAoa4p@V&)52;(|vA0 -zpS6qunMtqyjBMXU^T~GnT1E7@=B$HjMxxvu=zP87ciX65l%amcfoxjOx#HKkbR5Xr -zLH?E`l9uS-C@f)}wUGLO_m{m9q=CE-(3&r#Bwk68 -zK1xY^mBLnu$Js4L=FwYVTRu@#_KH3a+D{p;85B -zy8j~%eN0f4dpmUBVV;U4MO=i14*iB#Jy4P&FT(eM(NDoXfF|(w7vUGcXiHV}F^iAj -zNBh>ds7g|-MPv*>7vVP?EGhUsSZ0tU1?_3i1`HmA%lrtL79m6TsKycgbdVVXPaA}n -z>95>e&~X6>_v2px{$_x1OIUaCdy2@t!M~W0BRHsbhmqVD{QiVKat!b@MdU2-FA+)4 -z1%J4R{V4D+2T%z48t{)B*sUKA;Us`05#9{`ts?fffq#dHz1`r?5|Qr({{azs4)}Fc -zyTgYeJVdoyKM%sIMf8t@|HL4?AE2-&=oX2{i@{$a5-tOOsYw3k!GBRieg*v3M8Y@0 -zUn`=%_g$oXKf#ZQ)So!``-{|{B>1IOyX#91{EDjG~96Y_uR%7|kZGIB+#`1~d0 -zKe>xU`Gt(;->XF1EEQ>w2denoEIeM6Pc`_JL>RTxbD}PV{C7@!mL$b#iUdUw;5|cv -z!U0rSNKj&c-&;!j<@e=~8wcs%L)v^~V{*^*oPUts64K|Rbd!J2-*EEZr+0w#o2E)o -zoThfC$L#R*NbUx5LvuJ5LQb9BQ|<@yDv)n7?>jvQ@8$#&4C-jC9dhZFn5rm!wp{Ht#hes27D2()U -z3B9p|o+Y7YNa$G-dM1S4ctS6b(3?o;1rmBw2t9K`Zxf+6jnLaf=*=YbYzVz#LeHMi -zD<<^j5PD98UK63`Lg+OSdJ71>g@hi(4i9@0dMJ$aya_!YLeG%U^C$ES2|Wg(7fk56 -z5qfMw&yCOvCG>cNUJRiZN$AB8ddmpC6@*?6p|^_A%OUjQ2)(t0UKOF2Na$4&ddY;| -zMnbQH&`TxsItaZqLNA@rqt3#^y9hlLMtYeL*0zWGk(H#Nv4;FvBK{`ut2^L+s$93< -zTg0Cw;%_4S!tr+mjlXFy{s2{0-Q%?w;uRsT$qJ80Y4<=`P<$Zx3yE^xMf1;em^-F- -z>zya`1pNTQ<<>CXth>kGCO{Lw(gE_F12X$R&l7LZvDm=4xA{H2H;m&ZfZ|`I??Cke -zc{k1cJv|lD=FfsM%2+l3>tH^@$ -znAtkA;M}hrOBS5RqsjR9s?c+HDn$9wIfgSEU!$m!@b5#Qb1M2xJSUkfIKNh|CkxI` -zO#t+}89MkbKA&v{@o?$FMmF99pG^Ae@0tE@J57;({|@S`3n0IdOc@5y2bcrq02TvS -zfM~!5Kn5TWPzJaKXaKwebOGcyL3)5bz#K3Kuo%DsL<2SeG5~piGQcfB1K=H?3m~7; -zU1zeEFs`3M-)w?4C$z;dfC9vqH$&fgg7-P}Jck0I-$cZrHbLtR^jNCmL6571HgjBcsN?jF^o^;;hK8m_Mn>ZW-!KfNGwC!gU5BbYgYLtiu>?9s -zdd5aN*uN?ND=CfjCyv)2hmsl@85$b@(iXAsf3^PqzgqL(l>esuH|4)6|F20YcxDK{ -zZ-d{xpu!quq{upItU#_r63SHmE -zZx#Ga0Ym}3>>RzgJU<4@D~wAQJPL`e=q?;dSh#5beSHIN6xWZ=;TkYZ%uEgFOn(C| -zj~2?)cg73?*&%cTS{NL)iLpTdli}lw|J5_rH_f@(oOmXJu_<>lZniMY}u_0gHpwgh-@7Ib?FG1T$J%Q2G4 -zh;dU#jTBd4HuUHb)U?tQ8KCvAjbL@y#ribjXH -z3~7YHh^g))0s;&S+((QUAt)yZ(WD`+0m7+b5_k-nKEzE3bumeZT>XEroUHD0qIpSN -zn)It^Xnqn`A_)tN`poqI;$%uxwqUOe!9E+mcE;$j>ju6dN4KoU)*Sy~SI6`2VX@b= -zD!c#{+;=n5H$=bf{l5{1>2sq(cr+hiUMS9iLZ4uxK@O(RV)N+wR@3bCc(edaKaj=^ -z#Pt25Sdb8BUMQv?zzWkBe%4Vm-~}?MG^B@nI7}Y0%z(c_i_X_k2?GAxSUteMiJTJi(LXg^r%f<8s+uuMja0>E;M97dJt5CL}e6$dTFBo9+ -z1b^@X;F;kT*db^;K!~IJgavrfLTRi3I#(Fvg!u@zIueEjThR$seSAXc;ldD;!J-TO -zf+|7PhW%5ghIN0((`6Nz;zGjjDF~hLw<$EMND+F0pchCy>o0V|b2(~T2|^Fui$c%m -zXOX()!tbq5!0`J~NDtkk(njwLk@2)7LI>TeLhpSDe`7=Uw9KUNds)59XM+jub+C~h -zx)*g4jQ@Hc6YKu&J9^%~i_k;&u*_uf_j4q$?$3}ShbBpBA`Q9+Rw;|$0~0+C)UTN$ -zdgz{6jvRh3jZ7S$P%n%qE4n9#rakl?|DZnVk0YX22YPk#_;c%`dI-xz^w8OW+8@LG -zW_16Os7UZC5j`}y#<`Myy~81z?>elzA7p`E7U*@@bn8(G-YBA%K2(yDzMF(8i?oN( -zyIVx>$OuWwkv$~rk>c-q*&=%ARqXfz5~fJ{T@SrCfa*~kMOaEwuyPV6dc#qucaE?p -z`2FlJ^e&6&Q9zIK2fdpjdWxW@2zul`^lC)(sGvthda~VmRDv5Zye*I(x+kf5gCyuz -z5+e3cIa);Qk!MR%$TvxXz9yP4!dnqNbT5|!dg*=WeGxt0IdHtUNLZkVp77Xz5PqZ= -z19}|L^RxQ>I7p>&xO?`03corKSmLKpw2=kW^dp?m8+ -ze&c;i!ry!Cr6(L4LKpd*gmFwT3|(`@lDg+f>0b6)28m%}WAI-~n81Kcx-vY!1JsqEC@i1O9mA}Gx>!W!S4@(QeXnw@Qg14jv -z^B^9^pM;>M2*daQL-QIQ#-C2e`W421y+`vD9>(vUqxlFA;}a5^cknRrM1iF+tkf%v -zpBX8?!uT6$ioe46FDukv;emp%@V5tXV#Y_~84u%c!f}3u2jlkV2*dbGDKWpoYM7`K -z?=h33@X%i2VZFk`dxfdJ!XtWxNA?P9^a^YC3Xkd)*6Pvk$k+$IY_G6(udqR{@T6Yh -zXbivVMqx2%{|&w5f_Jot`X@nqq4NvnS6CSasbSe@omMA7(H28tdF)azeY8izraAa?DMLOxZ=$4|;EJ>?bmXOTxoJ5YB2RQ}z(@6%d~BnM{cyLT71;bO?($udAzG -zbyrfGwe%7g4a=Z_kOl<9nnpnaG7?1@7zi|ojtGo#L>OdrGJ*(-Lljp=hX3!}dtTjB -zOOkf}Gx@;l_kDL?&bjB__wKDb!Sw#k%m4jT^}Dy#%#Tp|KhtYo#7|Lq!JBI|zc5w5 -z!}G$wO76cj@&BCMe`(y`1s{g?IE?$>2jB&QKZ<%fUGUs#I{$BQ`A!0V-m=vBJj8yo -zt52}(`CK2TfuHz@Wk1U9UEqAJW#7Z?(L0UKps?)gnft+aApDgaek1sv<1Kq5^C<0K -zooCsvF<%MpJj$~D+cJD2ZOaAJXFzsLMK_|fZ)Jp7jSLX$pd*G%^3INXn5_gQQJQi2Cy -zyf_oweyZ*t6yG}V7>P6s -zogLF)*(v60!MpsX{A1u_0)}q}|3$dp2Hqoh8~F2r?*Y#c;qRw&p9FsuocWlg&hVl1 -z-?M1^Hv05b2yXj&%RYtOPX}kfS2LeYf_=Vaukh*%90CWJ9q<_VH0Dj%@34Rp<9nN`EQlC(|_l0K6+^ -z*+1d@{VR9^;jiHQyiVyOKj(6MzXkWDEp@gP@f7rg-QXskIa+fo -z^_-h6`%he+9&l!hWk1L1Uu0ANvF!Ujc>#}IXW8@E|1fy`Cd -z7cBc#j_=Eq{(942AHdz+g1?HprvyKYyIq1G#oeCurSdd!zTus?dqnUvxO-OcKjCgP -zZ1_doJ?t3%A@2Sl_*LAk>NEWBxO-FZ&v91}{43mT6Z{+8)rs`}NcG!q_ygSiTDVU` -zN9hpm)4?l+`yt@33qBnDS;0qvFWzYQc<}uj49^G87Vb;HZGs!X@r2c{OFw6L4fykdd%^!L_(JgWf*m^Nbc^8__)CJ5lpn!)@Oy$U -z0nZ*Yd^xyH@YUcx!DHY%1%Cnjq~N>2ZwS5@{E-_BKM1b7-Pk{mfit%o`{z60?_RIJ -zc_;heHE`{n#{T&ec=w&g{y7*^{>)vlr|vR`8R -zwhtV7$g*$e@gWc1v%|8_W4;Rftg!cPCI4Ty?58=suY&6yHulW~@i#2{3Fe=Y|3@tQ -zAdc^S@a8*3{{_D&nAQXz6g(X~F8E+@r{G!OCj=h>{)XUVXhJbR -zu;5|v-Gcv?$|v{=@E-(U4Q~IE;VodlDF4miv~Z^*6}Jn%o9bWiec<2UZ}{)Qdj!*X -zIrG8N@p9rT!oGn2^B*w$7@aRH{67UA68vrO8sYzWI)_-q_XF_#f?uKYi$(aKP(4;JqK1^$t6rvq0m7VZavuljq#2Z4_gJPUlb;3L6Tiu@c0 -zenG@{61YyJw+MWL2p<67E4T&xh~P88-xJ&ceob&U__u=30Uz*H!{>o#3;sBGvEVRx -zncx9B|5^aOUz++Ea>OCZJ7`*2h%cgUmh|?6`3zmI7$9D~# -zpDpzFEp%S?7Q^>~X9)f}c(<6pKLrkbAM;NhFJ2>e;eQW!u(+N!*Y`dxDQ_|BYc+?U -ze}X5N4+FRF6#W}~o#11^3BmKgeS#N&YXmO=Un)2V&I@ii#H=q*nL5YUPD|Xpp6HwU -zn-9+|<7gQd4l(P`Q>Gs2ySB{zF7S@Udj33<^cVT>wA3Cq;#Uqa=l{-}iuneWr_EB| -zjFJ2FTD?DpB0L`R%|mF({fQcz);-BToj1N+xSs&-d(pCg&F&4gdcTh6-bV3#%(9y~ -z{&QeyVAl9-W`Q -zxx=y-b9}!8`-S^|f!hR6Jrw@Y|Ce!mv%q63O!zavwAbV$_8$YcFF(LOk@K^ac(rBI -z*?{DK3JkH#%{6MDBgJU;2u$bYruZg -z|FIlCO!55#>@g0137GaUoyh*b1g1TRUjAPIkKI&bFJS+#k)e2^rS`Cp`!6VdxG!e+ -zKg`tob7pY)4wyyuW{v&WRPBBkc=JlVUP|t#%rfVilY1-p7LormXPL9B$=w0d{;(Q$ -z9{{)CVcPRk;4Q-aD)2nP*UvKNk(2+2>AZT;KOU#^>_z)NL-D_j{yT-<5gzROK6tB$ -z?-eS~!z_=8?`=BYzT3q28!+u(I*aS;Kop$zKzj8{=ibvkCeM8ZAF9})*yp-x7L7`BaVlIJ=(?o)G090Mj129_9zYhl=+9`W$m^J%!%|9)HQQ*RcQH -zVDFrNa-WKUc!KuFad~GQVb0Sh_aJy|yH)hx38p>AUVb)$X-{4)^A+GGk)Laip!ZKT -z#s2dEc!tm?kAwX?Yt(upxqs&f^P2@q{~V$BIeP8&4tVzp(?0KkHw*oG6b(esFLfMW -zqkg5Uz7L`HU4EoFSD)OY;0yTu+wrLXOTl%hkHs9{yU`o}WzFY0F{_${G7&IQ+r`pV4J`;xu>I|LqsKG??bU&ZGpetL>7 -z-!0&YWhTE5%{A}yXZk+k`zCmosK1@yM+H9%t`+vfOW-}|uMcp3eg=*Uef<`dN96aw -zqo}`{_E^HN%wOXCodwQ3Z`lp(e?9oKb(Vdz*T2EEC-o`j?||2d`g;+4tl*cxJ4F5c -z8+aV@H^A|~1wLH(f0yzH`5I;S55Tk^^aOUF2SdGG)b~R0H6pzKXua2u&h@AKbsequ -z>w5mz^CtnbxV!`49nW)nA-yZWr;GZ#8oW#Bn=vr$Y4yhMd%#byeSIj|&tTe*@Aa>L -zJDSemw(L&kw<-L#8vA2xzr6>h{jpwuIPe&~AKuIFLEvSge20OrM104y|KpD_zokL( -zEj>oR|7+p#ryJaPqJIBM90Joh0iJwcLoC|o2JmKKzrM_$Oz84K7MN?N>iYZhG4wkM -zMqZ|fPbx^p4+e+6XBGAT$>1wR{VoQ#KWf>}vHNM@%pE*lfqTI#MEoBIkBRZ|GBE8^ -zUd#Lrc#qJ>a}d!5qWz8q)BfftyI%mNz1uT6{uF-#@*k{^J`K)_{L*30N1#3r~27uS5R-8{GGtWxvhtMizDe|_?clRT`#(hf1wT@!_kDZ%{W&o0VfXU$ -z<2qmQH&-aV_bGqfdVP@cw~0TQS -z;nn{p`ou`|r)~4}IUt_V7p@LO-z*jqV#6#OS)42FKS8_TOxHE%>uSUtKic{O%XIN5E$b`P&E{|DKs2UN>K# -zgW<`~!{9MtpS=JM33>mJ^M5p#cP13gX3-vV7ijkfSYIt(V18GM(mMw{A@tMV;HFmO -zKL*|^IJrQd{!aDeaiRIXbf)hh-*oV0!hh{To&Iu8{{(QIn18PZ -z)0s$~eYu5rPmTQ~+b_2-G`|f;>D{x?{KgjXvmF2TxV~Se_zyZj^(VDHw9x$aoRUur -zl$)Qdu{SZ#2JgoF<_pXx(m?vU(SM!bKCzzhaq_>?=!3tb_%Od%>FKvq^tnQw{EVMM -zsqtG`PZk^Rr>eei$VA{u{8 -z|M}t~T|Ymart4=Xc)O5?XTg3^zBkza8QflfBzM>|U*zz~_tdCcvi% -z&Vp;j`r=jfI=%Ir-qw2an{t$&$G~(>k~hEl_j>(3wKt#H1MU*>{{g%M_Q01p{=b0h -z#QbV16hlnN|8(#e`d2HbHwR2-5_$G_0ld4_Qu9&btzbHz$y=X&`c!=mn%5q0g7e4e -z@B7IAyWo&mAD-rieJ=7l-LKE@Dz2~l^|?-7d?)#7?6T}{bNB|{z|g?;)#=yY^WMVl -zYru4N8?7&#K=wblPmG6;kh|z_JHhve^}ZK4e$QTi2fXVJt0?d9gX_e2I|GL5I?>-7 -z0{UDfuRNUrTHiM5tpa<$0jbt!!4C_2Jp-mQl@4LP0=(xo{rxMYHx917rAFH~v>pVe -zbFRGdJqZqp`RyCv9kP`72_P -z-zn%A?a%Z2Kk|DFn9dDbz~Q^Wp%;w1)1c20^!nRpz;B`d-o^3V08R^e*$SS4@z0w- -zeF@yR$jk@6M(OuLzq0j!b7E -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 -zPO#q3LakCp3UUk1I}RdoVmE}=6& -zR3XPzq?42eWH?62W>nvGa@j~%9PJod)$4b9gH9DqGYJKMhqD#&R<9;cWcJq$0=gSSXnC}&Y;`C!w1K4|Dr;e_T25-CKU(1+ -zA%|9$ok*^r>=0VHY9#mN@dVXVI+O@CU_ujWrE@lycdzbZZD$gzOrVwiER9C9T`C_H -zlb%TkrdJ1YcxW6R4ClS!cvZ48-Hu?F$S0}u4!v-_JP{tqsn&p)t_u&S6-R0qDkZ7; -zcqkNMC2z)l-Qi-DgYjO+ou*JC2vw{qOeo;2ODdwYE0^`mHm_s0c7=VN=htW5Sbeqp -zte>R$P@-@r+o8&A1E>;h2l%Vm0nSCyM5uBg*h`=Gd+p|F>A0@lDnnvvE0V8K9tPCP -zl6p6gDdcly^;t0hYimNiSkRgyrvFBjdTuLfW+TE&$&yz2%T?)IfwF9^-@gt^s&*?K -zP*Mkge+4WPRbqjmZYnh -z=Ov4frh~Fku`CT`&qH-OG%Fh*+@H?o%SK;_?MTsVp(Q99?c6F2r94N< -zO!*>qy7c;0zF(l2H%!71o2()Wsw#+%rc@ool?EeKS?G5*A_qm?*4yCpHaS|uAvF#l -zRNSO=ThMEaXn_!1}rOyt_(ojFk_1Y`315bF-ba -zhDU|u5<^Zg!@_^kKM+&D@)%Z#7H8t`RhUPEAsgl(I9sqZLXr -zSY?v9?F~+THL95$6$-MeN`zI%lj35SL!T97;{$`<+5!)1tHQ;}i|!43pGGtUy(zv}HdA9H -zeL>+ZGfZZQEMUf93>j{I@)I$y>rhu+*}ZNrZ#k;zqcSyE?6;*RX}Rs!D;I+*M&N4g -zJc%hQC0%Oz%f%$6=F9`Gr%*OtWd(9Sg67}bm{8f#mEFzDZ(OInYPpoOQJH01oJcC0 -zyY!o+V!`%i4#taLwFFrpM^zL{6Y+smpc&EkBWrpTN{02SR4o$AoaOTR3me0$$Qmv#!LG+M -zj*I_Bs+X_Aa8ch#>7KEPzRF1E2K4%r5`JYV=}+8b-Zn*wqrRLfd#m(%wK-JH!u5Fz -zC2)`UP)m`_XnCpkuj~AKF=fl_qx~)Nuo~!q7WaAI`|Y*fwaql>i$xOYoNMwNs4}su -zGPbB0k+x4WyXI2lW-K`!yrVhje+wQgb=uOqIXtMmO3gcL8qXft83THdQq -zkV?J5Og78>U3zs~mte@}j>M}>J@w0qq3Y_a+Co0ssPY3f6-j=Q23wPP=t&@(m*q=6 -z-im8?$a@K^)C;9tGKhEU71=6A+Fo7*cI!GuiJRzsf>_w#I;--toy1fcIua; -z%KIL@a!3v9_T^>FoHU14texas<$u0hSDN#H=-EbgDqk({MelX*e;Sd`dMl@;c0IoW -z>eZb%;Z3Z|mMuKvl)ksj`C{peoOT9^%5PEwU=b&(>AFK9 -zRk8A5^dvQLxkXtmeWTM#G){NfvIuhHstI)mR|UUj@m3{DbVhHvfvZQqLN@EB@<)R2X;r8XjJ$dh8QQV -zKf!S_gL04x);FqVLOqvTnU&&OWep283&po`sQ6V%2gwsJPSGOwHco?&Vz*1eCt@7`PtpET3 - -diff --git a/plugins/amxxpc.exe b/plugins/amxxpc.exe -index 51f9ed04ed81aa3f988f6af481b3b7d2eec65ab3..760fe2d0e31c39b979c33bdebd6cbc89ac31e17e -GIT binary patch -literal 101376 -zc%1CLeOwgRxd1%7JHP-dv+AO#L`g$Z4JI)`Q*qTSkp)Zu7m-~l0=7{?sYwjZsA&bk -zVGYB{8hdMO+MBkqHn-_*?u~7&k|wb%Yd|y~sHrj4+mOU22iHW5gbzjLeV#MBun?2> -z_TKxx|GfHR&c{6Goaa2}`8pqSHusx5ITOcmJp5@I$2D>KKRfsL|8>J(+>AfQar>j+ -zxUtEQ^Tv%UD!#KJX?@ir4_1Bap`-`C_3*=wNJ-ybn^Yw~ob;WClQNbSBt7)Vnzgr& -z8yAxttm8+mSAKQ!SG#&be@7O?^!Qk~xaTDZ|MFf`PX~MVRL?dDd%iW$^Jn({o}SNH -z7}s-xh0!cr{+$OZu%0i&+3Dc8976@#roi0dHOY~Wsq<+#=3 -z4P4?^&_3w_!{{*rJd+Gx4u89}cC!RwWls?=Q}PH6V_sx{w|z6Gzo9qjuW2(OHW -zgLdt=>tNiG+u%`a(CaKUjD>5yy=p_%0~n9c`^-f``0y9t?6+5~UH1q8uAi*afJ=Z- -z`U2d&U*5z2|KC6JuaI0I4xz;Vdhj2lT|_pE2O{01T5yuL=&jKlNAiSxi2huFsEc0? -z(OnqLG$VkD(L4(R)IhYXbfmUWeFDi8+)jE2$e6dr>{O%Zvin%A#AV4}?slq~R{9yX -z(@!!jPI`JN$0>&s+cKHtcrR-!2cNv;Zj_X2=@O -zP#xXgEKQYrJk6Uk4xwat%?T-&8^_mPxm^~O>OoD8^d`osC4*3T?Ug&Eh}tWw!hTLC! -z^$uxe?bTIM!F@{~I~!Qpm~T{k#@Z`M(zN;$(&S1*MH6&BpB}oVY06=9uwVDv{9^r4 -zBx=TXzS5vH8yT3B{%8~!jC#s(L!p4<3C!W>QJPI483692M>3J4d1XkGCy;LPR!U#k -zfR6W?7nAPMV=Ca7-fGJote(ooN4aXMwlw|_+ikE4=}X|vmcZz7{NfOX4_Q1GRVN2= -z1(9hUHD(nviu+k;JESYxW?&JCzIe0+&0ekepse&zilMudeN`STPw@8gEJGNVh6ePp>>xi#J2k -zSuqD*(Njzf3NE@j1IBm}2X88p;e|_kry>DDa@wVqT+rUxi(1ihMyx*u4vME)toK7$ -zVFrkbbCaNnj*90eg_I{SK5&L|)mVLVMZ<7z#p+36+Lcbq0Y`zOT}zHVz#ZpOn*$Nknw8TU;&3zI@X`ua>>n<32?WJm -zpcP(l7tn%1(8=A(VUUncpp3O*P8f>3i{>oBA%r{^oo{D!@-$2F6+$=^^x+mU3Sw!P}5$=ey~z64QQIX)zQS$Kca%C3zwq3*q=}5zzfo<9JYol -zO%Nt0twTzkCMTgy(wcIrQD`t5@qKT_k$7x+_dP)j<*!#Xvz+?joOti|wZ<%vhGrCz -z_*ddlL?%}>L0G_;lHsgYpF^|@DxMyVwgb>^bTpCNW>WY{gX4AL*stck?e^wgPzyU$ -z$LTi5AhH{Mn?p`snVSx8=sTD|w;vNRKy__xt;lx -zW}zrTfxsJd3e;4wBCK0HeF{h(XblO&TvP$=Oj8MgeXozT_rwQkNfk<3c#fs>iNT2- -z5-Rz8N|?#EDE$Utj)t}AoVRdrc?fx$$4oOTI8xt8d1F4k|EtPB|98q8@@ec>m9MyN -zd30Aiy;2G>K);+WtmU;_R*S85xDqo|VrG@x1eKJQvSq|~!wv6Pt$R`la4~7dF-7V_!a0y89@-lnU7lr)XBmKH0A=lcPXL@ei2C(?a7 -zjQ%3nUqI4A5W5vnx8{VTIe)p6&ePC>S^fB)Cr3z!uPe@X-fTMJ&4`H&H|Q?1UT~Am -zR&v~TUTCl`CYuH38yVJHiPPF(UI3A@QhykHH_1!{cNGiS1~wYW0Qi^lh}}Z+%x-5s -z{r-G(Y!eMNX2WKSp~gC^#sbM%(89(<)SNX|PL3olL3LTMUYDC}Nj8IPP=6!}3T{gD -z^osSbVl*e&q73ljXQ8 -zlQoCrS;6-Pb3DUP3Nb5S-pX4@Fp-CE1eQo74_l#spoTpvx)d&-T`|3B_ -z>!AvzKN?z>BfLutfyv6D2FNm2M=SltEj()dCO*{6`0&bNA<>q}KMF6qUPDH6CX?*h -zeSevHLixbb_wLko<$a^^ILS`b;{wKm`MmMCG9PCZ;#1AWjt1+j5MGJmf#p2pgNK4y -zd5~Tjp<~=&wqO%4Q4TX_anlv|Ga= -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 -zC16lm4Wb`hj^KE|x0yVw(>xWDG -zJ}e~XeV@dJ{H3}80yH6`vHgDWz$DXA@qi0jVxch@nt~x83?qVJWH5{hhC(om4u&zo -zFg6&PgWpuuD6{+ -z8M|r`w=s3>_fdZ5|EK){c^~Og6<~SY(fmjHNk)cr^nBFiWu1Kq#Xhx{Xyxi0rI}Z{ -z4D#pRZD_z>0v*nc%H0wJxf4+rtVs@kqyFv%6sg}m&z}3(lQ|h}+jfE9VBm0VDWB|g -zS~;!|nbksG*taSc&new)JF3DAUwrauRDacT$^M4b@PfS1fbYeF)`Q}~#23qLC#xpN -z6B~C$u7oNU?3#(eCKF7@$vTj@{UP8N0r(&S-zHlcb*Ke;nT;s~mnQb_L`WSIH7D6> -zYPTJ&Q9%@~#igp=W=RolO|taPU|Q9&EiEY;wLX+Y@9kfj1H`aq(P%z{`l$roJY -zQA=vO+OQCcsSS4a%wW%K_RL{VCws17&y}%k?I@Y-TmiU|U94?)xtjAsBWc1crOi;M -zEdsTqg0Bm>Cy3q#)csF1AtZL@C48ImmT3SINh(;D0FQn#_J&Ll4?<1wAV#2??ai7f -zB_lb(K;E=Lo2-?s*) -zLk-hLaJyDKWi*`n8m37HUz`Nha)tz<837${H`gb|D`I+d=*Py4f -zz57{9A$?-mWv@~EU$|M#rlcS^U2mf -z;fAv3gtQUplZ5){;N6~Hq?NSX`vRj8o;$-eC*>2~mXn+ed^daR?c%{L#Av(Xm55PF -z5D%IOIiGS-e6h>$Ja!RKpIxp_f?|mVq$McXm#~WvPg2esluwPG6WE^o1Ln?zYj`|N -zhO1WzF1L7avoZCAMHLtn%ve#VxwA{DGww -z!B_Fhm6)y3kZQ(M6hsa~1Tli@t#V8Vi@+pX8>G+^@jiMjAiNZ%$6!D${4Bsm^la3a -z4-8#3kI^T}g@l4a@nEIVmD=n1#LfDe$j-s7OSXFRqP#W3{jG-nich==szGUC9mR78 -ztCEwL*D=fw*xtcu$i1e|ZI@6s0LBW`wp0tYlVbf=C~xZ%y}!UJalBvISp(f74X?n! -zy^K@Fl=p1MYKp~!`*$KW$f=VbkZhqmdS?@JZlA^gj{+o)H&j?jwiU8oVp#%Yk)2o# -zy!fr<)}!SoKlSD;=q5~7_OWt+M!;H5o?%s&pZu^qn$>4|E9G;QVStE=o^l{S*RNnM -z>Nz3SKZmnH;8L;v8MY>UU4%h!6T^@mI{7g}x+xs#&46?o;1$I!*KT}y&u;H#)(3vMcDvxF<@M^ny&|Myi3G2G}WDgszrk0p7bZGuR -zqeJtT(P7;G79B2+rh~~aiVmi(3wobh$M*T~|5=|8U$@VnD+AHNK0E)XeeN68=fH%p -z4oB&2peq3Ss~yx$Vn{L8pkh28QjCucE5^rAF(&Y{z|x7H+^ZqQn4l}he4T@ofmrnN -zt%WW(Q*Sk;xT0Ivs^M}t(@55_8cEPK(l8mVV>A*}mlV`WO3UZ!&hRdwwNI#P!P-xL -z5Ug17MFcw+!lTnqu#U!T+u1dqy`O?=2V% -zYns=aP6a1g+<|^3o3Dg087Ch2(K89@T+J%fxi!Ov;(s`Mvh!)ykGbQ)_49m!zN6lG(No8Se9P~Re`GrT9q@*M40C@Uw3XKz -z7_^s)-D)q(4f@}X_&{2xH@V5{Rjz6Z*^7S8HWSAakUZb;SVGE(dNbiS|ADc -zMQa{_*FWOnHF@Vt%{XiPx^^7j=qO#p<9FT_G2QwAp?guTGIbJ|4wjKMF-i$pOm78Q -zci~erflt7VgMpU5mooRM^*5#m*=U4(`Cs8?{9UpoeUWT|*kL6VLIkF+b=UAKvklSW -zfmhiQteO1TcRory@JC#Mg&rn@U;dI&$L$cq?K9h(Ivvr8fg%3m{|26@Ek|e>!gwku -zm*jFX_fYu=>PLe#ocroNq+zdEU&Dp8LCWk`DNs_U;VGbDA^CHN{k|ZD{}6sbr|lDO -z&Rsyq=Yw?oTX{5#n%*4N^$9j6I^woB*(tS`jXd{-5#1mj{5^gUHzE^BL8JhiMut|1 -z_t1?L8h0|p0Ib0}Yb^V*p)J$f57J9K_(N>Av_##xe-aaMv%j4DkmJL(h3TzeA@Lvy -zLN^RUGkcTT>}^E7QLdzMaxB}d=9T{FEf?V-deEhAibJc_*rEH&<;r7&oPJb?6`2Pa -zJSX1+fxyX2Auw}tK{>7|%OyA=@g*qzNn4JP390Q65qJ62`)2!D3fdZzVH}%b8k@n7 -zWGKxMqbm*e$3-qF9~oj>VWM@s%hc>SvGvpAboiJ`NPk-jsf5JAU -z1;br8phv{w3t8ML6auR@9_u~cV7?VIDlm^6>pR{s8`CA8GtzXuM9O<;0~)8Jgh2#e -zn)*CvJ<;ZS+3?}@Qhc*nh(IoJF{gLXvu>xgO{d=2Qyai;=v>Ex?F`Q -zt+}RYKqvcI`vRUxFDP`A`NS@eY%`gedO|s-r8e7+ -z;yEE8oLSwCD@|?NaRCQcXKKDto@RYqx=GoN`3ACsEkxDtU`seqTf?q7xLQR{2O`SV -z6^|PMADGfxwzMmU5Ykw^96!*Bf;ltM4|rUsp7J*SaRb+&uX`!maT!CiotI*vj~?T! -z?YK%4tZmEh5J$E?Uc?ht)sItJ2t9sHxn|fhv5>UV%nP`_V!-nu*9_I4AP|B0)1xEa85D-EPo-Hll^0xBTe+1sOnkI0=>*WpTc9tuz>_EqmlfNq-*!iz|&Tc(t -zKEV8B6wEw;`SB>2yA%ql)KtCCn`0ku*ny*6>Q|^?bkaCFX$nt<HY{-zmU# -z+Jvug5`ro&=yP4)*j-5^68o@5Z{f~WjS4W1%*xkfzHFP0d}(`-5pE=w!|pD7~gr5uge7L -z8YLAodPVWv>RQZtE -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 -zMdf`_N+v$!&2eOsI@!CC_ip8v%9qIzk=5Wu8{ -z$qc|pM^%w6UoPs31!7jlXz@8n&tI~I%dzXx-g~uTe{k;;&o}8ZS3pjK{NPE6z82gn -zkm4I-@Q$8i(p&ZIQof!k2VzgViQo63#T9#+#QaGc8mb{a(wBP7)NLA2E@?`)miks| -ztJ1>Pz0Vm8b#mg(7)U2EFvvpPM^H0=+Y -zKvq0torSDO$a*`lyR=Nl`Q9P?DAjxKH9Z)_fM_mvYVV)89|C_Y{Cq#KltI41%YVKP -znQMNa+X1skw~aF8X;wqQ#(2G{-e_3kgq3bb6-PX -zEq*05!KRLL(9AqM4iA)PsnzFF&!pXevJUF!hVe}OJSc|L&vz)QA8_ova~Z;E(?Jon -z1s$QGlx-YMrIA^ESbbxx9MMl*ODp(MfN@m&}Nbrz_5*t-4!_Uj=RA -zd|9Y)Vy7R2*67SgsMWq1NH+;5Ct61!3I+uYNvPdPZd`{mqs_P)fxuhz_2{ns$mK%C -zdaUa% -zmjP>}IeBoHFMYSyYyy|R*=%dAy71k0vnf|7wfQzg;AiWi -zpX}Xev|y$g!YPtCI@GK+;Q8Je!-X+H#i&u=yKZ!H{YX-`w4;9p!i`I@Q3Z5k0j}pf -zhlY`>%<+28u^UUBbUYp}V)jxufnLuX{WPC$231cdBvtQOd_Hv=pFe#YpMU7U=c}*d -zS<)w->SuxX0tBb969K1J|SG_$DZ)5GDl~z3z-z^PS-6*MU*>OhCfN6yr*e6 -z#RIqb&}6XEu1X_)P2at7jk4Im9YJm0`fv$0m1vz~*F@Rg4qJY4I%!+*_U7S{kw!*F -zn@EB2`{F5~E?E5PbZ-EFMU;x}7R -zgmp1ljEi<=>Ougu8W&&G%yp=j_dE|pA+Bv)N274e!Uc=o1nBsoS-=CTzh?j?397k! -zKv(%Lx9)g?TUv)+FFlM!I~ck0Dy&94E=vzP(L)7yxmQ}?(jm2ZwPEyuu}HwHL;Hu& -ztZDJJNSi!fQzHY>E;`VIN~ITC+G0WL+FHssnz!O40^7mq(UlMNsUMn@(@4f!BH6+R -zeh`8`bwV7H5Is<16`=s1x2jWaKt1qty6o#OsiWTrG5Q+9$SX1SqEira?=4I -zW07qU4wq!D(>fX;G~?~wP|3#puz|z-62z -zoV7&Lx!3S+(lWn`%wxX*(F6c)?Nr4J81CJS19z(8S(ezMC!S^rHl(MNMF_!>c_)Xa$Lj2s5JIv2>M)UJKjF+b&FXJ`Qqj?z@Go$D`SJ}m{Wy7i}wcWJU{(TC@VwHGKW?IKR|KG74lVqZe#n~-Sidwh<;9Js+eEk(oZ9}Lq`epg9Laq -zVNg3ox^0)mZTMXu8A`e8&El1QzDh2jm)!VS0i=s;r#ECb;Wrf!F%rMYZ}V4)xHeA3 -zTwD_Xv?h6%SRi*X%N@wkbEP|cn$hW<+Z6P|SmUxl7O|0hM~zfkd6)LiUWSZAz)hdv -zs;R4zuS}wASv{zaN6Ir`&ND*{{oAFiV{o-icQgV -zwkvKiqOW-aK#m-OIS2rKr>8adoi55o%DI}7)~0iZ@ZrAhfs!(&u9{{d)XcvFX3cV;mq9ZD!R+!5W7q3r^Vy;;t6b -zGV03EVGlNYq3MWtFx^_<5)VEanR>$Q%@A-ic^du#OSaiIP!&y93Z{2$SF2*~Rhnno -zPE}Dx`q4L#>YF%26-hwaita7;k)NRvLO(-ur=y?!5>0pLmuP74M?xxaiHzRLj5n^n -zt^mAlW6Ngx8z*~%w-_%V_GBNO(bu7L8bT{bx!r5jaac`J@V9)}LR9LBI$VrvW<3vc -z_fwm{SOD?Yan{)G5Z;iau1mIf;V-3g1pPrkAF$Tse&QGm)~7o9hkN7?uUfA=-ycpN -zyu<=`_sIq!bzU}`PDZvmG_cM+><+B&Ta^AGyk(g;y_IU7PYX^#|MJXu5jsmRImLEJ -zdhL9<=$T?*TM*ttsum2AV%*|Ub1x`Yhomy^QqId4lbr2VZ^m{DuFP||a@;Oi$vbq- -zERKUl4W8!B_N`gCFLfGPmEWwb);KAdM2<$G!5FM=Wmt9Nr*`kqpUmXAKjPS=6_~|(ymU2K?J@dWc-1u}w3Udw -zAlS^WW#@p}jj=2Jld3*tQpCTOlN09BqX7DfNAi{kMG(w};!NPU%u)@)bB`gQm- -z7$*9Tiyc6K2~w1v(dyC{{lM@&i)#^L{ii^+x*_C#vHorVs;JKexv|3B;ZF@H|T&2g*w+Ur{l5fDeU|zv~ -z>+aT*II#dquPW3@FU3P*S)oq$89}nklPZwn^k%3+UqPA1T+N^n#$Bv7?iJ`UiB_}u -zR=dFA&)bl6bW;SlcKeaJWa->5T%^wS~G>vqz4yI$R*5di$rAbl{SZ&>rtoCkPFFx -zZAiL-{u{hwm71Ya@)pJ8vw=vG$pbR%Oac^YGhk(1-yb;*aY?VAR)lSyoH~8oLvN$8 -zq2C|DrD;8S7<--tL+h%vmI9@sn()9?Akx-a9YtFA;v4+&p4T$aKJTslDf4`%SMn}( -z9=@Y5jCv7KITcJbm@ce05U~fdRkKm?CE@bn0G>PBa=vn?6d-C96zUdVe+1z@crJ}x -zQ9hpG`#6&DQRt}&wpQk08r3_Y_`P)lols!Qo9qT=Iv!>QwTtjDCMQKue*yZF*cSZ( -z9bU#l60`oR_h*4UTT*Hf6!#hv? -z*6K-0v&Bh2z>oeM=DKVh9_^GFkG<$cMoO@r+k90s7O@5s>QWRTJ49OpS3Al?LA6d6TKP)9%=?K8eI;h -zl_ZXSBfRadU2Jo6vtYYnHPlr#m8Jy2EW=<_z)hzU#1CzH7wW@*S#Om@iHD$Ja1o@| -z0@_m$JVisIdLh>!1s4wrXzx(ya9&_CJ$tmoxl>IfG%7S -zwz-+(@;dednV!XE5qo7)DF{+Jay8!QDGS&o5oE%<6aC`7h^smeduD6daJSMNp=4jx -z%G>N37o%pIATooCX|>-7iPVPdJIFjn&t|*Vd9|*UIo7AD-Y9UFr{#Vm*2kd};Gj02 -zSdUlikOZZf2ODMbA3{hl`nJDrF_OQgF+x^<_fPfD=or$w(}Qkzz7m1&lDrM9M3l|9 -z;m#mV%4!o=yLv{gvO1O1@q=el3?O$0M?^r$^d=x>J6?4HoKwAtEx!Q0!(wm{*O1Ax -zrD|^`@}s_5E!Mw+^T13&arE<9nq$y*b<2*_GvqQ>!N`VwgC@md+mW?-d~M*-)=a+6 -za|YB*@5(@ocL{UimFCZ#LF0rxF5L?=?Zxh4+)~+xJnCZn{Ryna9*D*plX-{=U%*M4 -z4fq6N5Uec{d1r}o)g(TFI#y$2uEjrX!3~(Q;?j0M%1y7n;TSvuOODjOZ%RE=J7ARU -zzh*}g((pHI$>J24mDkL6J6*KQzzz~@x|`V+TbnHE=Wj)&^BNw3jlx}j<(O6m1yOOU -zk)_06947TJBZ_uWbajgYcev;leQjQfKx}68Wt#B^k0q;%_M!t%C!heaJ#!TLQnnYq -z8U?u>^8U)p@BlyJRvvm&{m8-KwysG`&p -z_o{`1421CeV8YSsQ=~i63I%z*lir7z;RsIGKuD*gRSUAU*JqSOC%q&1N;XA1&O)mc -zzv9mf)Te4h?qtuwF_co!;*VJS9}g-@L-lajrhCpQ-t~xn=jJV -ziy=JOJ@UO-W`q9QSj5eHPRPQIg*{#D_nJ!jiQJ#!Gqw1xMnFs6#Gf+#1v5tzYZWxS -z^cedjLhh#tdS`5oK{<(Jfrl@cjs&7>=f}t<%^}#qs$K5OGIL4bAK0-3J1+boyO`X} -z&Q<~k&S(BZnnT!RAF!tjU2Jf9<1~Jf3!b -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 -zUyAX#Q@4%Xws -zW9uJ$TH1`?{N8ixUwQl1|H}80w^MF!hT}B7$JF}GI>=yhL^JMoVQXef -zZ?~m);Tf+ou6%}pyX$^ys7M{k72C;r1mk6 -zkEpjcN=Up+9aW6=DO!8o{LejnOE-U5<=+TJc9hdwt1bn{y5luC^Les>eUK-CtSNyF -z$4tQ{$eXd^v*DffiW;CrP5x({@u+KsGgf4Eiw98Zk{&ucCs5mwzA4=*w%eJTzk -z&EjNsQ32`GtR|w#sq#M!6$SNVZK2vy+F)J8th(ADS8d6ei_BjCjCZjEmGTX0mvi}y -zXf9v&>6K#!j}|gC&gIjeZ}5Ud6&i(eX0A48A$9ICc{pp)S*36qa(!|#sq>F+=K*|! -z4>~Iqy{ReKzU1ObcRx7)E%f)0oN^^q17tVh@u=2Jif74ePRKgx94;N*2&N#IIcy2K -zh$dTt#-_C;!2b{wgh-NC-hBqMiv)!b -zgDQ>^KExX4V(oD^`7V8NUwfS1OjL*HC9L%5Yw!K#_8)MDbzP6ryHlOnLUiZRI?nkt -z3Inw|SL8+#1D>4-0hC`x^O>=peSqFgyMjvWAJQE)wd49h0%XfqDD6uFg?#E9;`WFv -zDN@kspW+SgQl0SzJD_4Eci5JO@bmQUp^q=C35}%l6pnmaEd!dUZe{$T -zJpY1Fd}cHVbz!H>Hzy_Kl)vZZx$IT8uFbTKL>urLE-cjI!)+0RgaRGk(*s+K1)-Dp -z>piT-`1`u?_DSpPi?`_oe`qiM5siX7l0%Q2XKBfD=w7?&$_^had^kVNd=jP8Q4I}h -zmq*#+&R7kS)l{oH8-XIgsEOhrIrp&$lTS{tSU~kk6a^- -zCyWsv3K1U)79Sc-`pX{cG>Q~UYO?TaL=E(k;}IPZK;taJ$z1qVxFXa-oNBTICn(4nfq9QI{`zpbWu-FmeyJb^OJl-DIY2w#j9mJS)zwZ -z&r2G=cH_wtJy#mzd9H+p6O*`>$CNCCN@cn2Qucx+s)eY -zX?TT%Dp)keS~iHU)h5j+j|`B{cyTre?eJEyUL8JK_IJUg7Ze{T@k`0Jen72NY%`S< -z^$-M92#VIFqbB(0N3e!X7J -zO%xJ>Dy|v4o*l&ME3Vy%SX*&zIACrdzdi)jl!P3?qsdrX72Pt|)<@K!U{5$!P~vea -z$6#$@@0R(FhYPW&l4%H4fC7yQ**C+WB-eJjl?{-^5DH?6H0fZFU?EBQS1#3n$c?N- -z0!7_`FO_W63rQMb4piYpK^Le#q^@(-NoVZh{K%7Ep+pt@sWOQ+Q+t$8>AYl{ -zsmnr@*o44jF9h2QG)@C#6lMs)+YDV$ZR#?Ul{aOM2hQ()zCmMcE<5McAWyc4>QmZz -zQ8*U$5e4qUDDa=h(Po@3&V -zLJmYzi}QV{Mo?izJmmW{*}n^Ar(S5nvYoV5(UMltucJ~)D`wEHcQ0QG9eTPD7ZgqV -zb6_;>&OXt!H;3{iM-<#JDu)^jHB4f5N&Hs+s3(iueUox1p#m>#8y1L_h~u`DR-AVd -zG^qT2A&l0@BrQ`p4;Qxtt?>}2>%=0IGnLcP3JM2(X}!kIPSDv>x+9urB?EaK3v-@W -z98CT-Q<~VAN>tmIY$0#BEq=l(h!3`T3yE|VG?Ob-UdiU|IE+puK`5eL5L|f&n?P2& -zgZ)E_$Ktj?`c*8JJzI!*rljJgEJ!2007OOMH}Z|zROf3^sli+%87zloGa#Y>*T({g -z1bs;nkxZHyAa}$W5<7VmxiCZaItIdh=lTf2ayHJ86>oOU5;)Wxa%SozoAc3Q~0T#eH;AM+&mw9Xr%+ -zDv6Uc;3TkjByf{*mG(HT8ME@y4VrOi>}0Y5_MgsRm&?;0E=#xd&P;V*)0s)in6t(; -zDe)!23RFxOoJ?8GEuz$?OAL6M$*C<)wa6LBP>4vJDv8Bf$S!>9AzqWCp!9A?4A{e_ -z3UhqFq=E2{8yL%IJfg9f$@^RJg>e@v8%}@~Gt{(i;S-IivWU62)2s02yW1R;-XVte6cAkN&{rzXK- -zkSwGJ3$rwqR20yOcFja{a3-3gwIz1(*Tjt)<3U(%s}5ki+5pg1;(n!ZD?tTg0Xs|GP3bFm+!(!26k6Jqi|XX*a&ojwL$g+ -zzj95!xk?L6uH=+amZ$R~UXX>T8Qds35gDY^Zk>hvF(vTXydQd7{g>`VgsHS)V}1rU -z0<|IUeM!}`!dB)}`t5^4zLhoH;)v#`J4%N_*AnKcH90Yl!EkwP2cFDu0dai29vbIo -z5)RQzN_*#{@M@afq&3?Uk2IRJ8<9#I0<&9=E*JI095FYVj!@F=?Dkvh?_H%-e~k6j -zzpJ`OmF`Z&Y&wTm6Q&lFEHhJ0e$a)Yw^GS4+J#yeem8nquLmMoNbIu5x53gDrDdMP -z2P%y7+L=KOd@aFWwf;3q~x?E1~48PcV1ExuS(;Sx3@o -zq4iJ^WMwCwMFsPZ=oITlVGbFqi069p;O|QI82xY33CBR@)_Kw{NnhZzEN+%fNx5t -zN#`9+a*|uQC9HudsM|16FRbY%wyDTNEFN9DMED^c>{0}0#WkGaIj`MVB}ruERD4W+ -zQB$2xsTaDsCr30R -zQ>AT*<^w%bi5$Yh16sbN#};Ud!^lu8^FbAu!G|rqTjG@+OMW{nbH}hca^bLxGbR9Q -zckx}4Fc$33UPd*^opCzkaZY6_ac)J@ZH7HTX$uq{2oCF-V}q^Pjnbj1xY824kHlqb -z>UJhdY`Sn1o^1dJT82wXhErj=|QIZbqNKWizTVutB-1#om^B&H|s0clM{K3sU!ep$D(z-t93App;)6Q?})6x -zF%`Dt)=B@yi?K-hHyr*(mFPL2h#JQy-Z1Ypa(9qq9Ep)6s?NPnp0H2astew(Q{tXv -zdx&&OtCqx@s^>6nGq$BRdQ>Ato=P -zDJmhzZZ$xv%yYG7K`l=55w3{+ccEBA6H1~i1K-9gtS*vfjj1%F0`C5w;~Dttv`T2; -zh#H%9ELMt1&ukjug*Qks|HivE41}}RO6VTd{=)W9>bd-yAM+dp34t%cTiwX7k3@A; -z=1Em4?Ny0?@XI0<$Q0OacHYnIuQiiPqa<>0nqbE?!w#zx^)TFw2boQ{z<^)t?0@4W -zC3!H)rIC@Td`6>C%o1rvoI`Sz$&x2Cnd0FG8Guo?GS|zV*q#JbpB?=qnZ@l`EIG8; -z|5I6E2vZr29K#AbEv?ytc@(TzC_w>LCrL75jr-w^It?t?vA3veZC30%QQI*f^LPi4 -zW&A!YKTKd>D?H-NReDC+U}_JzCF0L$K=i3(9{&_RL@UNG(%2n16;4;On&~R;PG)CB -zL=)cwHC>Awnlv*i+jcCU&5kL{9_NeHjx^#GLAH@r5@Vf%>Ci}3az5EHxd98!HtJ4Z -zxy5q`%||572j&K-?kJib^XN5LNE}*ZN)D{r*fWO8>ebK1uezRh2uVbT?U-#qu -zrF=9f0%GE-^f7T2Jz_tFqVPMRO$rj$hV?yKYC~%C*UdN!lcWBWH0#C&=5Zt1)rZju -z!H7(wdC2ZF(w%h`WBvNpOeY`_`7YK6uyQ-* -zKQ~}ewk=qo*6If3c8o&$n{Csp8!Gmpu?I`G>;G!WRw@5nvJB;IC5y+B-A{c=V|}cv -zNF2SW#ZS3l9>uyQ7t1I-Pdoe0zDnBb)!$&z0;NLzZE-$;39YauqQhdzNeKW-&)(*Q -z0cp2mv|+WB^~5aHnk_O%G##0zjpv!l7v)hz%MQh8Fxx99W8lB409L2ojvkHY%MLqr -z(xsl%wZUewKnofs7dp~a9jJQGITP}NA(0_p+>SoPNs;bo`%87ozdM_DVjA|=_<6d9 -zD7ZX+AN9kI%k^3kMTa04L~iVLU+t;CKt^KcOnG?vz-O9sf~zbzna8k<)G+0dgDDGZ -zDA`NHhhX^ny%J|GEO$DAW+aRbibawJrzNEJc`9hF&q>HdjVb#*E+ik5!jinbo)?mT -z66IVbdo%UsI(o_T$P;J@QE&hPTzG-8!TuOU@E`0#`n(o&3FbPDUn_T9fCaMtsUbDTTKF1eePyT7r-^muh0ptG$Y#T8CuOR+?e67k^)q9{VpVr<@PisSk82NCkzqAtzq&qR#U81^P -z*jG;d6c=fv*mGVw5F@MUL~V|e-kH0&-JN~_>&brshz{*C_;6hdic^b-n24d>e!mx*hjvo!iC*EjA5o%zvE -zyT0*S-MJ+CS=TqdWZ`@u+V1+s4VH68^pmb{6bo^VkABAWjT=qpu;}e7`5WJyat20! -zj^94;jY1CMy3Aaycs$Kkn(6ex0w&?dl4Xlv7~xd|AN>XDyoI{X*5d;OlTo`bkeSvF -zE*M7|?)j!iv&wkbaDj(3JL|2)OIz;OTupo`F(I>BS6Z4a8g=_xMfR{1L$Wi%Lh>O% -z`Hbi^`$8o<9LOFr(2KtHfZAzhT7X8H738{bjprLR>Z|256x>0PMnIN+2!m`S8WsFq -zibk(b|0!v8ji^amv~)?mI2jWpQPkIS)E7)ItuE~pzkTL9>`DUCH94ZjV)GGx7gBVM -zc$bHAfUGahF($3X)(`0G@)^T9JwDIUy=^!UgmJhlm@fLjHcVUXU8TC$mZGa3#_Xs! -z$B|Lt5((H(^g+&V)(?6}wYO-}RVm{j0Z6X0nVm>wBR?#^VE_X9hA;Of#H4AsSEQ%L -zP)w%M0okbbo^Alj$CvYtb6$PG`7?DmN;i?H%K-)bF@t(h8PPloZ_MLj%V#WRuVHRS -zAvJyn)s3&S$0^GrhjSXC%^84~e^3mhYE9k895BW7okJ5>Exs2D)WluEvOo*6DKw8- -z$in^8ec5?nCwLj4&aoci*w*fA_Vto -zP${s+Fo50>NKZ($OBSJDm^MYFhd%a*W=m?+Q0#)x16u=JDoGB$f+|U>h905%h`+#V -zW7I!woBR&6w6UH=p8d#RPHp45g_Ld-+DT5fm$VZrNK?*I=5^JAGxdtgtFqk%O!i -zsBG{c-7*1b^?dCXRPyS2no*6Aj6!2OhW>vv)5{5~8t@4Y1a;zMV(6psHkN -zmIZ4??0=f73G9yGy2Sn`G2S*w>losr6w~vu{zqu8+9OPD5pBj!&S(ETh}o&PUgdN` -zLqMN+g`&1a@84#l`iVME*(PHuRJ1mmxm=T!j2mryqODA*<1due5+8P|tTs5CDN_Q( -zqQ>M{)R-KLN|a+!J8~>)M~+49$gu@>8*ca$xTDbjrsBJt8kV6?R%3Yk9DM@U!Czq5 -z5TP!jx%O8TtF;ZX&(Yim&D5f1y{iVrCUDmmEvy$#cQ*6&`mhrbHS>iN`~`GV#@@$W -zuXSP=h)Hul*Y%(y1<%Y!E(W4P*4~1ef$@Mc=pEGGlV%mUyP~{KL+!7-13Jn%)MvSg -zplGCIiQP$PLz$FAk{%0pB=XZCT5>83r&gRE|HpCF-xik~Q{Y%>l7@)JMwxW%|1h>% -zDK_%jhm@^Xn>&EK0mifruVs&+X8S(5%AEcRMNF=mSR@VZV0!r(_thr~y0d+GqOFMh -z;Rh5aHk0ZtRBMP!H^F37B8j)?sp2W&G1Rt)bA%Z`c6ok$?)g#E`(a;dZZv6;+oIx; -zu1v@j%$aK0jen#Y=jK@&*LS^MOw@7^!AbD%g;9bnJtw2t!EE3mCr_`TgvpguTiyRl -z*;=v)>b|$0fLPpwtX>h#sWADijqZ8^;>-~?Vb;K6NmMZRps;C|^feH^`kBccZ$lT| -z@dZ7e8BdkiZTkEc4?UaR9ulYraR=3Rc(K>Mc{5c7y{SeDI2!`S2%ElyuW>z?QL+a- -z2%C^MjjAONYc!Mhsnt>W>tz}lh9^&KrU#+ICM;-l4pz&MsFyHLn41UghG}RAI*}}z -zs=d@*iDgnH_7Qv_6aJ71=t(i?DQamq+gFI!^jeQWYrc`zX`_V<#?M>Y7$5&IN?mi3 -zMF=-`vZGUNkt7%IOHn_ah5Uxs=ra^)98=Ll^Nr(5*m; -zANdH0(9KkMEv|qa&X?vX*buTEtqby~4p9Ty@g!v)A>mu`T2M#A-gW6xos80Pd_$gv -zq>0k~xSL-E>1yYG@E!UNhUQx9$Grms6_SA2Z6HqqSX}~(Z};xfXkZ@N)tCO&Xz_0! -z4V{@RsX`lNUy2azaUrQ@a{UdYsF|Gyg<4yw2BiW^b+td~{cG)|`j0;PXg6vOg^>)N -z!@fCy0jqH|?bX)bz-xmQEet@Hgxg=g3>M6egUk-K@nG?Qu-X{2{kZ^i -z&o#^^Q{SMIP4z4#U#|j6^b|~)>vVQ&H_H02)0iP`^lGNhIFfsC*d&8J*h0&ux}8%Y -zP%?RSJd&WZWe?q+9;jFg^|X$93dMSR+=R&>_jh3VT<@X!>c_n>T4x_*0q>7i2DE~R -zsvh^o3Um5Yy+#dK)&tJ@QZ+VOTOpb^sg&FpY8IZyzxK*NbXFg=KWN}@3@Y|3pBp$- -zZ%;Bf1NiHMigoyDuqU-t>7D8Zg(BAYZDE5;5Aq|M=q_59^8xnFihn^53jYvSBdKr3 -z7qCP5vOIkCrZ`9LmUq~tZu#=Ruv-R@=iYYhPm6PGT&r<1mCl?317onoL%(c~q+ixT -z_Pmaae(1>-pCeG;5X^F`c3}Ff*b~rwA%O=syA`1TIRfNgGQL3h*;k@y8+z_lfb_Wn92scY26VABc;jlq2iWk -z`n`%bm8}rX>ZWiT*JA&yO==rwSaqBd2H6;9#|)H_g(_>QERfvg!tmN^jdNoqd+xZfk{z9?TXd -zWZS}F;}0b8ecTn{DpgGD_#Ape`CRo-O^mU2T?a;AidT-|C^9l@*lt`=%C*{bPF2qLqb6fJGu8z?^mfC|oL|V(fe@5)5C_8gkCBO~ -zMI#r3-oJb4l5E4tD^hN -zp>OU@V!@TQ(d!HM?!H$Ro$F85xuYQYZ_7%OZh5MvO?u!$MN+Eh#De^{we(Gq&}t=L -zi#`1T$%4B~8FgKckw{2T?!k9O)JO3#kvhIs^C5jggb1+P{UZqrS-sarP5^GvAc9iBFszMiMEq~bf4KW~=wG4Rn{_!N-MM7WZi -z*7;bhOuDhe?uYCgLNryCeR@7^1e`Re#v!VW8i>W5gXpjYBN4yH@6YLXxBL4g`mK0P -z{@$W}jh+zebIPR{(M|()oAHm3NF*6OV=WsW6@Y%(nPybjj7FggUx5Z1YOJ-H9gUe` -z2iX(PCFSa19#6_un#B`f<=tWGQgXf(iLfIzD4Y?SF)v0FVaHI#+U#)gDCK@&2W`e& -zp$j9qXhrT4brdJl@}Qlbp2yNRyU-D7F!xY@tW47V?-H|tmCA<_dC+;H-gRknnD`d5 -zuF|bhqTbqsr+z4X`GasOo1dm&z4W~VaSrtyQ>D;r7ldE9RiH4t4L -z1R%e>)2r3tAJQf#1z*+;vZPv@Ilc8br;kd}aeZY?#&{GWWu_nb_#Ibf-hGp*miPfe -z(0r(zM?G?-a-M`O@C}g*7Jd)AB4s8}&dgnq8Ru}}O4#qrPMvqQO^Zhi)+W|_9;?2e -zbD{#eh$gUxZH#pT)k=&J>4ijHt~uK_`@Wuq4qV|N5i+#5B#vB{@=oZW*@7G?_eYpX -zd#o!V{ckGw+!j}PzI(%6xh50|^TMkAQ8*QLl-a4xMlG9CF5Ojm607pHExlFwg-g+- -zwQ2n@{+g;($6r%(L7VXbwe)(5Yyr{-$=u?e5f;DUQky2X1hj%jjZbsuFoNdL86o9Q -zQ>AiVfXZ#F)>i4fV=8IRu0oJL4JrlEc;u_WEht5BA-U&06wa`vqYT38mnG4RT=i00 -zNsBQWWiv_^2%S{AAu8lkpjTwU3dT%gt7TSrHIfWs(8kfX%1*rKYOPtHW~53Ni;^e@J#6ApQ5I#O7ns_M-u(1Hk((@Qtwo}T -z8^#j_t4B$7u3vI)yHlH-`-fAVoZBJxZ^s$P#}?upQM1T7fc$5(`}X6H&92*=URL!) -zEj`II9^Saf7(nxoETCpl;mU2wx}+PHDg5+skqvh#&>b3fnAOi=wR8R^7rf3J`m(b> -zS=pP5wVP1`mvkuSsTZ|}3ns}@4oT!@k2@n6jy3DGQVkUjCilpGf_kIWy#{prcT(Ny -zXthZ~2pzMvkms)jjh62Gw5y>njKE`_5-n9NNtI0Y>X($?wTWnsTB7A9=lYSEFG_s{ -zzX$zEwIip79wo-P_=rh39#5yYvO{UyF4eO%X8Y_&oh(IzJ)w0Aa(6aEHXsq@3!dG< -zrJ6%72Nc3STd8wvYRwJK8I7e#-y(@mprFUOTz_)ndHFphJo(2vSg@;jL6YmRm7M0q -z7{+eI1!>Ygj216mkOvOvOF=_zyr?G8HimxzDVsQrl3T==!b%`UgmoymPLD>={p?UkoDz4H7f -znM}FqqA{s1Dv%4j}_biGdZ6*ette*M1^)J)jy -zx(8i#)7>#8VK{nDO&U>0H9qhfi$^g5{2ZOOF_vl@boPM{jXgF9oWP2*=EZ9H3=Oo3 -z>p6)e*MqkB*rz_#0@M}hLgu$`#WZ6h*M~&Ab0;(k-#hO^iT}jzBzm?^^$z3Vdn4D+ -zrQD14HIsXgn00>p_X>w0v6OCP=!LCC0XEZ6pey*pBJ^5YdW$^$gpiZ3NmI-2*W7ui -z7fwhG=Q#y^Ec<)f?T^@Cs&F2oQ;=)sZj&33VfN3Rpy7W~vJGbG$u!S9>yTTYbay?W -zdd`;8;v7Wo=}lp(l&F;DTU+g%kkUe)d=upsAdb&&cupu-GKT!}sw*B8EAl8zUvk9l -zM81T9?mYkJDF}L?5_(`vuM{pGZR#SLQ-u<}@haEHcw=3FfG>ozDqAp2_>V{*Y8Z4C -zsC}tyT|bifs%uqGe}S&*79f@I3}MZ7s;ob1VUQ&7nk|@ub|Yh5HtaU17_YJnMDL%P -zY$2TjJwGCYUUezVBZ0VGR!CVj5mr6-bYs)fGF -zTgs_-Bi+P+J5xDblx~vH58dJ>>XMREExAg2Vo*}DEnO!TXe6c)2pANVu4AmZ(laW? -z!|Xnr(z#pen|#;9j1_ryjaQk -zWyO4s=WDP|B(@1QR6WS-)WnWNDa>-bP;^y-Oj%1>&UVw|$y?v&u%P6ne+@SpHa#eX -zsf#$?c||yl0*!#%g!;}*uswF&w1BW3CLW3fj!K4L~uJdf?Y5uH2I3%19&R{xA -z>h$vSyO+X&Bqv@#h_~1#_*Oq>|!6fRPevPKnR54GwXg8fR -zla<3HUPbE<-U`JotP`tA&-Lvz=@l_P3eGFabdJ@OCyM1T^YAU|uzFkqYf$}9IXf$X -z9i6}$$g!6wbrL9&&tG!&*MB~X{nc?E(@$)74uQOBSznA+0nuKP9=(Whs%9yQox|q?}3OFBkFde -zGS^gk0Bfu*i(p4XhYK|}vIC>>fRkMit$=8_ag8QvU%vnh8Z_Jw2AaUV(Xg;9*h$d} -zZ`@cL>)0{m@{6t#9)HnQ!o$x1EC9m}Mqw7FU*-WM -zh{&@zjp1_S$kJd&T3i~!x!M11973CgY`|D(Fsc}$gZn3mc>&9fFUC0ElGKYQif;Ad -ziJ}&LPa(Bek>yo5iqo`P>oe*JPOFB_-K4CVtJ3_*ol=sj&~ih0RpQO^teXi{i6U3p -zQCrSbz7M?zDoDky%~d5s{QtpyF5X`nZ*YUi0hl){BJpyKod=FTBge3a2l`5s&=IFJ -zn1JHj`Myj1VGztigSmb}FO~GAQBVdXje;B2 -zVCqpigJFBV3spVPPT&W2DwM12QOIMLsr;B;us}XyfD&Y^uS*I}>AWzaHX4Vu^p;pO -zog^MI*24Z=DXG|RWH#laWJ;H6T_E43Sr^84c`?>SR8fSfCqhhMDulB6(y~g_a0Di3$fHxWwo3^WFiHx%%)X%>)oYc9!o{ySxSAiD|Mz46{|}* -zut=68>L4X6vLQLNlry7sqzFrLbPxRD27|wIdvFLm^{hOD*tjkS>YQM6HL8_TcNu>y`vGPO -z=+=MQ<-rCiv|2kcv8Vi}vT*I+`9N*N`dWv+<|m)>3uS(X%1dr4s1&N7O`>XsHkOd{jvY3j;1_WLb~&hFJ`I2zHI0)Cl%Lp@F1#$@01_o{vGI -z_-!MQda$7Ap2vMH$_Pc3w6de4N?N3vb!!EX%hOw8uPbg^m5PaZiV2cCsd!_sn+Bp{ -z!}df%j3427PE@*{>lc~cj<-Z@NUcTGI1bRkc`0h4mK)VeOr;N`lMwi2D(MhUY(pZ+ -z@igjaNe8c_@hSJ=)ByqM#NJq`&Ra(|%BBb`Y(Os)sO`ULS~1rn5Y*` -zU^vz>TQyW;OYCB^Fyn)m9Zbh;CD^2QG1e|h_Fi@11G++rwz}`M6S$@BaxSR-3Bn%F -z_CJJ?>}<*wu0Ryo#sYnz4*vEn_Rdxp1UV;wc|c(p{0%N12{wbBcQ89sy6ietN9<5N -z>&xu0(Hl*ba0r77To)t{d5V`a)y>9ZrXa~~=fdiNkmqS9*x%i0L&EXkDchJplTDz> -zCeUOPXtD`3*#s%s?!Qj9J6pggzTxi72I|}w(qpV=dTy;fd;$?@5Y$tzNJ7QMKkW`kFiR}oGSTcn -zh5h(KueF&QK|X)N-N+x?q^*PNI+8ZBb1CkDVA&2OwqCCl;8mu?J^fB(cKAcBGCOK# -zb -zezQle<=gm^B`LfVT+?$7I%DWQV=k=q>8?ljZr7(Wk*a!0=#Dr@9$!iIsptjs==p*< -zbUqcm=fBkcNu3HRiGiI%iaEC@=cw~`-7v6PgleRh_Q2O@)D44LVMKNszcF;I$a)*u -z(6Q^r*(a?NblYrmLv^SYX5%)X4hBkkVPY7 -z(F(P~F?EBnXPwsA#XR~J-eg}xlD#m5kA4Sl?AU&(7XBB8zsMMSmMrDG9M?->vTvl< -zYeBUR6@Nj^U(*(jx%#dc`utnJ#VCZvJ?O|gG=)0YE2$5Pq1Mm;1MM7Y{}h~`0z3)v -zmtfZh5Ck71j#YbC`BcX#tKyZ_aVm(mDqh7msQE@3`4M;I_Bp+NsV^nppyC@<=<7YV -zucstGd;|L78x`z6AIZ;5NW* -zfZGAL1MULc1-Kh3%%P`QD!pt2dAy}Y -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 -z2KpX1E+;Fm0PswOA_XRhaWk)P*88ZxvWY=^* -zDcyn%g{xNPuuy_Ah6zzoQ^!pVpAcb~v*2FCEGQCZ&VjjTtO2USkhnI}u+Xp|D`Slx -z4V#*k2c@QS1m?Ea3)IIfxh*l@6UIl5pD->W90iIBRxB+jgb6yErcM1sO#JJ%UzHDi -z1R5A>Lz--3Iv6_vx$9`uKYLdHHK} -z>Ht-slKIHV1-KUg<*kMTybZ7%-~s^DoZ=aP`2fcOCIV~) -zCjh18f3_184vk1@Im~ -zHo!%I0RS%mSO87|Oaa&dunwRDAQ0dQfCm7+0T>VP2|zx;Zvevp-T+tva2{X=ziFIcLHn%$N=~Wpbx;)07(GH044x@2JjHT6#!oV8^9cZCV(*j9|Eib -zZ~zPfco`rK;0!<%z;1vI0M`IeZqEu}0{9AGB*41>SpfeA=nwEbKnlQj0Fwc>18@L; -z00aQo0TKbe1{eqMPk=Q5{{a{Z@H#*`zz+b?0Q&$+0B!>GgA(*p`YN6U{4C&Pz{!A5 -z06qaY0&oQ2ZGg7{E&^Nx_$uJ5fc*jc0~P=afbR!4+K0A@QZ+71e^*u74Y|fzXv=O@KnG%0q+D{ -z47eC@C*V%N3}6QElYpNDJP+_Zz~2J?7VtfQ?*aTT!2bfg7VuiYmjPb}d0096)0n`Bf0Q>=l0Qdk5 -z#F<#BQfo9`Uf%HYfuC0X`N}`P+kXDH{dE7$FW|rV1^zF8%>VL7SGB(V`USzSKl}#B -zzk%{E__p7m+kS)po8OTC<`?q6{0;qI{%HGqdHZ0CW9z!w%vHB~`PWDO^_749B=M;c~poJlURGF!|jTjxEn;zA>??Iq;ob=Qa#;eAiNS=J<lx1e9OGMZ`T{URHL<3UQ4&0(KUoR{6Bkawz~TPVORaH~Fle -zbWOoL@qzCP!7l~=v^OBPY+Upj?TdMtPb(L%xY(YwdiC;*ypYr3S=I*>%YXmR^WJ%n -zysI2i+pc{y^-JcDhBKdLnH@X({<>?wu(4`)_m4w=SUzXm+5T5Io_IWK?#UYqGqxsv -zleB#rtN3Eeh48&6W8eMpzVDwu9lhquWAEH(KXoG4v1(TLnfys{RV)8_bl0-8MdLKH -z|2bWJ0-=cI14t~L0c%-;QGYsNQ$*Um3_ -zsp-s^;V&Ki^z#qCZyXrCEv+Kp^YO;T`*!{_Z%>VZ-}Rpz+YY>l20FXK(nF%zl<> -zJHAExSkCXtVLf%;tI|`KcOG7uRsPVFyg|Qsug+gLD -z7I1p*5WjzQ+^3$h>|sr8{pDppru?|_gUe6kPuQ@3Rovs-G7b;sv%h%j_}Y^JWDYPA2ptRkM*R~&W^7*rOd_7=)#iCKWJANwubZv3` -z&ftp=YO4xz8S#+OJA1LevXA&i)|0C~S>AO*T%BS1HgCZC3x03?c0Azw1-#~gx^3#H -zj8QA!?;Nn~Xkz@TInBlSGw#bh_Q|;iPo2s3|1qY`czSB`CtrN{)f;=ymwmf6-XU%e -z5BYuHzUsO?hr*xTmi*q9&qKYY9NqJ*_xE3qNj<;dz{)ct#y_0BZP$GnU#f=Wq(2w7 -z_U@_s{XgIQgsy(bk6sVjFRRAk_>Y}1WYD9_r%bF*9v7zhDlgO2UR<*2{Rb_LFT~E% -zR-ZXIXK&rHYI6Dd;WO<&>*j6$II;AT?N5y3-}pAue6tjJR1C=;??Hs<34@m@RSeJ(~B>L!_}hw2_&~<$XBt`?>@iKYu<*o*`>=JkBysG*ATLx -zSy|oxxtP6ycAkuQukK9bfq<{xik#cN_s%EZf5GpY7wr9f6-O2)O!(d;EWe(ADEX)2 -z1?hYD^v`>1%c+_6suu%ac-s8Z_vib3c%7}MWPHd7>1d~*vcbCr9CauN~O>uYblbXQWQ~HD$yfprKnV@|G9St)A~H$ -z&v*HJfB)}uu9vgC&v~Esd7t+=_uRSX-Wy+a$27UT;v;!|Oo2-Lo^a>FEGjQGZBAkg -zeNcMhq-!7Z)Z)rBH0?dwmuLvOtZuOC12<}vNX&=3bt>wypIsCQE=IG%>SooFcPY0T -zZ@!!d9f^(ADIB|=y>wB5n_psEn0bA@z-_#}vDT6(@{oPTI#V9#Ld@Y%;#ntLO!8K* -zj19M(^0tk--1WevtG#qbYDxQ@g!*?+3so}GHtC)TXvFO^YByT_G9uvm32RY}P{*Tt -zhLKfsGr7?xS>^HyZ|64WNxV+G$DP@VDJAJTzVWeGgXE;C`5Bj6J|s1Mrd4#_UH-YP -zvM?Y$`mVhBmad|v=kKhq -zI*rE~))JALaKyTBi;qrx$`qsZ=bH-4-yGaj_1vrRbFp4~YyJ7=!jU~ysp_nl^#)Pd -z@vO7@RibXKaz5Rvb>_0L&x`T`c=x;9qApX^oL+^(*6*`2)bcx$h94wUu-1z|>m%R$ -zf++qa3PHDH2P`bIQoNt0rt-X`Tsb>(lhW!@_5<@BM`&!J-x_*%^)B`1_W47&AI7RV -zZLd=uWPD(d=`8obqQeHdv#zy_8y|LP!qjn|<4+7W(b>y+Ikx2CaqYKx{4r&3NW;G- -zz8`VaAZu8>ZLsD@H-?rT_RGj+oAXE6wJaOmWMv1}PTxY^yzLtOZ1-Rq=b&inI(ji#_{Tm9`BDQ(Azhmod%*>lb7v>^SwIc`fx-Z%J>HG> -ztNKizW}tpW94p5T4+9}iSt)&kEqXdjAcd9~oc -zp%j~UCW9GDNV+@~e-^V&>%CJ1<8!?dZN* -zm{fT(>OjH>c;CT@kNfq7d5I$ihV7nRfZO}Wt;2x;(uradF%|F&8vkSG8u2kG|D#f2DK9_E_(uj;m?fqt~j7@2p9#dX&EF -z9476ilFzXZK`F;0!=Go&89w#Y@Dsw5ldqgSp}q2Ts>yT0(a`xJDQwo6Bc)TjlRM36 -z2akP@JiLEb(V?o~(!3{Qlyi$x%}%eovFgl_dpEM_SwnNYhT3G!=WWRJn^aq{#9Hf| -z@;j$|+`jm;x$7GXW14i&H!OC$@RFEVgp7ZlZ(;t1GPPr`PUQ`E+2yqb-_c09za(Jt -zS-5t8yJ7C-_4cZNaGTBx71k=$=3lrw`$3)m8$#H_rUjbbu1PLq96n-?w2e&C{J6CH -z#LTkd*AxmEDdepIS_1ayJO>eDT!^>@=J#e$%QpqwTgsstR -zdG=?R>pb#8PwOa6+GTBoo#bZka^TTBq0Nfzs&B9Uk!p5FySOKCZdDR# -z+8Mn~m$eg;l2;f_88hqixkwCKaod(I&G&8AX{N3t_qwvu^iFRbhpTyiaGif;=*XdI -z*H1L7tSE~0yrf($N?v?sv~KId{PZryLoM6YPfBhzMMv>9Ov;xBSchFYG*rF(s$W*{ -z)T>Gy+vNQEw~0cFtzT<;q8xl)=};OL*iAXBVQ4n+^p*C^l*4gDbjN1iTe+gvml_{l -zJ*{g((DniE4d^~w_r%1pOyXaGkZ~hZY?|sRvfDcz=YDW8!FN%k*k0_^jv}8CmyPJJ=o;x|Q -z?Okx(hKy0|lu_MgtCaRnVHWC7csh|CK7aSA+NKTHGu;XF(+giNzVW|YIMJ7Zpa -z6-=aisadUUc=8lqwrcZc(d`2-4YNKtZe6mVWfcwQN{dn3lG++Xn4o%bje6iwT3$-C -z+4+lWdIp+IwHZBo?%PwHp_A|l!w#$uFPfG(u6`G0&b6-a85!2a#R{LRkNB|tbr&bR -zkDwaa?@CDWc=KBC@xUt9>#51 -z;Em;cxI0Pdfd8KJN6)L&T~xS04$3|0q^7F1XRdhM*Qqy;3|q7OjHLPM&>Qud+tP|o -z7+DP)1M7tzi4O6(Qm3h~%=1e|rFieP;OmoKr?|{Y&~8tsp8Q;~c$lT~E4xtdb+2!3 -zGO)Pc#_r}iMwomcj^EC1$TD!caCgu1r&m7YY&>W=*h`~hj0)fOV3Ffq#y#?sSkmro -z2@YRo%-DU_*`TMf?ZEJ*9vj0(H4|^nAg3R|7a< -zHm8rxI8?M&#eM<*D}((gE(y!y5PE@Dca(Q=0BP9lxu(K2Ghl?X;+@ -z$n#I~ja9Z@7#Bb8j3(DV6Z59?>{9F4B6j20hTDGxK4^K~bvw^7re^ik5rV`8+<>&= -z&t4yvt>;~PF;cW2w@eor)MHOLHbS(rTF2-M -zRh&^1bGz~uv#}ex74UuG3?|F7-7IlAh*eRuZ23o=QN5%ZbCaodttu4Va`j>g@c11}2x!(TlRr4>p{Z>$c53$6u+W_G@Zh -zRV8kE{ecaO8Z*Z2<(6c=@P1>v&=3=}vS`$ecV`V2 -z2{Xf*wa?57i&J%L{W{cN){PIjRQMl^$%@K()u$s -z+X_>Z9>#gy)_kKmy73`fRg#ILlL|j+#BMq_IlVE0k=+gl -zcSd~mZ?i69U)K4y&+j^0JCoweDxRrv^%cezj}Hg+j{{a8P@f<@+GZHaDz`g$#6`|(4_ -zQA?)i81G|3x)07KLc^0|a84UCytZ!3bGr4Q>+-15_AZz9lGGjV>J#o{s1!auqq`|> -zAFeTAwNbm#^?-<%H6rU1-5xr^W-Fr^K8@t&6_-_#!R5cVT_^>`yIyb3NX -z*jm(_>lje=c9~TS+1n#Kto&o`-0J4mp&u&pDw=9zH=RltKKt}0y}|pFMP;!C>~#b5 -zJgmmT0u`JVtJF|KW3{h+;>;-L^a1lDJ{H@0m9Jb0U!IVt*R?oDBX$2Vt%UoJogtkb -zdz@RXm)Gu_5l(eB&Gw@mK1MBAUTeJ5t3vm-@uu}7hzSMrCKR;AD<{`iEspAZF^gAn -zQeYh)6ylU@LK{wQ(^FGPSJij+AI9QMOGu4q*-~hIBqd(Q=lpu3DR0UPo1Rx~I#~R< -z(W}0-U2kMz^Lh2usvd*&F)UVmc9f_}|17^;t9xdv6@Ag?ux0mo0eP3B+`3*lsZrir -z!=d?V8CeI1Cv~i6RS>r8e-@*+4odtf17dFnDOwdRR8dR2uUua8TxnBe_CWhlt2IVA -z<`2C^-=e;2_1z)!+nd$Ke&DLsZFd@Uz?ex5G(q%0|3T{5mYl;HYM>ZM+u4ZRE%=SiMpCo0pAV)?x?SSv66& -zOs}P1+qRiDxce;2;uV9rCU!8Rm^RN;(Sb)^Jld7A?++oV;S!msovwg$xe$xpc_#;7 -z6Yz{MOyPlkz~ilx)3>BfX~%srFkW;`&&$qsQu37LnAY8sChB);8HMK>PCM5)VQP=3 -zl_7J`Qsbq%UDITQUzj1jPuLx{eX?$-qy03==-1+q -zJ9{mo*4+3A}hTnMnp?e!e@@(zDz0k`tmE+KMM+HWCliAtQEo^8-qS> -zeHxIrM&KXzVv!$io+7^!CV8D&q3Ru|#o|mm?&JCNq9gBU?QJgi{GUFP2AuP4;%~C9 -zEyvhs9UMK!X~Nvu@gWiRjov+Tb=Ask-Og;YOMGy|s&r4{Eai?ZbvVg_dqhPMQQZlXRk+-Y-4#D68_-pTS4!TNyd-PrlR# -zJkIyUw=7d1*lsWze$|2*`r^=m1us3jIBh16TAsd)t9gE$y#5*A{ru+<`5isCs;_?8 -zB{=YPzH<7vDT=|1hZ+v`r> -zG0t9D<&~mzEBPj&rd8x$tv}Y|^5QR=rTcbFxzb=1byeHUro?4I#igB$PZw)e9V#By -zwzJ&sRND0|my^n_Ex&SY@UYhv7Ale(YXZ$Hi)+T-R6J`Oe=5OjYhX{Nz1h(eeL1P{YWIPtla>465efT0MjTAc6YB2{8#rPwu3+|_&Rc(M -zT1UceoU=q_vwHL5EtMPi>!bI-*f8_`y>&`9tKzQc<;Cpb#;tPIxDY))vvuYDhFh`Q -zE1Xw59`#;3TAQ}!j#xeYQB`sp=G?AhK1w%_rv!b-cpe^kYU=PgCxs`5pE!ACa_Z}q -z+D8e`O;SSUhaNe@VkdV`Ej>sx?>rp&`PiYNUHkJ&gR63t$2>W0mRfXX)s1!8H|`C| -z8Jb1UvKi`?xq&yopmvhqIW6lY`A+YY&&Kb=6*jKVJ+IpobHQzKLs25}B{Kf=3w?RV -z)XFvt&pY*Mi`Om}N@E9pa=?=N`)lE|mvar<|4_AGFFfDGtyNg7F#GO>{5Sq}51Jl^ -z5nR1B7dVV@NoqTS{rFKcY2?fk-Af-XFD~=FntC!stZIJarqE#L$rU2wVcJ@(lrx{! -zYF8Z?TiG_{Q1F(SnO86;RF}=VmW)5e)ZSdSXb{~uFMBOiW#RzycfD9LWc9+1N2ZT= -zt>vv*d+PzMDYtTqy;~T;koBxZbIm;0us_XS)~Rb3?dV1Z#_cbF!EB#MgPa9gaLZw;xl4tDVWKngi?&vdJ>G=z7wH`8Vl{{I^ -zkBV+uUT&gsDa<;cTz%-F;4HtZ9HpyM>+_RsErf}0duqOJedXg2wV;8bqj7eM-RXg5 -zhAEltS9FKO9bS1ab1c=jcEz;n@c8XP6T0XI?+3)}+3FK-!it-^-SuUzg{Sk7ZWY{k -zyR?T#Uss;{vhCpus~P$0ocE6QeKAF(xU|E%;F_&TO;(|v}+D9p^GV3m6PT4>4=>+}V^TXL2nrcrG -z+%vDgTzHy3|M9KGvmBx_zrGlA$BRBu(6H7@tqlM4iD>iYRfaDQ+}`T=A!}93f+aLp -z94&Q=TFeAOP^i6Fqk-qmno|b$thqSaW~#}lw{vIXCxv#dKQJsIaavJ0W>@{V -z@UClfimfwdRDV_|_GkMXd7rRY*WQR4;gOWE>#^SJH+BJI2EMJ0@_gcTYx9!E)6YxP -zHqTp@_mtuXS=Cn+PArUjh~WVMDJrOSWm&-!M8+lm?F(W)*!TRIl!ePl)F-1x;~f#+U2C*Y>)kyq?sq -zoiOY3Nou;~u*DUjcCVCgzFy~j-@;%Mx0~Je!6d?wy?s2<$snuY`JTHMaz0#nI@t2y -z#xWflUI%UYDvZ63MX^)J_Y$`4Ce4`f#lgV&?Ct|?jXfJZmJTO2j|xjC&$u~kz0L6f -ztX9i{n3b46o8m(kxxX7>^K{|o*YlZ)f>p{BZ!Z9wJ(uMi&}o>;o+9*OgVfo5oKsG7-!N&zkb -z;s4c2nX<#(aeQn%W%HLLHb+*1O-CDkT)cR#1Ic0GaxP`fRN3+72a%Ut(zHi -zEZPk6;&3q>0lE(wZ58sJX8ET^kZlskx0-w7wp=!3>1PJjZDB*$t!!uxWC_iK=7RsW -z5COu2S}Z`w7R_rV2(}XQc!=-BlPur}LeTImxiA~48p$h$LZBc>0`Y;=JO~3I1_vTL -z2IZv=Nw?`c1K#$K6FB7aNU2Vc4UlBkPbd(O${w{H<4Dc`z*j0e(k?_gF?F2^~w3Erh-rz5$o|r -zdq<4QBL1eN1uByrD9cCN+1uy6{f+PI?;ub@g4#zAsx4p8Rt%^?1j>5L`d7+b0DNg{ -zdwWVs36#_5_x0fZ!mfVoZ=RgK%>f^0S-*(;C{hgzQLQ0k{J+C4zHbM%uN}QI_3G_s -zE#Q7v9uL8N)jCL}pRa7}9gSz4)X2IEeb& -z{uYATcruBl<5?)9BeP&AYK=eV`>h=z(jc6?QOUS+HuL-W9w%o%Kj#xDo8|cEh!dk+ -zxqWj$z+dwJSM256nz*RGIWq3OeEY{CqEjJi4~FPG>W7|lkde;o)2-ARejJZjx&Hb4 -z@*z2-Hi-0DAR3o^BOg|-fBrsS4*2g2a`bWx{=t5+a`Uwh+6U6nBR%7YK%9@3#Gq#< -z5t<@K%rxp>1>6=yuSpz(;nt!@x&!bj)U>+d~t9KMY9+{%|DSh7FBC -z(t(d`9W?|#vRJCKWtCk_^QBP2K*Q1YzTQ7Sqt!y$IwfGZ-vGQ_|Rt}3b!1&eiYPyq{A4AP~Ls;8ePa1azO3I|RV -z8 -zX2cDIpyI)@@Hh}wl7$oG!ka)?RTkbX7v3Tl-YOT4mkV!`3vZVT=PLGx^W?(F8eUDx -z58dW$4GtRU1*9L4l_}!5vST{BUXvb}zLW^r0io$8Xu63k1=+i8hx%-pZ-LI9()BJf -zGa_y-=>5>|((Gkxw%!yc;EQDIqTVz%I$MOG=TF4VMlB+uFO1CB(z-?Hidulmh}g9^ -zguFe)3edgK^`b^^lL)jD2hi;yn9D(VSc&;)$k{JM94t$7;cn9la)cWi*%& -z2ds%+vnqPzz=2>!T)lcVn2500Xou)HFuNH}fgN0;!F&fMMF$7u#h)0%=(uQ53Ifxj -zpP!$qs!F&>6ebdVGasT47Yle29!A;>j4kq0flxdJr3pB}!5C{kPmJ_d1jd3F>@DVt -zWMl|46M40QG!t7a=0r^SHmyH9h9kikLKx==5$`)Dp2$xV0^|vH3Evwd@e}jFgzF2; -zfI9{94CDj>{ctg%=+pcdZ=omxeMN*s9D*kBB|tJMBTreLQ1o>VzsuR5_qY6d-*3Q? -z@WS~L442oJ3wh38%BMFEKZq~ka|HZlygsTY&kyr=MUu<=Tfx8Ahn!5`w(keM{equJ -zzyTu~`8A8nLu_D?2gX|<3=R?Vq=sH0#-**c7%(#>TVi!TYFeD)B -z+fW|~2l-`9UW`6Q-{t}FdCtzrd-pvpts&14t^_0Ifx#Wb4+52V{-7N>d4AOQ&-=AM -z-%r)|O<(-de)wWZ2#}h~5AIh{AV>5QJN#*X|5g9}RlfxTm2t#Ul_T$7=w~FeOX-Uz -zexWM4`hQVgD*QL8o*;~N!VhCsHdv8#2^il(9~lqCHjuV@$$Az^^XUsOHie)_00RI9 -z!xUmNO`*vkYyw~mFb%*6$rB0k7yutB0}usZ2-b+xfe(tHt5XKT1Nf5xOaP3TMi3|h -zR>mNV0Q{QsNFz&@Nc{N0z2RU9w=a)~gCtAq -z@aFQo1;9u8fQvjv2X(o!p%(y60Jj0k015#z0nz}H0d@eyxk`U0js|`>fCNAUAOP?K -z-~xC8xC1x<*aBDsSOAy-FaTfxA^;X(I)EX7J^%(l7eE_eB!DKs5CByGB>)JZ$At}b -z19Sm&0K5Qb184zg0=N%Q2XGsp44@Do7a$E_D?luO2*3dV3!sVcS-^&>08RjG1rPw( -z0_X#%0(8#@^#Qy9xDSvIkO`0iumd0*z!d-spbF6B4C(|(1dsqY0O$jBJAv{}QvHzw5rS0EPZT@oyge7Vw`v{;K`RF%lf|F?rhGZnCW1-^TxL -zd;8n{eG2kvBnXOLxhf`h^_sPD>(+1BxM}m2t?}Eo@7S5JD{=Rpz5DhbNJ>6<=y1xB -zqp4}>$Bv&knQ%NDtNEMDUIYx?rYKcZIryW9WouKz!+fA&ms -z3rnk6);6=}*xJptcW|8NqlOkO6N_b4PyX2zGb!7D^=U=0Yyd -z-A~}o2@DSua>I?i!PSqLBXIA1?U=jt-D2+Z!0H*SVP(-7BCgkWbvuB%o4otiR><%3 -z9U$HVpv`6X -z-}5_Oh#bW4(#+O^^)2_?wpD<5ot!L4o}aa?@H<}bf#MXnKsVqbDEcS_RXqo1VkHHL -zuA~6{%$doB`PycEynB85_9DQ7{+~2(`xrzC@l;@_dosw=-n<1wWx3UTN0HzwW#GzAiHR -zMxNW>(Fc0`o^HS7_w+%Yzo%Ppeot5M`aS)j@3-^{IeInU3~J^7zI>(dTe`e{risiT -z6Vb2f%K>f0cl7W3(_8%O@`#@k(%&~FA;0dYkg$H*O1bd&?a5sB>-rW&nn6L4-_onT -zD_;=%YkeaA#yBY*ajtP@zvQF4?f3OOKKOh3!y~`%w`pm=FJGN5rSAa#f%Kp2b=fg9 -zCvx!=jR{GIlV$@ewrtIJBxeS2xIBH_M0 -zwq;1HZ};sLB!()r9kc*&0wn@?T$>QA@sSNK*Y*?kou5#Z_^+lk|Hf6RU*`h$bjTQ -z?hiuVQobCqBt(Rmj|=2Gz%E1};m?ea@SKG%d@j%2k0XYP2h0P~qM|_aAaj8*SZ3SM -zuz|gqoP~WQp*>P7MPD#)?f^k2;g3) -z9DYWCZlKm}j=ohMf>H-KhVaA@4m>eB7=pZ|4F}5Dj@0PP_YRP0;^L2154s}))ks9J -zgcs<{2Qmetx&k36Tggelg1NI82;J0v^^SUa#0J{P%qbKv;$ -zpxe?h3M?Fg)*^i(*Ox8|R)UaVKct?S=q7kDBI6)wd!#dhzSI(A`g4J*QEu~iQX@4U -zU~6s%n4<~-`ru3Z6p0~y3{sqs8ZCpk_CC@coUPb@mmT4R?3C%R&*i7*kbm6&4JR^} -zuIXl2Ls0k_He{#`)}i1uIUWFc+jjRjHk7F?&4cW{>wN>a;TUNevVRZxePeE`SwYsA -z3l@F+SnLH}9PSeI`3SRM3D?XFlBf0U`}zqDxz)J@`7{AY|Je#h;XD67n*J;Le>DHE -z=>JalRpt3uGy_U#3N0IlMBd_q3zKvMAp6`8~r<%+kB%=+Mqm7c4 -zMf{;MzM8T$WPj&y8IbgevUHLx&X&c^WpM{tnR&8wCz6wv7vAP34jPd0N@9}1#ky&2CxM%10VuS -z2fzU60%!w_1keN+0-y?@1ONf_II^K`fG&UzfHr{p0Ji}u9Hse7fnNxa3y=no46p+r -z4j>jF8bAWz3E&K%rqn<0*n+qP00V#sFdaZ2Ko{W+(Br^{UI5eqlmg@eBm*P@Yz2q| -zhz1A;5CQlBcmlWrH~?4!m;qn`bOAI0lw|q4?E!Cq`v7GC`2Z;ZTLIz#q5%W|764d# -zX+QjTor}3^+5e^S-roS_9rE4pUKh6r=)x1Ul>>AJ%2vhwc#q}3-f8~QN$Hqhy8i*; -z{s-Kz?*>ZgzrLIJ@0I(%(*0kz0h#-M+!Qj`f%T=Ll4=S#b9t_cST#|We)OT#KX^py -zuS{w}9*u&`qM}hh4dlOgxZyD77kpQKk@{vbKkskmXUqK4Ab;hdmP2Eq$A{VuE&4V8 -zsDo(85nQM^HY{$yKua3@8}L8ouc>Qn`T#+=C~3*w-^+WQ{PXvSn;}C7m}_nK{WVs| -zTo=giu?ha6wgwKZh% -zU*LSW$bT!TXJKJmaRu=zDthB_NXWKqV_$qD$WRg27cT=Dkbk}W0O<-qXmcTb@&!C! -zUT_~#o@^NoiXvB4w!BcD03$&Dn@-{c+XRIQ19;*|m=HeO8~J(LbdnE85X_szWSIP- -zaDU|{zpkBO@{OzvlfFiSIK!k@pG*g~1KYyFX6`IkS6SfywKy{AA>VXQ$DYF0Vvpm~ -z2$h6c#314-;z8nZVjl4V@fxv)_<;C?_?q~MIFK}yG=`){GA2<-7Ni9vKT;%V6)B#y -zi*%fnNy;Z(CN+>Al3GbGNIfJ)vI<$9JcYcNe2kn)E+SWv?~)&rKawGeCq+z&r|hO= -zQO;22z>e@@I1-M7H^T?u6!;}BxkQ>;WX<+;NGxp@dZ8Y2qbf6)}{y -zk9M5))pRnG$V9$1gv{IXa2(tK*A;4&GEDGi|{;rBz_Hk8$Jnt4PS$Qh<}bBMu;MuBfKCe5eE}T5VeWAL=4e} -zC?swo?jR--_YsqcDa17531TMkBM~AgkyJ@TNMh0-q(o8@DTS0qIzhTYdQX~4#*&F- -zn9LxXkuAv9WLt6qc^^5MoI*|`Z=`Ia?4=x{lv1cL8+L}5z+5;Kj)qsm2jS!JMYsZP -zgP=lo-AX-1&7$6?M$zJF#k5Y^2ig~!GJO;sLpPw)=yU1$^b7O^ -z#!Y4f3qrryR1CcF*r`}k>?~{}b{_5qE*5V}m``vcTqHG<#FUQ|W0(eSg0tZZpuRe| -z1%3wiz)GOT1=K}U9yN)YLOl*@G^3rM-J>XF0I8vRYWkqQo8as}fcN>xSiF1F&1M3D~{ZbZiDT -z2b+&A!@kFU#ty{U;v8`sa9eS^aQkqFacQ{IxY2kF-T6b+0eUbAjEOAbd0>SV#A@O_Fe+XW--2Fs4MXDt! -zpd&z!Oeb^5_sCz!suVMdHL(0$l#`Tf$~j6g+4{#M}tNhOIz9(qj~_zNA?OpV31Nf`LIL3(;Voeb -z(Vln*XikANjU*z4kv5WQNDoM=WDJ=}_9AZswq8wsOa4SIqBK)pP=?^D?&IHUW -z>u^T+TZE57!#3i0(hQO-iBAdzqjwWJdIyq+k##ASlw)9Cs{wrq!*k#< -zR2pptJ&ZoWbQ|(8T_*CpJh)!My~ce4bICZOC)pRwizbw6${WffcrcYqt)`uzM>0+_ -zE-{o$^-POR-;YK+E^YE#waJR0^KL -zr1(-YDLr6D-VQ&3k5TKW4m5w-a#}8JCVd4xfv#*i+SJi>v8kVFsObvRb*AS{%S@|H -zpPRllRb@_RdNUK5$C)}Tn6;ACfyh|}K^4Fo3iP=Zdl;LCt-{t}o51MP#7)PMaCDpn -z&Iad-TLH%2SunT0#_hnL!I$96@OAhH_*eLM_#V76VF+OqL6=}aFd@(gEMPzL2p)t) -zLN=j-aFcWg^rtI1g1m~HPCiX8AYUUZP)1TFQ)W|EQxZW-swjG(2e@EvJP9|zkKqy2 -ziBu!1KQ)q?PklgrMjcMGpxM&a(=O3o($wkZbUQF3888S8TZTX5DB~t0*fha3i&=^E -zTN4EBK+ci4slcLB@mGM1&+(tZoajNok)6mJ$vNa2@&j@gc?^XCMsgv2BEy(*gmHmU -z#`wx`Gu>#KVtU*($28xx5cKF%)1gdbaOQ%U45k^=f@#gPWjZkTFq4@n%rxc+=5W?H -zphXtTf@RIJWd*W!v97VIShv9#yw7R^Gh7?%1)|>$={+zqmVq_HT41fgh&+nDj12_V -z@EAz<7Vk~q6G8|l2&IG_l%te<%5}-4rD-x9OrEEmT0?pU{MF!MEXG;5+bL -z_-@eO5J8E6B@hWPK|l}@B!qB+EyJ1N&fqcx3<)EW5zE-f*umJxNMW2{@Wth^jW -zP|c_oRBNg&)d9?)u2grbCm4f%Q~^~)l~BWhtwd8}sd3be;2gSxnn>M8O$Kvp8kl7> -zsky+83aQ1^Qfe8sf?7qr4Mxm;Y7@1E+D3gr?Vxs1yQw`?h^9nSr46BJ(niv>X}UBF -zO`m2+n@+>hh%}hSpqT+Hv<7zQKy#+Kf;roh#-;hu1T+y%LJOxw(xPd|IavYymZLkt -zlTb&v57rkQgf2o4VI){#V2Nf#3$zymL=iEZxD{Pvg!^uv;d=w|sLSWPSjtB-}T4p;%0hph>=1P6jM!IgltolEdT -zEhC(Or4Yfn)Q=*dh$s?DI3d}Nz({DKv{2fBRd!IifMxbjAXo`jg@*tO#lZToAv_(Ndy)1sU^8$AwuWtC2e8_5 -z1>?pO%qf1b02YDuWH?y4Mgx7s!5iVN@D4Z;-UoD(0?y4R;7m9d&W8(urb@vGGX&O# -zXvq)QQokM5nRYXKm=H^erOFxt)-fYl+ALj`Ay~~|Swt`kFj!`?dBB0?%KFb=H2&lM -aasRk~+&}Ig_mBI>{p0>||G59l?*9Ws9lLD+ - -diff --git a/plugins/amxxpc32.dll b/plugins/amxxpc32.dll -index 7dd0a44f0b2aad822f896eac29031e2ede6e32a9..969e69d08011f50cd04b6ecc9993faee55283086 -GIT binary patch -literal 261120 -zc%1CLe|%F#);N6Aq$NPw1Zbf`k*Zy-f(V8mEorep6RHwOQktO9g1^|9U0ql26A8#SKbLZ!oGjqmt2IDFE^yqqR&ANcxZ -zjk-CnUpC)=_XFAY-T$*6-+$XZ*>~J_@4Y{hvv0pE`+nu#?7Q#HE}mDKeb3MCylZ@F -z>YyC0j=Bl2x!!PZ*2g~Y95m}Y={ZgR4Ln<~o~l1UX}{P12gRr9Z=>f8`Zwu0U3=!! -z({uM7eyrzwSY38WnxjjW4*la2cP#E>De1Dox~lB7%>#YH>eX@Njj624j}48dec -zq{p6;%Ror8mKz|sNEEV&BH}3?mXKa5hv%9VdZ_>-yY$kMt1g1fY=hL0D@pYylBBGE -zf%65jzW>+&oO5(PoPWH0*K!%2LqALs0AXJZ=QS-!OUB=S=WX(Bl621#THn{e^H@^9 -ze9&&uc#%yiz6HMO0nOv!xm!&}1jNgqH -zIFKg5^WX*fX8v#w|Np=L$zK^e&g`ZV#mMZ&P5eE*r4c7n`5u#Wkp3XOyrVTDX|MRs -zoW_XVp51(meh({4XNE9L8jIT% -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 -z5R`?6pf}Ox89XK_sR4<vz5VJOZc6je -z9_Z(LxGPr1p{qvfYES22YqWEK275TFjEFdluE2P{?>f@O;z>U49fPJCFQ1!*LKAoM -z$vI@Z84qv-jC?94>jF|KADxXwbA**mFAokRmGY<7N~GG&0$tA(T2U;?DQsbJbXE?V -zf{V}xICG$5ixsu;d&ygzaRR_-?~<4=G0@<$(ycCP}Ko7tPJg00iD|uFuHvF -ztu;8VnPRLZ#ZX-`#kjbl{DS?u&~cNOI8$$aA#RK+LjpR!d9E-sq7_b(HsaQ4APK0S -zkD5RUasKJ-v87_FJlN;+@xn}DmO$T$OkkxE=P9>Zh#RN;{xniRSXX|~qFfR>r@+d9{ -z=>mdRMi2x6J^#6wU$9ijLm6%`sZ=Do9@Ylxi_6VNI*Ih|pk~H}&Kl*hK!WMxVkXlRF?GXH2n`S- -zfu)a=0o*T*r>ronP`Cob`otB^>*F{6N8e1zgqb4AHew9J_|~yv8?L3I8SV5)@_aC` -z8kh`wu}~^*d9w`M7Ke$UmK3Y5yow9vgYd7pYWa^g;$AT69Il*IpQ2`Idrc#WugaTO -zmEeL?ec^m^`yD#uwIt*41AmKI-*QV`h)skFVS5E97O(t18m0XF@)k0DE$lR5I@gbk -zZ7HIU#y>C7bku(Xw9Wwn4|F?ed -zmR^zwuRRf7>+*>)cyklsO&9P6OgtqkZsv}`ZsI3KooD;Tzl}JAYKj<2b*_Pr1u9n^ -zMt%i7O&f88zOd&Nz2*LNzws6LiYMn&!2;XoO-7M4+1M?bHmyyjisU@aRlVuZT -zXx8RGawu4Eu8i1?V)oy)lh%krw9U#U{*PKo(oE)%6GWTI*uR)q+bx&%$s>*&GJXI@ -zXK()d{8yfZrFPluD1*Q%4l9we-Mn)IQ+hoPzVbg}CWDk!Z$KkO55< -zEIkKUyr>SeRjJP(hgUUn6u;ND;di(T#aXEP(c6I=lv>+6hjtFqkcakq -zD#0RDpJ7#;E(Y37|tp{BM_&ph)ZR}VmoXtnVM+IVf4 -zE?Mek>LNGk3JO8s#{S-vArv-%taAqV(I#{y>DUjUyjykV@IO+}sRZ3s5b}=a -zQjmGzKD?X1LV~1$+)z5!LBd7Q$)3kv2TY(T?s!Tk)mE4~eu6n?A`Alxrpfx5oq8B_ -z0ebZ>bkmek=AA=5yc8X^c#(^*dlKk}QeoD4_!4rYGj!yNTKad!yi*ryIuz>Bn;#hu -z>Coo|&~;9e3*cF` -z5--fN({OBc6P4$lC)9Ak;o6q+j5#Aa67v%zX#|_%x4x~;`hz;%$!$mtC -z>+abnw`m|Hx~G(y!#{#*`25AX -z*nW_?<}!#uf1)wuaA>qO%le|uB-X;-Q^PoC5;uW5j_EHtNagEVcij_MvNElICdEu?|AQjcrlK>Ug-KqZ+~+(P_oS -z*>{3p;9G|u;;sAhN0ZCSn%!=Gk4Qb;Hma#;6UKJf3D_d#O1AbGaXy?}9<~-q(C79P -zfv%XTC&9L3B!XV(;tN#aQAlGClR?(l+Dh07X^N+gj6hfcf@i=OW{p<0gV?eyF -z7uEnV3%9ND?%MLx{4P~Y=XBdic??eFHMKF|O%#eMSoEh>*Be~1B#Jn&x0B;n41QxmY -zjEeynr|`J_I0k1x=TAS2`xy_tM?90!%335ASQ{*`tGD$;qYE{~HR%zdxblVX1FO7I -z8d@M(zOzY|@KnjNA3ml$$?^$&9-byyo`?8P;qx_oo`bYc;p2g{=ioCkU$Q(3pFhCo -z5PT%a|5y0D2cNU>xe>~2fF)QOalxOCzLQ4i4e&_ri%-F?0q`-77&v0Ypb>*jsqm6E -zVuX3b2+NQWLx-i0$Qb?*v|R(AC*bot_$11+rKDl{iwGO3{yu~3U|--)UN?r&8c0I5 -z`{|#eQ*p)psItI2YvT-JBC~)|NDrWMGfZz#3_%t|jeQ;!HDEI8xGrF2-qL{1$1ndC -zR&ymZ<*!HCc<=qfMJ6ZQP6daHg8n=L=_?Z7j5{^gtFaUvkW|B8`C&+Mpu^X>J1dVt -zn%SQ#WY{B@3h~;Wg}ceYOjefeax5shhq+%lUs^nt9$}|3+JC=Y$T&ZP)+I_e7X#^CC1Jx -zSO%tT#3U_&+Ec^5=>8dzKyuc+R1F^f$5>-Zwx9^X(_C(EsmSE>@Ye5KIfwyPjmoH=9j)3)!aG$64JaqU>f<408By_|LQ9&1f+Q| -z9`yl6=_qn9MDj1c*4`!m4t)RMYjV6KrAzWRVpQwbREreI_HV)W7qxfX@?7cPj8U6o -zQK&rm*JIS<2^AUr^%zwZt4Q+K;`_a^QshJW*fJR)xI|p^|*2&4F2+&~({}L?u^;cSB -zix53Bnn_+cPHRfSc@MYGk0-ELPfSH!{zA;1CYQ{U`9UMB?J0cQD9uiS4t&hsD+~>b -z#jt=X3rpwdZ!|M7D4)(=HxI5r`$I398))m0j1pvOw)Za9=qGf%pr1Xp)EjZO`P`~~ -z-_llln@-}nUYNvXZJvmIueIH!mbdXK+eoB~sf#cE0+#*m4uk|rFL-J1PqSq`(e -ziGAzHJVX7zyHzohitMtTtV&`Z;=X|LJae|8gcW%}$17?sP!QYt6vPFcq##C|N8FLJ -zLmpncRVcUU2qdR5`w>?lo!_C^AM8iiXgmuLDLXp$5R3NFbD)s_?0Fo`i1VPRr|GMh -zZNU3HV(=gxKB=S8$_9EF!wRt`|2t^8q)PesmuN$VZ_K%ml^ycB0g*>t{IGx$_?U33 -zJNzz*N`l;GRrl>LtvX&S_4jA@vG-#ROlo-zZ}@Yc@~!~q-0tBST~wKBUq@Wn8tpXk -zArE0d4X(3x$K9Xq`Ews?l&gdzR7^NPB-l*Wyw#7#D)|lZ#w<|d8mKXqsLj-w -z?@z`Im&P;X`Xcr%J{LdUiF*7NbZKa|PcmE}B2|bd8u50UEkqFvE-D+?>e|Aeh%gwlD -zFv#s4YvQD6Z3kkU-)FBudR+g%Lyu+a%{!A^NRMw+pHGj@^#PQ`i5~ZTK{MSNWgkXh -zasuLA{M57kXwtde4K(@YaE&In6EzBbIKDqnRv%cXmTl&@JQo{8e?Z6Er{bKdg*jF2 -z=Fd!}Ipw=V%&85~)@B!PJB`z-mX%e*QrE?AnTpeD)71F1vcR;OKU|wuo7Lb3m|5vi -zMWCGDLv0y>7ksuY*6MB0>Rs4sxDrqT4X<|dABl!P%oGhb!j!n3T3rp3S>$u`kEdY6 -z*G%m&QMcGdU>Rcb -z$c8lpGWZJd-m!|9{yOHY0WHxTFhVi_8L3R%LttGB&RpD_D^n|qfeKXz4CQ8KZ$LrF -zzRh}Aom;Y0_09n_42PVM*ywR%OD_KD=fW&!UlZ!l;d#)_I(uVhDik+wbvBx}?o*wO -z=>NDC9jY79O%CVPppKCsoNz^!aH^k!#DI-26AT*&DT9?YLc3noJ5F_!@ISv50%J(x^Sz<&2J0|MRKl-=>Xz1^DbAe?LB!kS$DrBZ%ChuR(Lo6`!Pa7=a|s)97!3> -zQps1cB&Rbi;x&2#^ZD^%1Vw0n)OJQ0r+LH6S1^Z*_R~yD^Gk9SVK_b&YB72PW&9;k -zL>TfzO&=A01K=;a(fmSn+s$MGJO~dG!1$$K5`Ju5@-_aWD2oSf;J={aCTmkO4C^p| -zn-+aXJeq`-X5cloP|p_lG{Z+q`oTXb>0c!NTYtL$Vfp{%Kje#j^M_2`tOW*R7<)_D -z^7CCeFhn>e|D=SBRY+>p$e;2{a8+@N;{`;NWuw@5%(YWaHL$^1$Ns%KjiwaZZu^!oQw*bHGbR&+0;ZEqMFVJLL@ -z*HQX6bu`ICbT&kiC-`e9x(%ZJG6i3UAf0UhS>W1*5Pc^_zd!}E{R`-=0rMA7@M#D# -zD=qXJ(9htfXxywq{~ize_W(yWhfB!UU`j)_xuy_;4N2yj$>eV^&W&6kVsCKqBczfU -zUH(j})`8W|EkFm({qhL@Ag1EL^q#}iT+t2oUAS2d5Bjs#WMFR^s -z9on>}2unjPE8k%4&VOK0)l@cX0W)j^)L#{9!ri0>H$UAA8fsaChwbCzK7ggqe;-wF -z8&#L-usyJ-az9(R1OS4j{FG+bnp!|_Q?V&!15WrU0@2|oQE4q-?=PYZ!&Na1TOPA5>=TJ;(+gc~Jf6>)x$Fobv23U=F`Ux7Gt0M6F+ -z!&&p$IL><7`fzqFmCKxEt3aGN@XV6grQvKyZ6eO}!ki|YI{v9)%Rou|kpyg+<1_ZG -z)Xyj8I9fIw8aR{AA`HjB$Kro_L_5pE()UV^1LehEaJHQmc2$*`~y*^CoANgTSeerN2rrv)z0aGV%Z(}>P -zzx!b{F|B7K5mW8vnvtMihgKk_QXo{l0zJ8Uac5`Nl$^^8fV#hdm&hy)V@cm>1Na)B -z`W|`^HMrP5x4)jMUW!$hmRMn)WmW$oTLK}|T+@P@S$8;EH3Wnu|LX72bG%T4ZB~hS -z=bQ=I`j#6*X9k%c2}yJcBJUPD1(5>}w!7nLAYyp@0nI&FLoL;CHY}8iQjok{{_5{h -zEcrrLiL6A)Ol@p4q#^8Deh5VIN=C5G_8IJ+lDz7iD{G0_hu$xO} -zM<%V@{g348%88;E;R5s&3vTwy)X^Z7DnJY#mfeYS@Z9V(<+^f_469}GrYGN>ED??dnvBz(r__7+oac6({cKF^hh85G=~zoGmydcu*A%@os^5w*AfU)oG)`M$j@q2u8A|x!F{zA -z9YMPyOt6E!IKl206_O+3KHA~`3(U9b<=IlJeFKg)EM>S~)NS3bZ-MB+pmM9u)ygm& -zlkL4YCf9|8GBcFs^7>w!m!mXsd{&9RMVQBy=dR3RB{`vdNlC9O$}UKfQwt38z*c)b -zw$hmnF!@&_NNTX2AN^&Fz}TD#xwbb~rn31HazfK2VcHFy(Ft;_B>?`c<-Qr{B)@WE -zuKCerTREUuE{p3felcu~N(CdFm1UegS6O|Kk -zD^-9Z1Tg4CM#5FMe&4e^lkVFe3`=!kn`4NIv4Eb|5z0#c4K~JN^zAh0vc7> -zx_ahZ#|%1jSjRdmso|GaX;>$&vYZg{`&BWlhwSSNvu#jEWpn2cY~el{mKsqg6s(tI -zf^P}Ich4#fKIF%Dqpln&tMNpfYuwPANLj5%|AyPY0J8dB)K2A_WFCdg1+1)w*;hjg -z9+$tE+Q`OU*w?VK+Q_6N-2Adcmd8nErLe71pRI>aAK3n0_G+(lO4NpmDND{}u`yT)&d3eG3{;fXHm0{_2 -zqEleXx|QTqq*iY2$aYkvA_@21W|`F80poIszzsOgGU*Ha;X0x -z+6xvY(*R+%6m!kTC?jQ?!)>^c${(94Tnk$<+dP0N;HcN -zLHiCh#iIsMcg2+MW{WaW__;g&U3YaQnaI1lIZ2+=-JGq=_VRNxguSmI6ik=oDIh&0 -zDH9N&&e3$qNDg*Grx;1u9tK@ag06x{Bfz=Okg)DQe@<)`vQ~2FKO7KaCHy7H3k#6m -zYCi?^8-;ODgFWb(Sh*1|OsURWA)CZ{RRUq)1W|u1=j}hV4M*M=aPQ -zN>(h4CZlIxAjo~s#C+Ip4He>THj+FW%3rk+Z^bFRmP~4e=6={q&_AgnmP%mj0+L&l&jg~|h;gi}7o%Mit!7|he)cXhr$?#K -z51bE4F9jKKH2Jcc13KPz1$B!Y_{_VK@h%@1A2y#FC*#J_O&AxB%7X&A{MS!Yf>+=l -z9avGV<#$|xKGYF=k4s!paooc<05Ju|u`d3_dhN`vY!SOleDYU>v(6@}^lEMwmBzhZ -zGnu^y7F;E{5xrksfy?+wo#2n>j1|hw{73VVJ9i1dnEjN?&G%fcG0@|ZJk*a?RK80m -z=r^j)ppyVt -zT(Ph@pQ;EB4-wr+RjK~>v4)KjVTTXIihB~~zD3N&fj*vgQj9hKQK#6K<6EvnfBNB6 -zIqtn&)IT`A-)2ihInM9GjZo#3mmmESD$?;VJXm>8Kq?izx$AqaH*>B-#`&vnfl>2q -zU(!@wRT#Te3EF#bK^$E?ywu`@Ew+e18KK*UO_P5UfiGtlW!(CHA)-{52i0v%Ze_eetdY7={06xA3@= -zXTZ4D-A&`F^ID_40-D)aLiG2xjV$7(6NryLbkN8yt`OCa__bgRxN)iDmt^buu7x=| -zM!0uN+RV%PnD#1}vj<4zw`1rC{eq`7a#Y$}yj^oWpo(`s6|XoEpMB@cgHI&vcU^~m -z6un$MjC(iCJI=#D>;jHFcS;gXJW=IO`l>|#??5`g`W)3ElINV)qG%5WE!JXtIoi8> -zVcv_)5E}_NcuI1J*Z+4MoAv!5L8 -z_F)mhFT02Xqw}|;Se=_kow}M!5=EbG6MT7j7gYou)h#~XN1otc-f#Yij(+xJd>85$ -zAhmZV)Hkb~WN-v4tM_pAc3^3$y`ER! -zPJLoM4%^A9)($)&$b!(y;yGB|^68}C&o05b*t}wO&hu-aj=?@&a=YkNPpI)2S&V*4Gm2ar`J*D%KZ2P8PARad~lb7jS~hjv-=-m;eGdR>i}BZmj}x -zIr16Mt!O2UJlYcx=jk{DHh5jU=cQ=02=Hj$YTpnsg>l5)Tu&^-&`E9@{BIqJ!zbs6 -zy0IzRU3`$EQo6U9HSm}Hc!?L%MZ~Zc+i>wQVpZqMJ|^}jr1-`q -zi7cA@?7fA^HkYLZGI`c_V(xc?c6?u#m}Yrv1*vq)<4MdB@(rJX4U%8~*fhLe#?7}L -zM+2A1!osvNb~f8PIA!gc34c>VlpjJD#}U -zUYD!a#Qg$R>v8}32vGSxH{ZPgS^JULy)Loy=5g19lggODH2#w(VzTZK+GFD%vYX@v0>l18UjFP0(@&9))E$=iugH))zPe5cKd9 -zpTla6wj@5ag4mbX{Yzp!iVrwKDIN}1oNP8)gdA)F3~v#O;#D&){tp}V*=BE3GN5Af -zE^n^e!zUEPT)#-CQQqz}2PE99@$n2!<0Ixv1D*}CAEK@=AL!zlp9-!NyNat@r?JJ* -za+f4u%8FdfNL!tQSd{I)2xO=$`dIMtu5<$?0 -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 -z(=Fr~LF79GONtewT2uw> -z&5AhJyCY@WydK`TU1KQQh@o8aiN;X20YfRMya+=nDp7$V?c3DiR}al5zM%$p@W)rg -zC+&lPUeNZ+jpmv!q(0u@OrZJx90K^ll|ufI_)|syiaE3+%tAXoQK&SK%>VV6UW!)Lep>P@Dt#LbV?Pol25@z*6)l#gB6YheErT6$z`A_&trU -zQ5FXw9448IpousSxjp*kK$5=6r*9H`qN+sji7s;KVC9w3L>BQY_L~UEd?$7D>Y4eBXQxa#d;ea&8_I?WvYn#C= -z6{ij8f0q0i#UNeIC=LbJY1_!^+&ntMXvB`2!|$UUAJv(|4${S%Kn*S10kYtshvKtp -z6AH0?yT1-8VfS~mw)?wV%oE$_e!IV&`^kog``IXq;4!|0z2DJIV(YF4{c3s=Zj;;m -zp_tqHgk9k!q5<6hE#>-wV*i)+gpCA=c9WO-x**u{CK|FG9*9jU1?5RqYFg~|x>kEF -z@$T}~e0mjn2-Uc`azKiCBuv|nNZ8`x8;#V$tx-hq4iGC#dDSnl>ViJ8^83GQAeqDX -z!G?oK>Ki>~7WQFu|FX_K!&H3q% -zD9J^(-Id+8-O43n59s%MV6eTs`6%I0m=`;*7R!+SZTzVT+qLxe(oqtDLQ_`jwYZuC*Mq1Kzt&uXQ?W#z8yLi=wTs%Zn;)KwMps2|rmTl4EQ+;Im@rgx -z4sY!l$N#Ft(cS>59bY6}1Ti1dPkxw~=rv#boOZ~3J;~M`Kf~LxUd3TuSve?hE#E4B -zAw*=S)wceE>KhuD -z00_D;wxT1lAR5v=jW7U35-oLHb1rc*)h3MLNP@%E8peDyY>mB?R~`hjr?*W^gT#Rd -z6Ap`}7|mf^H#9uop`NdhrrQxQkE6lqNu`o6qF+I5ZlVsa`U2$bv -zr$4y+(`3YkLB6t1U(@tZc0-YDq^#~vlUBDM?>*<8?`j1FH6n_N -zLd{E5dbbh&%&WWc+Cb2aV0mTlixq`Z;)}`^g?;y9^!xn~O}0TPMz~I@_G7A(^UYg; -zdOj+`>nd0e|JBdwoVoeuFM`fZ3a1vA0}9K-zOxgRs6@N$PhN+zF7B0 -zxm*db^FPuYeVmfBKr)+p3UU0go4*l7F^50WtvQ%h8PI!kUn@#HJs$qiE-KOIIU08x -z74F`~7Y{wwu!-R3^^6O^~R?~REEK?Zyk)U`dhX2?&2rY5cc;*NM0wEg7c@r;PQ -z(d*)=eBeI4maN4!SnotLsSk}mt4B)+&DyL&Z=|Q(^-I3=O*GaebqVgvMmSUxH_-M9R4G= -zcn$yZFxA*;2O;yr!~IPZbMnQ=YE@daDvhE_G^e44u-(m{|FPgAU8~NG#gs7-w!1l4kufJM%U9hVpdOVe%VHU4H^Y_nVQ>$`=!!%o#^p9iSx+!*eo5(~oK$Q&=kguC6+_n7zT1|B3$B-#i+P`dDxq -z%u(l2uKSpV8Bl8gz2F=vc)|Z5W&;Cx1y-jFgNbAIqfX5K@|M7x9Psczh%mKyC&()1 -zKq24rQ;Or)OvGCgx%H>9DKSe(nU{+QKp)<#jF@!u=@XH%cX;rO3}0oW>jOH6(KZr4 -zycsv?wxdqr9Vevw#af;1RhPqLM$1?!X}M594{{RzM)>-CVo&OQ24XkD*Rs#3#4&%_{*$+*zDvBHxl4Enm_p}P$irC%x}tk{ -zNh%)g;BUQ5b4L6`r0iIAj(EUyrVlqQzsi=3XAI;qp~5B9()ouCCW%%zVlEYw&Lvuh -zprMsz@?|&&&?Fl=XETSt!M&Lrt`kKTieC?%TtZ$j{5OHPT%1C;W!fl(Zp&PGfJR@G -zh&=oS%3M9yn;&@w1?v~;*FR3Df9Jr14sGNFq)sD+Mnd;I$3@}RWaN0boKZCaJzxH2 -z0w6r_Ml`Br%8g~>$#2FZC&wf2>x;ZB9?5#*kw1z@wm?XWw8k4w3@3l4w&%azXxJ|V` -zui9Ty?XRl#-Kza>VxN7fYJaQN{x&c2qc0u&1$2?cI=6|~M{;?|RJ@@=Eyr8L@Qfy1_%H4!d;K=C)bOCW<_b`{uf^X_k#7odgE<@} -zjS|Ff3;)$Y!TZilkt7%XTIJ*yp@nJu&p#Gp(Q02q1NP^$==|8T6W6>op}pyyPf!JB -zUZz#>>J+qAH<))N7t!suua6dz++pq4;5+rezN7XHFduIJ3K`F8(ACLhiC_K|UbM^G -z-w;j08jNeF+Q3`Jr;Zyj@P25rilvs88Ds?+@=aKcXHZFj}( -zez^DoF1*LlQ@0v~jv5!gu0k=J8b$hWUwnHspBKl@rNrbxAKvDw#~ANzyUcmIbNo``ds>O_=fUmRacW0e?L -zS%U{~#*a+W@YON8KfY|QCE#m%{=b1QLY6m2ovu!VHeygddOK={z{HPTMORwZ#q|QUycSdgC+Pz<|4n@Wz$w=B0j0J|50J1MY-g3fGG~o>=MbjU -zdK{chJYOZS*ObO?w0wA-xY06lpD<4T6#2=A9)O8IyGV#UAR}K*+fqVyRxGremkpRF6^oU>!-! -zPhYD^%#`Q6?Jpp+t+&Nw(AQ{-I~64z)mfvAK;T;KCY-Opf3M;1w1}w_tQErbWEDEt -zrrpDGkDl&a!E@=i`Jf-@RLDgrHp!+KdAgMJu -zdxu6A2Y7V{O0?C!QV)pVuoUr?M@Tz5-8QP*v5O9;+mF^6r}b -z@&8rk~tSYK~jD5lqA~bt9@9QiGtM<>ygvKQOM=tdqghQ%yXY3{rH~%O0_Nd-0oRZl9bEEjRJYI_sR2i=cG*sU)k&@ubPNxBd!cDjt5e94qSKiU>^{yHJ9=@n2U96z2Wjvrg0B5~iS -zkze_rk_5;%$d}S}L1n8w{O#xP5Y1|rIHLAWGogiFizuP-DOGQtz;{+_9%s0325sw- -zanSgSAXM?;TR>??Us2yR-o&x1Y*-0u@0BmY!J0XLexr@v+3`CNek+W0rutcDs3 -zk(tVq_>RjYN$A%z%SjY^mjSH#T-652ylr%9>VVwS8#6H`!>*A3&~-B -zZ4&G-H3#p`NRJ>MJlv*bZ0gHcCo=Mx9eDdZMJ?0H5`fHU^nVQ5ao^{7BytSzs(T)P -z+u@ZagzDLi!eUm4KcFH7##3I|#hykV=(QO3b}6;U|_ -zl9Osv8ZoA%?`+weB)z3B)dk=Ghr4%ykE%Kz$9J=vWJxyM4J14R1dIX(5M2TZyU}2> -zNfZK`gk)7D(H7Hms}}WMK_y}7W=n1^+fqwfZKZ{x67s^5Lx7n5&CI!Xvmx-Ue*d5U=l_7uX7`>u=Q(rc%$YN1Ca{=gU#YwYzg2lj;lCQ>h;I-vY>+>TF -zytZ99T7w+F#8uJ&u8ieZ%N_>YZ=D8%SeJ-FLzFmNvSi=0fP&h@$(WKzZcrSjoU;EZ -zq?!6nNHf>}ThlnkxbJ6sC@__g4vtFMtP7!?M;uzW+9NRNJZr~WfU<7`W?!}vJuxWV -zt-iKP{E&t9_Hqx178E8n>(B>6;z~SmqLX>FPF}&5@&H(sbD+dh_9(oDG5R5VRc?Z1 -zzLc$ipDy;BmHc$DQL<|H*E}dn`d9Sftra$LCA#LvhoVw;BW3vkWkIJK$6V~gA0pqy -zhGju}+o-*2<51G^eK&~nWfwxdg1u1^aRwmi9@64r=xZYu+*;F!mr;(!>qBD`n1cQQ -zuq-W0=ss*gRbA<7|3ZjOfsLW -zG(Kz?s!ROXk*(O-Lg%)(5M%;TN74gGr8xF}3Xp>rGDz(zXC{+8h6wTJ>q9qS#Rqm{ -zlnoB81i#t-sZ|0=SNxUYb}AZkrg^NfatIQ=zRh(8_+LQ*D|#!Tq! -z0s*8y2MPBX)Lp@6!G#3HDMB#sJ{!&bUSwoqNF1TYPsU1Vfa%rAejhDBL*u1`ph;^} -zrS1&6F}p5;`>yJR#e5D-^%TIQQ+aRmL6DAk8BPEM&8PivIwN2o$hsh^!j|6xE}b$qSx5vlr-RNcDT!~s&J -zz*BM@QEK_?Xyy^3)FMu)t&usJ4}%BY@Cu1_8%1Y$XY^n^eY69mZ$80)ehz0PC+TD$ -zU=2SS9Sb$vpvW*2=Qqp#S_JCJ`adYFe(h86Mq -z=*!Nxi^i#uCN{!36(0f?^4meIkKE6U>9S*;S1y@n4E%U9?-WbanONdiTd) -z6X)ydfG2A^vu_RtyWWA{?8#AFJM3)_vQb}#gx$ZwyRKjMQ3TH$KH+(POC?QKpMHif -z=dzdicB|`0@EF=tyY)_W%CjHEaJC?DbU0c3FfIr_eLGS(S7(&^{VRE&MWW&d77on+ -zUNY^%8`dyQLMMeOzyRho5CiB;#HekW5RTc@W2rx|M6Rz3O_#JCnq(d0j$`Lv;fF^^ -zjn)oZGlu(k_j}a4j0v=SW@SvEwn -zF=p9^0yl@Vy(!eJ0^;JO3cfq(_iXx&rwz2D>vC}NyO+1BYi@85`5Djxqd`9T7bHLb -zF8K1-A0z_t@1ddFyOZeTMWmCre;A^ZuP7uNLMpyJL@fwcq|_szlMV@WtmL1P>7@)HfA6+34?apw0MNec{6s?IA+6;KQ>mPD5MQAzCqPq0+lGOH~3i -zSEq2zjgp4jb;A*V!Y>rsav9#U9bOYh@ -z(#l4Vb=db-09(Z3oRwSf*|h>|CL?BbqgCm_^ji=P8>Hz#D(}JMX)CzT&fsH0wPuNQZxGGKf=IihB*lpA;1684r-obCIGqgA>nGS%C1CZKbJgJR!y4`H& -z%j%3n?yM7M0H!8?q3Le~jcK3j=Nmnefs5EnQGDsc-60RM^IM+6t~~~;f#nGNc^zX- -zhAGaTNE~=ZEc_r5oueGU#w62q%5*2Ylb3>uZrEVW08r8^B!d{X^)P{=xSB}vEP!7> -z1RR0b>0|&Gn>FxJ+`lfsUyQsQo+3vzA^esrz`rpB9--LJC>Fe#eg8ku%^cVbGXb_% -zY}_gM&8OLZ*3yH%O!j69}h}v5*&B^9Qpko~q -z>bK1M>m^ql}w9;jl#18oZ7^icaLM>N7w5*YdI!gU-qW+LN^7WD2a5s^YtnxVn*OASc{f5y2rR>UgYGxr<#}t5D?>61HS0~NG_+=-e)N$XzTmkEwMeyT6Ja;DDN_w6jVIHC;-?P8r-aqzYaT3&?VTR~k` -zZn2Y1N!4QF79udiZ4HG;%k%Y!Pla(}SA5v{LY>~8yvkeyt7qK;{Q`UPqvt#sI??35 -zj=lT`o$k)&D~vC>WX8bh$*V@7|K+%>ZK0G$zp678doI{9r1}&w`lgP+4e&##Z|;9H -z%k$}H8esFym^%U1f}!~>r7mILS)t*gwcXY)+F)BZY25|v>?5PIYB$AU2RXb2U>4Z= -zr4M}V)d?IiO3 -zP-&tK#^~_Dh=IX)?giB@#dGOqq5gnd&xakv;U~UU)n(GC42MaIS5e?z!5(^n+e~6j -zu>J{GG`!>XcIz^+M;rE`>yhI^%~4p(UHefdCs%1vDpminq -z+PMR@Mgl_&#D+msY;#`qjeXzM-mJW8o;mb4>nb_7Asa1S+`WirHT6QJidResluRdwTM!$b4J#svb}J-I5t|23nm3r9w}&{sw7bh4*5Fbc3I)BwA`F;1@DaeqN`k>IBug -zgYE9rY|dJvl9MZBYKXTbqU#dWZNEVp2ZdfQB~+q!SoX|wFuJ_0xa46)tG#l_mypP^XE2?Kfrt5*8uJhO9 -zn6yeAg}3doElrt$dA0fcGPPafD>`R2!04%~Ty; -zNMm4|{m+lIMJEQHTDfHZTEsv;YX^-648!Hfz&;DUkJS3#(_wgdXaE`tx}!_k_*jiX -zV}K1k@GLjIsE)Wn`XM&MUu{@bQ5S7bUK>yQDVjfd`aFAb^*MKpi#-#{Za@>2y@+_7 -zG&#KO(+9OZmbcx-&U~nvEg+RpL;29PM8)K`MCk&v?Nb0ZQ>CfGzP7qteXh{ZYr7yN -z3i~FYa#Lui4%#j$)K|#}qSwh>&&@C+o`D%r{tfAgTkf#$^M+vjHDvs3*k$)Iw^kxs -zK9vk&p&GKg+T@?pVCc!0dX*~ki7$nQ=ns~6JFOk;zBu(i`WM0=FaOOqZ%f;)2hDN{huw2sTZ9FXe -zrKQ8s_kpAPWSj@){)bJ_3%~i-{-pf8u3X4RIqrkW;4g$6y}RCq@i_l^hokocN9PBT -znB`>qi8nA?XVbq8C##rp#@hs?9)d<2P5@V*o{_i$SFy<%i8zMUV>3$nU}AoV6VvcJ -z)s&GKU|!cKBwGGJ9Uf;6IU#)srCb)^l3-iHo -z6;vKKGyp)U(%lk)kq(nrSwia*P&)}TH&2n$@WI*+b74ZU`hKLpJZO8f%2;cRUqGN! -zq^@Nx#&{jVNBVR1Wz8TsZQH`Bx}|JTh3E#%dX#oZAl1_vE+=O3C!BrTYVpqs_`|cc -zM%Jp+bHKi(%B17TI1FNfo1a9oBc#SLk+2u;UmgZciA%?Iy~He=w$6rMtr4^La3Fk7 -zH@UZ>-GZ%c%@QRJ)lre?Pi|WZxily>peAwKd0oixRH)p@_nUiv%VoAi?$*R4r(tH< -z_=_Ovq09IllF|}tdD;;FUEDb(*-ez%n$~2mYr?wyM$+ubl+N1(jhJ|)Mx^sbP&vE- -zie%>gt@y<*zxicnp|{Cc$R?mx1;?Y2_F!h-B-!{$y}eMtLq} -ziF!2-=}>vJxDNJDAcB{&&!e?`<1ybT%oktE-U$_FEL*m`xs311LifY!947nhHAZ_z -z^>F*W@Lf?IHDiH2a#b|JEpN6qUKW3$%B;gJ@^SH2uT3XrDw0XD`Ingdxu$P;UI`pD -zTKNdw2)2OS{mav#<4KJFyjis^0`>{mlT5qE;$-VR`2`kwOha6@_BMphtP>!UmLi>XxM8wg28>t73vFzRG4DdUds(5f?+LvFuIM<>OT| -zMM?;CDS1ZtwjB@?wEMN_YwM_zWwafT&ME@;Y!%DuAy+`mC`ph4(0h~kPiv3o!Z0bm -zE)U}gMVdXed2=B_jPamTTF(W8Wb}M*Za<76maXXE?{JbIWM>LKN$1I%ce1e0Wh!E` -zA~gaP>hesm=$PzTA{KC7`N(<{y6GE-V}ZmAO%O=BL?j444EEZE%ee1=&hjhx>{Y*i -z3!mDs&)e{E!cgFNmzb0TKqrIbffl7rinKPC;d*_O($v&xGPDQ{Vtf#O9l0PhnBxsC -znAlV{gnuZyV&$Du|3kby?p{0fkc2l4CkYLsmD5e1n+#`!hNT%n_(g?f7|viKM)$kZ -zwsM-Z*zYu{_m#)a9|!ZN1Ln`2`uTU^{Ar5t9*C&vfceu7^QYZ=BIs+Ek}~p*Vq`{v -z83S{fd`DN0RPvYl+E<%xZ>YAV&qHsPU1|Rc^kc>-vP$XQ)<)maYC&0iN5)vulm#5h -zc3{mp+kvWKAs#^xqX9yt4=-vPRLHX~Kx8()vybo_Ny`T;@)Dm37@vwTCgIjp+Yfmt|{3=Y4m})ptV?<#N)xL5yjjy>$g>2WZNl+tU;!j`OUZqmvT2 -zcNSl}7*ptE)9B{2N%P;PD#TES=hiuQ(J4gd_mp<<)5>akN^UTd!92Zysc}JOmLD&OmX!!E!)Qz;MFt1C&WEqJT83tfJ{OK~8!KzM;klK{gFeXEsAYGiIy{|cFf -zS9#C{Pl~tKC{A+gU8T;VLRQGleag#tqc*Bl!Il|>upYe5<=7xgn=+Os3qL8;tNv90 -zmFxdK;2;lI#1p^Z``yN_FLiW%1u&>I$&*sM2jj2pD)^f{fWHV0f5r%ozc!A)I^Gw= -zUkzf8+q##uDJ336p5tvmWQ*gF{)#xP8id2da2y^Y7qq588X#>)mxi?A=>J3ORAB6t -zutey=yF4XHiuq+ZKVKepgwkHq0-1jBcpo`~F4HK7y`Knj$(|-=RDU)O{5+`r -zgl`<6(9gF9ejZj1!#6y6I|bQse0L=tVU!%(g??NmnBmni`QA0YJv#B6uW|KQ{25cX -z)VF6%r00MuVDKE6T^qk3|FM6y=y{B(U6`L0UeaAfA4!K5dRn}1nJqowS*!n!^gVBD -z1fSp0_Sxcm`;FpUSXOh2>yC3tanIM9%rzP%#Sthe#+9E!LurdV -zHLa7U~!TvFxCzCT)-w9 -z{0SbRp~=4pHoLL8feqzK3p9D?g2o{Pl7^c!*h>njhvr8~3+i%i)aTYTN@sCzSL_ng>LwC0>Mvb^ -zOkAwGPwS4kd>IK%^rw88Oy$xtUKYN;P=r$8cm<~IdcpSy-VxYG7HY*p!&uutmI=Oc -zNLv8!g$6x{6s84Aw=6&be&>hYi>1Q)E<(|h=MIs@R~vloL$obWS_o{PDg0r4_=7q8 -zAtwAGF8pCw_(N>i18-D(k+p{%J)@y_keQ;$w2F*0)a8rgw?~Mh{Us(?pjI}iFeYuh -z9VQUqb~g?rtC^Kx+S@vd3qC90^ALQh;iJIkDfm1GpO@jYA3iq$a&$2RS=xi4f?kMLZ$7k^b$oBW0QJr^Ta6#)lwGN)#gF9|Rw3I7tmmZ3QM -z0nnd -zh6{AEjr&2Ui1C;76*<{w+5xg- -z7l)X&9SMvN{ghHvsL=>D0`rZi%a6bmz}{3TlKm1ycyyxY!vL5{a2B*|K78iF=O*~v -z3?H3w=s*1x(!%~l{Lim>pktCp?4(|?2Ca=0N9dr89{b;t9fxJdF%T$Z$4S}IiH@5b -zOgT#{?5Y1~G?qxK%E=z>ITBV^$(WZLcpp{+|D4f=OS04}SM{mV8y5x))Y%G2;I2jJoL*@h##{>Gj;A6ZLs@qvwwld=+?B -z=s4xi@xfr8qMMkpPWBQ%nFttyj&9|As?_Vx)jL`AN67z9QN%5ItgnOnKU28QsHC^F -zsF;2JH96gCFusvG7#XrA9B4bKZw9AxD@1%$T8z@mAY}aE<03hF*te+%{GVm -zQNg{Ct(Cd8>H@62IrVHfsIB|a2&Eg3gbim)i`fbtdabu8?*pzq^K~%oYGP?UxdrCR -zk9B;mIN6G`p?UIZ>qCRjqC9<6Su`c6VvsXn)e -zZSK}+ZXLb)8y%Kb?lR!zH$U-Ov@|FX_T@%9*$*{n$?k25rkRB&l1BS9$&efPiWu_3 -z?l1-oI|AG3K@7SqH*nnAq4aO0v#*Kaz(OG#9tM01aP#cE!23WNS&bUgn}7-mr%A~& -zrXDgBn2QQa*121qJjHdKF!;}4CVBHrX8esH}#T8e^sZwib9!fT6g -z`m0QA&N)0PUHmzQ^+C}PGe}3v(ckaq+&-nHOg+yjEaoM?Zs13dB(_cw*SOU4t2;yG -z-=;XsRQh{oReP^>{pi~9;TU%+`-Ddw@tZLSu_Fi&2CsWG(;X*T;agCDTIh -zrv_@ywsH(4n*hXI#Gd`9)+!$PL&u&RoD!~23yXjJdu>RQ+!?IgM^mE+a_9V>{IU4y -zy`^;E0v?-Bp{@DvL*%uEek-Cx!XgGriLwhK)HR4v$~0M{6JE?gtpE4I=h -zpRKui(o;R2Y&_Ew69@S&?*2CiA8=psp_(G6-9s1Ju)P@*aBY(2`u%JA>2ktqvafSI -z7aBJh;MPdZJW4HTlUkC?@2l;n>t!`$GB))DDm9>#{KKGP2yp{@m -z8XbE=Jr-eqlR6lJZ{BEv!gv09Y+i9ug-n^)`*`DMKfS^motyEkP~X_!Si250a|E$_ -zF}gfeAG#R-Oc(FBTJAvOpmymd_c-?TkI>w)73qu$!5evFhnBNcEeFP>t`4j0X)=mg -znHhK?-{{T^M7Ztj}DQ1s_m1bmbzCWb2D7CbnrU;OD+x3B^yrkQ;ezVW}zDb8y -z4lVkROr^Px`)ljMKpjItJt}C$*2{;cnTF<*bvQIH)`SmD|9eA<$OWDlN13Tw%O(9CFHCQw`SB%PK{D}s{>>zazUfi# -z`BUG%`1_E)O}k2yte4HbClk3>hkQNxm@%=3)RKt^_$5`fmi0qxIq>;FErX^}_eczW -zj`wQxLd~ZmHSEcLtQ>jOTI62CfqR8gs=wrIDlTLXTqK1tr#LBIsjsE$st>YbYx(|_ -zH>l^>kOtj&wFZ@s#PO`<+^UAS)h`ox*U4Rl@30wizJdU|*F<9I$#3YhNV>7O5^v$K -zU9i+{RY_E7V|Na1+@^o32NHA6M11oK1Rn*y95CM<3G4Ia_P3t&DN@3Iv{dt#oMeCc -zK&7(4ja(iR8gx$f{zsa?Jz6cTc2U~NTwad1Kl$MkwRfkTBnO*sy`TxOzQ4u7Vs?L5 -z1AOgXNdtrQ`VGhC7Qb%;w{!j#%AtOIpt|L_8Nb&?>V|iRjFkH`b);5Mjo;LNl;GPw -zc&If0S}h8PwaDG$&)STAvN*G&oeh{sFab)QH*D6{1ZHQT@DT@R=FZy~EK6J?2UIw&N|-EWvzZzFl48F^}b2@sNRe^6-Byn5@yQZDgsTAa;P@08EWj^2RQ^FZp^hu^kE@mC -zNuLJYtlz*z3*{X4WdlD&2XQpg+dHh<;?7}bc(fGWE~*HlhDQZSmZaz~_c(EvP|EID -z3;<}F$A^o`5l7luBvVEl+Tn@OZbui&66!!=n$jkxVHWoKp&?`0^N~81y~b~Yx|>6N -zdiAWf<4*8Qz&yTwnPg*EcFv+DRL^=kK_bKDihhi?z5Zmd=v`&QM> -zx1CCEAndm`f^I7B`o2@e_O(e-9dlVNixzvYGmIz -zsgi~?PS~G_CK|;>{8Tz$dm~p?!}ISl -zs?+nT_(OSWbV#0BeoU38y3n%D+Ov_)_13=^&JU$XPx?%0M4hE}=^%JZM-7%qOAYND=HERH2OXU$fR=*g1T(k6TQ` -z6gmC(D{$$ZmvQNx>C0b{mbhm!uQ(vN0C)92r0z#F`!(f+Gz+Ic-s8cE$$r#6Wcu&@ -z2cP~ej-BO!*Y>?=q@wEL=Z{iRQmCI_s+zF1aFm3Zu%*axNhF4`sY8qYj#@Nl@n~G9 -z$`_&bo%R>(^gpK865cT!GQ8=%FiBWH0=2n>ZGXw8aF3fXjg`adhRa{IDfPe-C0Msa -zpGW??+M2o|lrv|aQ`)>A8~l!)XP;Hth@a8bAOvqxPA}Ow2wsIg`>dyG(=B2tIyK%@ -z#4oRlIjZ_i@KvE*oYU{v|uIiZT61)B=leYa8kpS(fB -zUw7+}OsQ(7%6AZDzkPTB#{l0r6#mljLA$1b?eFv`ZRf^h$VS(m2JWQIP2svUwJ>=C -zzE+Fet`-?S&48GP8(PAq*_R+-sP_9nxwAUL=^N+MENL>$v_W{JaH{xtPR>Tg$kIJVmMp)RvjavKn;r3on-XQAqfD(K1szlT#r;*LU -zfC?>;K31qn#tr*mncp2XAoB|w8lbSu+wkX4FkqRwh1`OQ_`R5|ShExS^zU4yX|kP_ -zk}g|-S_j^V*>$;T_F-a-Jw}Y`$(^egZ&Gq+fH?TbT{@j-@!TkYN-vuujntwT#yCsa -zJmNnlZzOig73uFq6Q&inf=&@h(c?T@T!riJH}_(ZasN=+&|ES!7D=Up&%P -zV3cC?P1^v|x1=$A#wdx-pW&QtEG%;CnUe=lA&+nDyFU%rGTryLA*8kCJx&MK4z6X1 -zL@kT2eemY|fI%yT?s5V@ZWQCfvGNs~Kgh%c;8prY`!p$<`|z;%Iz*Fwx@59;1n>@5 -zl3TZ*)9VN5or9Nv2M{%lQoFJjOHfXbI(`3fO`U$7=azDDvio)>{SbM^<=UMO{?5CQ -zTguLGmzOf}71eEG)(^Q2TaQfFL2Z}BDI2v$7_ku~pVb;~!d7HVAlm+jx1_~5Pv`BA -zSd%R5%b5o=d&UXvz+t#&&Ak3={o=fS$PVcJW5K(tT?YyY>M0sb^FVH&^lSC`zlfo#1W#Vp3>7SDO$^jmTQS-?c~q -zw>PCq{a7LP_)JQnEZ-#TFb+&I`<@N6a5q`di!?;D88yv?PR?Z_B^Oi^1*u2MGR -zc|L8%@b{21PECnYQ;JL3s^6n?MQ;--B&(VRC?z38DSv(UD%z)ybwjjI6hltcK1u0Z -z#ibm$+#cOo#5QV&5rWV71l+H5c1D)mhQ~dM2Gdjz^;JLCxXZa0$KMwE@eZ+r% -zby{b^^AOdA6p!>(>e^37E3HgAfC0W(+27E|FHN{+JeunE^@wJ-jy=i=I*>r;G%ogw -zPq~930_EO*_0of?TQ~7O&6m~P80`S2r5Ne$kCqm1#aqVQDRI{fOKql{wGai>j9NKhxiDGTo=UC9Pt5)>mkQsk%8zuSuF)*F$yRD@<-9WKqo<2_zWazchoq9%3IjlW_iREf5 -zcjZBC<=e0q^cjl`Nzk_g=4*72sW -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 -zx%qZ#Z9d5UX`8OTl_2f-9 -zNdkZjn(}!$*de>(S_=DRKZz$UC%Zd|V`sBE=;j+kgT8KV*r3xPm$d_^;g~|Jfwhsx -zlTnw9C?%(EMzKm=u0m#naJ -z39Xa;I7yjhJ`CrQ6eZqIlNP#pH}X@AOva8;SChML3!;tL9qb_2O?dX=uJ%QjsY5icncWsI+zE9<*0S-OleBsqRr?O;`vyjt&5qo01dZ;RnR#v9?dZav8Whc`62;Snr -zJRY}ZHXzZ-s&<49Z=jSymZ?39k;+OtS}>Ke?~_G^5p{82rqhPqbpuD58uheo4jTBi -z(MkCjwaqXj`d4sBS~wj>3>}KRWWg7YR1m>RE3xl(!Yq$g!VDRBD-4BDml~B)KLM*K -zWhXM|ba0SDu;edSQV8l{>TgDzEAO8FhvBHj*Xp8lM8z2Y~k64hg7qol_jOfr0N&xi)1Fko#t84Gf%4Dx~;Z(A_6 -zIklCO-eWPX^i3BP8l-QI6mGv#PKT9*xsmo*AyU -z#0YxJyYTrKo~Mn_TXgz}NJAw3Glur7N!G?v?ydw65FOpJOO;H#<0!_ub^rl_OG8QmzW)8-Z_*)*U?E~V_Mfw -zr*2WfNGwNjB%tpKCwpfCzlNS|QmRbWo{V`w^U<(>_&7w=-d1C7MzqwWnY0Yxv<>#0t^Y&=$RB_Dfd7Vf$~Q%aZu -z?TA$hy5(Y{QgRMDC@(b2#TG*qjhJySj*pX%SPYt<9m>UVka}UTBiVK=MlxB0%6l2} -zVMwB!>~EdgkWBTq81pisq%L9K!Z^}S$_tImm&7eEp(b^t5T65sl}Cf6?O)lT^P*xH -zJ(qGp-plu@;d|2b;J{9n_BeaLM4`k_Y|p95w0ArQiSuy7PwTpSnfwZ^*OpMDlig3S -zh|tpr_cV6yqtH@XV8Bbh$$Vo*`wJHJoNDqVS=Q~vGPw@q=K$<?QPY_X)xGJb$8K -zE1pj~J&QDOdM03DY8@}2B~G(NMW>CmdNsHpUteL+G%u(?r38Oe&Lp?-ApEK*hc7#`RWsG}6#8QCvi -zAR$MNRn#NVAKj1kKsp6>CWfpw5;@%8;IX{B;QuxX22$kjp-?g}t$F}O!s#y&Y2nh{Zu!VYZJ8jfw^PCiN0J^P%JpT%1y -z7i@r0w06iP8~v})E`2SAMQyZoi!RSv^DwC}gLr_L>{Q-Y4zZiRPz|(0N2v3+tM;mk -zMk#pHLqSn6ccZs7JDZX=tyfE#lV199uA(ekOw8|_nz)htmdBq5sgl^ImcA8-!T -z{C$|kl_Vfxoc%r5^8CSVX02Ij@6__r)bc71qr;0N_Iwsf&F>bmLv(S|99DIVR&|T1 -z6dN{ux@W`82Sx@5n-2izMZ*Brml|$9P_m&2CQWZ< -zxcLB@6y&kbG6$It9PGc`PN4W2)lT47(`ot3zJ~7!cmR2}a~djcSmsQMCSS@@NXSkZ -zB(!hYb`_yro`5oV9jV%Z>8Z7XEHzQ9)OS7S7k`?9TzE7zp=+&xKkxop+rSKSv7pM+ -z*Ix$+b{Wqfh4mtA?o@A6z2dOz!gICrTvwy5q}QDJdZexIqCJpCUm2Xf*vV_rZAr!w -zBZ*eRrY1bqojQ`ssd?cuSGR4b@d?H+tu0JN_# -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 -z>Qa-o6>jFKjKd-c`hpv(&I -z%WC-bo?Xv6e&F$--^ -zlm+>+<78kQ{He%zXptCC^qs{1i0Tr@Ne(aUzjKlDP>!!dLQBMCz+}dqIe`Rg2jucK -zJ|;jD&to{PjJtBA2x}1D3;PQf+1`aoH=Er%dGJJdXT7HR*kNlEHegUf*w~xk_fIiI -z39hKfzCBfqk>agLG`Hp04vFci*~}Z_EZZ6JdSAO_I^RNOGZPg@8wQ)ykU|#Br;@ei -z`#P#crD~@lwYgZ!`e3jWR_T54t+?{}<)Bh-EBzWjEefP5i*uB`od04fovT&krEI2! -z(pCkj{@^}-MCdrF+RGHNmxgm(p6LVB-oT2I2MY}z2Fc|AL7P84d=2sjXFDfP5%LnWp%UZI`(Q;y=x;{~5#cE~j{D};s5k5QN^9T5BhR+gM3UucG -z&;Qd$7>too(WYTBv6sn@3CKUXX$eL-4iGJrb-c!?1-0gK@6hjtxc|bQQ-KLcE!g^4n-r>Vd@E6G3b7$~i->6l8 -z!%SzTCMDMn8&Db6rg^NvO9oNp+zkv?NbWo(vJ#ajXReWLH1nmgCD&{UgG8rV(u_fn -z6&w-)l{h?IEteOEXF+#HQrcE>8{+75>+o8Jlg&1B?_33am^aI8NF|pd<#N7pATOB) -zjv=>P_|p4-czYZ8sEVs`csILA7T9nXOdw!{DB&|8-~tjh!SJz3Yz=G@vkO8JKj}7p -zl;XX7)Fdpu*_xYig|^aat*uns($+pw|B6@@6JirkD<4{of*LGsCtaQz1j9x`_J7Wq -zdpDa99^3bQ-Z#JB=H5FWXU?3NIdjg;nKOr@T6u3-$bAmT(N)4vFR@?<5SD7%t -zfGD~gND1v;$|uwS>zK*g_Ua;u6m;T_ -zNG+fLBB~oipJJpBq2(As^a1pdIHLa9<-KdFG*29X3{%?v{-Rq^ECYBJDj(=nsUs169sLT}4uM1e -zvmTy8&{74{`q{Qi&7B7O55lXm{9OQwk6t7!!}DfRIhn$?>@8a~>OYO~pXY!$RQyZ{ -z@1!kffj>WyLq=A*D_F>n_gzo!FIc473#nEU9{vcz`W1qRWf`PzViRzaJg!KYdiR%v%l -zJ@~yhmfkiv{jC`Pqszyy$M}txj}KtH_wx8OVElrwh#v#-qGjyyCD~e_{V<-+0}Y-3 -zrx^d<<>U8I{UP4J8{eL}eh_?${}IOT!?%ZqjNgdyP55@t;P``7|I3$ugzA6!_;#xQ -z<>Nc3{tGS}&#C^GkEg!6cY#6QXBG^?zl-XR@r21k_(r|s2W$T-T@vWDSpNa9mx@^1{ -zzaD-nfVyOz*iBb!?RZvzSjpYOY}pvEYF;jiZE~)NErwWsJ{GYI-gc#vQ-Vhc)^!*~ -ziKY>V)V9Q2UE+&FK)_3omx`np=Ru|-gm)I+XhO|SG!fLL1ogx`1M0DPaZnQss8F9L -z@iMC23CeIfLg(CVmS_7t2=d8!F%-YpiomwVfCUMdV-Rx^@cegT<~!!mWaZ(1q^vhn -z2D_SPCntIn{cADNVoa2RFiQ9jDBVnvPLwin-T+$m(;xY#r$}C0r1<=s5zrS-EY0rW -zr=5m}^G`9T81D`s!0$K>+z-)4HOy%K^_caKPQ4JnA3uNR98f0K=V=W8ApyoWjmokW -zoj>B?AJrl3O)=Q_I*oyH2fjUo=~v@h0N++Rg>@29EsKf}_3^SfjrsQ6L}jf1944IN -zjOYE86)m|*%C&xuQ6rpW(S9ct+;^Q(@VV>a8pMV<5|q?H-8{3B>~DvB;c@=A@G)8s -zdj&rd{d*APzUxRtgaSR>PH=w}gZooFbeZ7gk8GjE*M9i@?LoI$7R=AJ%Gc*6$WCYm -zY@V@2N}*oXG#iw49T6{_t%qe`*aW`=A7k|_!;6$uzsW|3A%1+Kel(|Grib5Oi-@Jf -z5VPorUD!M{Vgve19DO(2aQx35ioW+?)bHjJeXUg7&*mD%Ju>(5^j(W6XZbz&xT@Of -z<=-HjY#A6;D+sMDk#<1;6TQbP -zPb*UH1=NDw(8^CEtd7}(T3K|#Nk*baG11GHB*H$)pPr2;C;PsGNIW{*K;q%qgL(nc -za}Q>?f3{A~Hz?1Yu{^iT{t9~fU%~uNBYz|1&x++A|5f?PFK4R%2txVqYvXI+R4u8ZT?C(sk2>=34WAckLev5!0w -z6fD@CDb?@7?P%dRQW*!6O`2La(^Mm|v<%3ud1pow@x|YT2v56~28ow%-GT^@yH=k% -zgy26$i2Ign(J9q49{%MlnuGnPsQ$Bv>4#E7R$8OUBM9%$GV1r|S#iX4R8913A+Mh`KpR;Uj4GMZ{uQ%?w$GIEB|74S*t}VBdI}EgDpXWz3IR3qDmn=qRk%U1nW<$G!T$us=v -z2*))O2ii^oGCKxj^31^lEiS)*8fHwGNv9}jnPbZgefzeZNCMQe!}d$1>PNVLdabuu@8QdWMni(-}r#?K6zR-lk(2)AaHX -zYkw|+*gJzJJ&8d4CI;f?Gvb76N6TRP5Xm2yf%N%{f;qnx%X!y~%eUXa`FK47Suo?0 -z`B*r@6Y9xWgiES+3clTmSuFTQ5>d}|LcWwxI6Xa9e|%eoN!#&_Cik~R(y5fRIhORr -z>4sACdwe7H`zf*{Uno$TMiagi{BaDW`srdLHcrAyBngXGPw$`l_RCn%s#rlQVmK|Q -z{Em1DB9SBrK4W^nh)_rQ(_{HZ#?Z4)k0Wpfpr=Ff3?oQISVqURen|5O(%aJvNUu*D -zLf9CpeI7wbKbrPGw$G+%M*G}5&1j!HrWx(CdKwY^x%&}=n_?I&#kU4bx^SA&KG%w* -z4^q;rV@bzOGukI*nn3`|wEwYvPEEaB`@Au=zkMc9LHni}1^w4l1E;5_Uaox_r}k6z -z;|-X9b1eUTQw{X)oH}&-1VsC6#xnBbAU#5mu8l#;ntIvx@&AJg}hdF0Jr)#n|By?_-)Yl -ztQQj;VRI=zD0Z*~=$CPOJq-)j{kv%eS>~(on=PQZRrx84wQP>a^I(?Ivb9$DjQ+$cRkMI{O$Yb -z_#bqV>?6XyI3Ed+? -zPj}!+vBE45|Hge-Lo<8|k@EaCIF{RSmz0OEG3b91-d-d9Di6`-S3@q+HCPw_(>2)r -zClZ{OVmY3@#z-s#-=9;eo_jIX4{7Im-k?EJdre&XQ@Xpai5n!92$~d=o3Dwjs0poP -z*)?b)`2^*;{u)Ci!ToWv=*)^CH9m$E%X<=cd|uB4(fmH+{@vFKr@7omlvU7?*w;O5 -zE|B*cgS_%+=F57t6!;A}G(q#DJBgqlSK~#D=zZ`7ac7&${jQP*ox&6HSxf!s+lPOb -zuA#EC8$h&wOrWy;YU;4KBw^9q?YLi)dodbCEusqdSpV!d4gqF~N>*NtmE3m^R%51Q6)BTY)ID(b6%=QEA*_}`f^ -zPP>#!J&_q(|HGYg0yJQ4kx~d?2>&nk-GuW9QF6 -zRu8`;484n((Kj=7Zl=f27iB^|dHN227P9yPBT4>KLnc(({ppx)0^y7od$Z=p&gWr# -z_8TSq8+TLxk5%pbL}K7AG5Hj@qcTS5_s1v3i!R|ALc0FbMC$(p=cS3U{y#B(>iajA -zIqD|%%M!<`iT}rd-9Aw)bKJ5H2r~_9YN&NdNz8-U)P0 -zpk*HT3_y><_dY(UypTbaKw(H{nH;Z>)o6@TVbC_<6CwWZb8f|3Qj-hT_sg#r6_W*HSP4b3OLHvBZ=dAU~s<3WUTHQQ!04W^v@}e(PNN8cZf#PO -zqSZY7Z>bqxeK)^Rn4<}%=xnOwd++F9#n9L9BbH6`qglaux0@Ypi6?aU=>F-1eyvYM -z%Pz$2Da01T@riz6(6?3s`dX`{tfgXIl -z2!0V}yaa7*u)9*WoIjEu#~+}4pR?N;9Rh_UGAUa+1O|V%jyMzk`z07q@Zn1^px}Lg -zf#v*r1(w#pqHHXpv8pn79FV$V2>;uuam=dLj%tQabDw5C(!+R9SeZ9G%#i+~(PCWK -z`xRa6_Aj!TY;14l$&Cl`-;uz{t?+Cp{-W_<;M1*vzit%)Sz8;*yBjLbH58w3a7Xsz -z&8eaC2%QfN)LeJLq@;8&pZ|HjlC(nYGjBbu_9ZHgTuB+#-JCDm>Au@=BE-~<4Y|(+ -zYUV_@>KSA`L$JH<1|7o{N@7FB+3>K&<@3+k0}bx8to(GfIaGWW*v*mO<2bXUFUe@) -zIp`Dl!xDROD0Oc=xGO@O14Ci<%s%)Oeycr;Yo=72{ifGoFqYnqmX@cht-ezJy?#hK -z47JUQq?5KE?*jot=rvXRo?8d62O9VK3|wD9Q&8Xpp<)NWTUc}Nvr=~z_a~Oy%e)}1 -zHo-uJc>;aFb<5+b&0b9JLPJG-?d5YQtD|xs3X$>l&o-E1?PxRAyD&+LEshlS5UtumN;Wrr}%D*(l -z9$0Kr{=nS5RclZ@Ficv8y5Gwyp!z&o#k@S|!5?bIZqkYA<@GmGf9iKC~1|-KLedhey)^qgN_{ -zW<@yTYsKw&#J}2HhGer|M6$taJMZZgE;M!5K14kJT&2mlpA6~m^#P(y7l{6-w8Tmh -zt)P|n^5=SE4e{$<-8{=?82JnwZ#IG$sGl -zSp)9#^0G5(--Mb`XlF#~_InkgZe>2NhlunK@_=b?T|WPWxPj(n&7_~-4q07~WglQ& -zNBh{@%_ptw`=@r2Z$Zd)xK0<+>k>nC=5PZ0*ma@iFgrXb+3q^AQvSLPhs*gRliI4* -z;99w-;@@$eMDkRVY2bZIwlc34ycIot0y90XxdWQJzD#pBXzqtJ_l|X%`;j(xV2p__ -zJ^Jj7&87v{lFK|l{l61W@>%B#v4L#v-oSw%_(x!Ifg*>z387cfM?3#>Pc-VH-14>R -ztA0A2H*sCm-N@byZ87)XFVD&Y*@r_n4NugH1A1vM_~~#gf|2%*DdiJxGkWr9X@7ya -zz{Bmg#l{c&m=Rw29v#0s=k?HCR5`~o*Van-cWxOngXK)n~HU&>=GbQk{epY3spvO9M#g5PtYiP4UA93G( -zc3VhJvS>7VRR|H$RiC-$e`iM_LW3?51^<*R<( -z7sbBsJg!d`Wo^_&Fn=30D@kilP{ZGSooILmc1*gGb8&%$4%STlz4H3=hSz_+Z&nz6 -za|L^qO16e5!sFw|e>HfjqTUm0mwZo|kMF%Sk$$xRLSavcPCTMSbZTB!8P}D|%*#so -zlFI(JAJ~x}pBvYa=k#~vBKE=nOuc;WS7Yks_Dd3BcV8gv1H=diwC=!8|Fw_@2u27e -zb>mrhe03V0GtYj3L4<-WL~i;^O2zdMeD^O0mjT1(ojC)FP@brUw!2erJO0AJSgHPd -zpo!7_b~v8U%X&XDTfQ)m(daBR_hSH2cAXYnPoz%r@PDn1BQg!J6Ki8c#u>7pl)n*6 -zGtO9F5v=78{Yk4cy*z0ZG(tPOklhE9`!n7W?Fquj@N>WII`v(BMEc-z?83MOUd9V9 -zN$5P}>|W<0{A;I&Y9Fmm@|E$4kW6}Qr?_ciKz~%*l3btHd^l*V&AxVEFAUb9#5kWg -zCGiCiEy|@A3$m&cLLua$B|eR~DSzP?mtela%9_zJjLzU%@;xO!9)fhZ&K#dI*sc67 -zw#L0#deJ-00I%&NR$Y*V<)AlcUi=He3Srm_|JphXA9oT4>6c&t)JxB=KQ5>T7>pPi -zg9bLASai2IZx&mx#@dQHN-wTJ#OPfMp?62-&GPs(!h=7*OGgY)$GDOhVn5k+ImGCG -z`vJ(^w`(ZmBr$TDXPONEk!yJA%`y3M+v(lrLGleKw|I-qarKR88EGF{u%-{uz7=n4 -z)6#G;fX}_xm@_jOMVEQBt57xLZBO<^{peJf-%Acg?JO_0xTPAYvcF3c4 -zn`H=GD+2NHQrDLWj!>cP-(0g-rm~eYwGbi@&d4<@=~yDdO+vV`fQt_h#Mj6akZ9xko}?S10}(EeE&j#=naMH`@~H=Pu_y7 -zt>Orgi0p;MQL;qwUY(TaXQ7450!XGAI -z`q+jc>z}YxjSj?xtOr>LTR;mwL!U=j8ZP!~!998`9f8n-&(mi_3+{s#ON)hS1v2{% -z{G?S=?S-ca&LfnvA!OgdcHT)LkJ5jvV~GB1p`Q|#*uy;~+D>%qz!QH){3_=KgjhF$ -zy^66o9(~m&Uc13$D!>zE6kBtey?|)2t8fgctqE -zP>2L{iHbZ#7kdzYDdFGK?=8s75Nla@q?+a7aPRLP+N+z1oKpR>NP^+mzZiw7TeD2k -z!y4^p={0=jD{AO`d_WDCKTb8g>T&GH8ETuAwL$j){EhwrJ)?|Ic)Y)74Al1sjRC#n -zh8Vg*A6ArDetczQy)t-=F`QzwCj|$#&NoZJ$B5n206_19yOThS#UzC=076vDoqJ-n -z)Tn|X>l>ajy@n+}p&EuTyrhiZ{u8R9>nC~*ZB)a7^;`Ut%hpdGqJDY}f`wGSr!Ui3 -z&kd{}G1S5=7&Tf$T!T?1CIg_Yq9#l*Eo?izKHDA}&|*J$jOuguV*^@jV14d;?EiUt -z5wBz~5S#OID;5s22qrJ_ifT^88GQs6u@f0vsh58Y%yO5FHd!;;5^>3h*cvbh1`I-+ -z(zA(kNl#%c3{qqbzQ2hT{})i4@U|s(=?nV2@5dlG;B9)L&?{6h&v+E8>p+!eA%yP; -z?Zk*`S1Et)>xTG|xUS7K93=N3MtMRn;DgWh3|3#R^29{$#w5Je>~+#tj+F8R;<6ky -za*vV~s54)yOaNWi8RaWE&V{rRmWDWLsoOfY(;|(D^?}L*<5Ak5?BOjd4akXw3zL;F -zJDmNtm!CNujW%~!$tRooGA>A&l#$+Qe`~Udm!G2LP4#8I6HmkCN&BS|Ub8X|WuLjQ -zlvl6pS8LS{NXpo0`0s&PCVCW_*-WHkL8POg8r*M54 -zq=2wZ@18sKHsJL?8cg|L{3u5GWOHnNs-OPXeeE*zf0gL}?25R`tTY#v@F!OE(?1#M -zA2R5_*B_(*@W58{wNm{Cr1A|Wb{-ddL5;gDmN&6rVG>aI?d-!ozCA1`jB`)U&ykc$ -zuC#w-3BNABa8l?p`wM3e5+!N=V?QQ(dP}0mP)rT=6H-*Bgg?GBMo7FQaG81`L3+3q -zv!)?2v(u2S!DDs9tE>6ePxUE}y1G2f!+*ZOF#AO|FQ*AX*~7mes8%6osCg(7o0O}C -zrEP*N3FJz6U0B>CB@)Pz-#*^rsJ@Gj`BbcqlPJJQ%s@Y-D*- -zz32mnwUX4owrKF0rz49UoS&q?8-bUs4BJ)zblQ&nX@0t6W#UFG5T -zi~MbgMLHj8OT0;c8@RqKOiJV#yR5jyONnYmjcgs^$?` -zuW#!u@l_Y4nW27u{KtAk{c08(^}Au-5cPYgL$t(uTAE(N5m3W$l0d*fbt~beMiOdL -z12qXzlad0DzTt9G(Nh?KmII4T@^zsbO?q`k<@4M7^y&yujU%Bp^qpTonQ*`3Xn%6& -zz~oh})&!HNd}T!oI}lnwa6PmYH$qq!YZ;(VET3c6A*|0d@q^u8*Z{4J~&h -z@cpRYQ+cd~om~?TKlB}vhZ|w&LqLQbZ0<}r`%89EJ!xSF&OUt!KEbBC=}4R5$~A`F -z{}`5nJJO{kJn090dO3K~I{|vofb+_N$fJbfO2pB~#z^d6?Xru#?(rC(LL@4;Yc{f1 -z(Gn%Fm>AMnQ0rBa@5;Gapm?7)l*zYplA80ec# -z&>)l*YBG5L!N>BJi++^lW#?HGZ(~-j$|D+i_-%*AJ+HI(tn|xaFyXcOn{B=z^*lIGh=3foJrSQAMq{|aY -zbZJMXVkropZ8Rer#})8?`Mlij`dm_X6Kjuz3Om$DiuB+&%;d(nUL`li>*2Aa1d8I* -zN^l1dC&8LdgDD+MAR+OCFV*EvI<+-HT(+Y8ppI-A8a=&ZXEle8|d=u(sxo -zM2q{a*5zsKCQAe+j8JjAyp*;5+g5sE(*U2Dxyy8etoK9i_Uxkr{8M(m25GD5T>6p{ -z{(G4H&bNEGy^yxT0t-#@R2IqZllEJ$_wc{nhSeWg!rJ+Vw8>&~wJ1L>2;^RGQa)nE -z@7@^ROoX)MW=iBz*Y)}RiGjt#WcZh*c@Cv=~b}2XpvKBzmOMvdwZov|qJIY_rRu1B-kak`Fy(06M#(aMq -z`mWi*;dgMG*|8O#SF3m@S)4OG%O(A*1TPSYun&Zn=77t@&dQ6Sx>w7yb0^EzXmWT) -zftSw$(WVHv!pTHSF&@gW91N8pzcDYVZ-R03hFJ<*)MQHmvbh6z3mBa~I!GI-y}?7u -zD3BwiO5 -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 -zeh@y}PR|)^ANmr?YB?#mRH`hiClf%~<@1P> -z+V7pmR?J}qGfS(7m9Q1L9(3zf;t5Zb_OF-+0du7NN2mg&9#)VG0W&dyM^}^m9BNd` -zgR?+LL6})S{Zfm%(5o1~Qmoe$g7DO&M0TA*CZ4<_L~13@6}o(*?{BOqf+@+nyreW# -zpGeS8pbpNb&cc52>uF-XO9kGuUx#kw*Ws^YDebhY+jX8G4J~72$zIIk`wlwwwuDEE{aW?k%I7-QH4upFoiEy3W)kurm<2Ixf)A -ze~WD}WjMTLo)Z2wh&F^3E9!?nXVi7}{$Vhsv|1;a!YQoW-nx8z)TADcvJb0=mvR3T -zV-aUWYrff(-I|S70l}y|&p=h4!Is)AZCkEzHhD^U`~8FfG;|AqcQpfE%@Eu?AUKZR -z<@O=uE7pZa14}*ppZCX1|0lHq@mhg&l`#>hEeU(wF0}41!`rq)AgLT~9JgpZ2+zks -zcwTK@bPEd4%?av(g!nK)~6^H5{0ad-f -zl%O;~IF=!jjZx!X$y882%kn)wKNii8JxummRRgs|IzQ?b**%#3>rq`vik;6T%mHx; -z>z7lMrC08Yn7`R#J2O-FLLfO7WwP32)yzzyotF}Rix_oUvMzdWc~wZq7H2nbWr?M} -z$cDR$Q)?3oTwOJ1TwS#pY;1OG$Qne|J!F5*Q=&FoOL(d9D*T4Y5AWc_}>f85h}#|ATz -zqAAtiO)drm8GSogMX&mR)g%Sc!d=+qFEYpcOU=et$aoGvu0eZLR(?);aVdEZlIn3y -zU84ik}F4UczHoSV6kR$L2hqv)Wd-6#I*_J7<%v -zZWtinKb9jMrFI@n1Gym;N)MpD^n`|}hfXg!1Ew-A20vxVnnSf-XO2OH< -z08)MqtB4c|eu9f#7D4CWFGyz`+<|rf00sw6`H~Jd7J)8b7Ai1%s!cvWvR{5q>x+ge -z&AdN_~$4nPZya?+y{Inv_4Zq -zI_0?S(#|FTkjB3aacw3%w9Qk|VBugioC^~2e3NOldRH$D>8HtYS5!%jDvqdP_eRTY -zn!Cg6<5TG}wTw15UQ!?Bc3K+h;4cD{7N(r?^4SQag+-yRkg?hnRc!vJ&zK!t*jP9K -zLA&3B2rh;^&f{7IpaukST>#`rb5~d+yW^SyX!2akUw@dEu0`;-{Bdn -zP1xBWV+wzqGN$7a-Wys)@4|^nCVwynthz7c?(+CivgMO#zsDYa$^-R-THW9!$ysxs -zGAcHVDt3y04EbB24n#@4Ue)<@W~1hOiDJ$8Nh#1xzt~Y=YV7*+QQ4b3+$@A -z(91uyqC_3x8`mQ9{MuR+&H{8o68+310)+5rR*)eqGQU0oBGzR7ouECAX-Fb#Iafp?kXmT~nA7KR@t~1!=&GKQ)^`VBSp@kq-0IR2b -z%gg(2!GK6qzEX|!f!=zg`O8FHPo3C&GRb1!nc0rcsa^{F*5c@1lC@Qtj!DO1(o}Y^ -zxhGNWnAqHrWU+=s!hMu5KPw=o^89`z|GFG1cGoGBT6@YQFNy*-*F{%YHxFkcrM>1Q -z+Q@LSm;VEr6X@B28;ZkS7Ze9(2&Xh87izU9a)&F2T9Zu!htMf5yJ-kPy-v?XlEXOO -zgLE59M9Fd6L<6Vu=a@Eb7RQY&#^?yW?U;LXSk%9`I -zTZDGrSBV4gl#hI-ucqek@w=AbqNOjYoT@fsqQ6)$QHKvGvt$7ONE3(`pUNrjkRE9& -z;`c2_D%9G2{O@xHcf6OE#VTI8Oz(K8O~8Ol<3H<_`)*Zna7zp}V)YHR<1@9^Vb%)l%1AF~zzxi9yLy+ywA#yYqYkpIu5a36 -zQ#*PgO?b?1vpjmYO&<9h6C_oV+X~XrE?sBLeE2FT+r#;7sEpyMM3`H5Hiwo(1*bTI -zUFhAV1G*6K|E2x>f2lz0267B14_Eula-!OopnQnb``5JwkI-4(M8Wcg;FQlV)j8#? -z*|CNz)5*XN22NU>#{)eHO8#$fLq^VF1vVdBoE-^9>t^~qUcS^v^*BeTBkZm=MS^@l -z21)I>h-64sSJ*SvH=|XMQC(*>X-Pu$icuSS!7wj}*~hdxJlo6B&~!E3p$e6oc)q}H -z%7k*sMVf=ky>r$>~0*%wY|=6P3dsW -z&+oK2q>zd#(6kTGE9jn_g>oe`bwgi~y-rskjnEM2j%JGP3LAc%-Wl9Hui_Y8Q<;mD8 -zt6Pi~7>zxv)@FuQkS)x8f=`D!v;gv7e3KZ7-JiY@{X6I5mS&D(Lpr5kN#Uv3Uc(V( -zP3gt=|LPk!5g3j8e!kwgo>>Ia%-_P4`tUrB2dIhr$XAiW{jp5J<&?49mLKbAzqT5$d2ko+mMjPuy}^EqzEruU?0YaP%?b`&a$d$rng>=O{33(`T@3Mb<(oC7aR -zlPBAF;V^V~1UBn-bVT -zb8&C>2d=ga9#(rUJRKx2X}`(q;XnK)F+fN;JqlV*LHgH8Qrw!X?<=Aq&=M3H-Hy&L -z(5wPFG;7Ol0U9Xw&c7NV?sMTVG}%IIvMX;8O=g#`&QU=2he52Q;yl<2^T0EUW3*kl -z7-`Gr-axIC%CFBhnp79ysOfZ5j)BuWv~IW+^K8uS=eN+HD5N@%!`zk5m-QF)_dGG- -z+yxZ^xhYhJd>%@QpKb~jc+4&&+gDKD~)jv5$A-mnULLrUHtHvZe(Si=TKW%$SMcj=>C -z=gfHWM!nFn>04f(nz!#wJo%N*+wK8zd;%W@yw#5;6THBWLnnA#wz8J6#o3e(x=?gJ -zCXc3Nz*Ng%noy=x+beSto8Cmj*fM?*VBq-uO*onV0t(gU@W<(aLUK5@jGw>+{6QCz -z$WCI0ffH@c&x+!Oj7A}uVrEbGaxdCHc8M9@L$-{oVXBGg(>@e9aLuIF#+untORKAI -zqs1{n|a?EE&MbiNG@Je1Vt&II*S -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 -zl=oRpmO~iYNgYt -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 -zFL7cb8)nsaw<&bI+%O`B_W(l -z&ywceN*Tlc^Ps4XxGjl -zTl=?zxKXAv*y&uQHIuc>nguEj8=Z@>4<0tqT^`U;@ewlac6z;wcZn!tOdcv@@8mjE -z@dy$7Z}ApuDeTF%W#iuSjV-|N6SU{?VJ4>BkVr<)hm;?YPoKm0^;u-eZ)jkoizCn7 -z%5>k76~h_G6FQ9T{S;QeaBH3d9ls>M0OL2+Dk=C2{hVLmfeo){AV1234O_KY7qdoyj6&!!j{04JWT{et{wUOoLU~r6CIz -z&`bJG^afzU4U{sK=9&7(gQ$|T7#gXxp-*z4n2(iWS|xoUO136Q^Yuy?HZD~yD8!6L -z^Q4GQOmvV#_dv3|Kp|PK=ePzF2jhG_;y4*z<%{xnK<3~p^ci%zDL)+>$$Rjm1#ibJ -zolJrK=B?RT)OL>1VJ}xuP!&x!Fe!A1A+w=AECLolNsW@T`!GuC(}>x4OX;wclXVd1 -zaB<~iI656ui%h^6XjL~>r4z5m%oncEt4-ZCtRi9P59(Kuj3>KeW$RhlC=aofk&Z1? -zn_Ir0sNeGf?_Xj73+b;nd#eP^v&=s%kVAJ*UmR-hthkC!X@E2`wEoDzX2B;RKbUG -zg;93Wu~$)Qt4s<4RF%O=*K<;pk*kP1JlV$W(?w4=YR^v84RDbHz3;$lki>Gb9dReU -z+yM&?=bGpDp6NyLZyWip15NW|w9nh#i{acW%y5DCB#rF2g3gXl;`7;de72`&=SR4pCn1Kyau%LSx)Y{^3ytoiuYi!Bf^AdM?_-*&W-pK)wb6m+ -z(4+;mWxs^1J;v^t>@Llok$Ns*hYk3Cwl><8bOG;wmGo73G^H{kQxUanTB0X|N~L4) -zeZ(68&O!A!gEX@{hFH(!wOaHaaIfmj!thzr#mTGB`%Au&E)HFn>PlG*9j5<4|0?#J -zp$G->Q!6YjV*=L&rGT-rk>vk~62XL>PFNlqA+C{JAB|ecqD(5mC0|fe)5bENkvxVR -zhulftL&r6_@m7eP?sFRR3Wdt&(L;fi*=9fd<#d$W9dy9lYVFP2Z}Z(x6cKgC)CuOZ -zM*P;!708FfEGz9?;lte?SFxO#Y$}V^5ZeXd)t$V?m^al%PaYGRtO`)fF5Fi5A2s7T -zm?F>D>psdeO(S1^jE1pIap1S5vz+)#bpOGrE=75H -zkLD2Z(+cUF`A~n}lIbhLj_63rS$nz~uQ#OoO31cyu6C?;WKwY;uVa -z8u(iv9=ot_^2<%U=N<^C#lBDe0-r*oAf|hksZdCeHULG*R_5y0C(A?Yv69zu%rsF4$a!!>CV!ZV~BP~(Ezl#Aj$oC2+T -zpFD#HP*$TfLxJ^g=1n3mzyIb;Dv5_lYd!`NDH>oj`4Xd|Mzv?%+Ce0W^7DBCbmW8l -zx&M!GXSNT2V~ClVX-G%Sylr}lZD!8N8^%pq^UtIFssfS`N# -zoA8Abl4S2|Na%ofM`rJiWR4j}T4pDw0gV;AkTZ+p^N_`pJA-`&%I9sT?3-3TK$*PX -z#WQ)x;axPuF?m|Kff)iqVOzB4#Cv{*+6u!}s_Lgy)xQ&-b_fH@9LPocpcC0Y2f#`vtZdow+OI|@OwPLLU?s01|#|kpLa9lumt&E -zW)-dp|Ko+k@UHLd}@WvQiu|TaCnX -zVA@@w*Njp4&7l`#;jGXz5U$rvzg-;XepE9>%#a$jYF>9N?q*@jDu9 -z|Agb+cKus9N(TuEy~xo`DphJ&A0nL{{)m?4Vjl -zi>WqcIse2iJfE5;ky(Pd1l8A2<)ei6{s}e!?uM*pZ`~CpdB(=seE_n0fE- -zxd9kQz0Us6Vp9Jnnf9u5Q4tMv-va&55}L8?{UZT+8Q#;UN6`*3d8+_ZoG~~ueKu1n -zLXW@>>QP+>uy-wRQ~-BPPLTIt>k$4hGS{@!t5hW9@^8=SwNX(jzZY2?8?Y$&L#{lf -z+O8AEH&e1j4}tK -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 -z-XAaQx{FPZiDhS!d$T1g$_EAUV+v0}M;ZChWc -z&wgzBV`3tTw`Or%?IzkYVmdZsV27bdVyZGlFatib8 -ze(PH>T{q)BN1-cgnVn?ZPK_m_M4}O=6_1AtPvXXZ8#Tx}6=#>FVa@GQz#x@eR;ro{ -z6)wqFqJzMAE~%;T8hFX8E4f9UN~d_B&~Lk3+k^#JK3V-ixuYt-^eg73O12V9kXdGu -zGti}rwO7};2UGg25zA*Awen~AbTU^zxHlVq5JIwks(P7LCK>QsmcNeXNVEjk+^WJP -z-KXQ+_lJ_MjFhgKhkO&zOZ<4fTLnTGNd?}<&TsbdN3 -zv8C8m4p`9Zhv258v^!`NlL2LQ?5?Ij?g0WKH$x`^712#$LE|~u_95LAPsECqp23`+iDTU!7c$ce(pz#MV36lVx -za1thKPQb}ETe_^{H#_m%o%Xqs?uLY_GA~ZtZdtKA_EKmQA^+{HBcL0u@xvm!2_;MH -zO8S!sU82-fXuz-j`CXQl)n6!gkc9t+k$wYE*=BvMf)^PZ-=VHy=z1EYT65X;8YzeZ -zq4QaUc#bZ-QDYveKSa#{8PQ-&Msya+h~DNoBV;of(cx4^RM3V$@Xu1PmYiUte^y^C -zbR`z*RYP==?975GMSk<^0app?YI*G?+(si=eu11*l>B0}w_L1uX>7J~GVw{eO9Sp| -z_t|rJrP+CoS{O8Mgk92_B*0*DTj(gB8`0%RT@n92-se4oO7vXt?+Lob`jTvIYum-1 -zViOu_uJd1pPvS^4o9M^l(Awewxmi9GlChvv*=~|A=4>+hc6Y(o?gkz2S%S7Ec4Iyb -za}<|%INz4bdw2*QI_KNnfq>if;!xR(V9FHC&~zwnfwF3nvTCBT9ot4Ko^&je;eRFtgLeZ>%BeTHFQ$mY -z{XbG*7-slOH17N)(JTkUCVodNzsHyRmd>mT7Q#GgW1!^(^A78ph99HWmAVV{ZXsQ^ -z8^b0vYn`BYvEI9YPISu8BB03>IpTPkeh7`!P$SoWCp*4~t}vkq02@$!jp|;<2OwUC!&38%^b9D -z{XJgX!$J_QxGE<9?2p6b(^nWK<>+~&C9-aqJfB*;PLd-ro7bB%qMh4al%dxPnmOvQ -z5w(ZT-AKo<^a55D9Zq7xp+D1(q1XUCQm}_ppkq7r2X|5pYqK+g{J`g@2k-+U$;Q*M -zwRt=Qr2~rG5WX2#a^r_81As59dnxbL;afCF6sbdAbcTF*T3!9;d^lkBw-bktv9qF? -z3_BgiEQU)RQQ4;-g|I)!Y -z(BE{#Gpf%FW>o9dWDm!ZkzpPG9;5ns-5^F)6&WZe-F;D~5aE#|y}#tKtg@>yu8(&_ -z8P^+pQEdTA0?&+wj8AVKXh*;lwXy4+@+BS>PovLVc%qOJN?E-Qn<7iIIG()vIeeN% -zp7=c0*|&X8nZJ;n5Zw{7VsD9owO8a~-WJ8&C{+aM}U(^Z)6wtmwE;aWY -zf(2O|OYZ)hp)a?;_#>aebQ_z10@%~^Spv^ynVsCy*^7;mIY6C~{=7>6lkkp-W|sXpT6965 -z7spQicFf3c?nVo$yRrQo@A-g>D-&RdE40bll`^2jr}goV;ie#DL<6s>^}|`3x`q4{In`IhPYa#X -zqR==F&1pC^w`y@2$1%hC{H$m+TggURekqKtD>#zh&+E>i1Htbtfv2U^yyp7);j?G? -zUcgRsUrG{_85~VqN?~!Gxv;plPZ`c}t3Q@IS(cnm#P>wjhcxEu-8dVoqv4|NvNwnH6X07$w!firEz@vKzwvn7ntrOCtu_tq -z|8h;=p(guXEE$>6{_m~n$+iD%O@Am7x2DhPFL`eJKV8%R+8$lg%WG8+W{a^+i`rvt -z8cw>8#kXbaz_tt{$6}w!BM=OK`cK=CK-=(PIho^*YeNFG;ns3;poX0dzQ)c5lhv+= -z#^__d+eVRURO%@`<1>=`j{U1sw&Ta54SU4RPTA~^yzafmeZZbg|9;

&(C#`1Rih -z@a}OM-R>&6QgcRZziTR%`m#43q4t9trEHoI9UGpPm2!D3Zd>hpFwP;*fNk|~X%n;} -z#i1N=kh^~e=)NA>*JP~i>-ZCFT~E@K%h8gxFa%SII-7E&|NB>XP^=yUDpU4j;+XcY -z$+;doWZx&S{3~-%U*JUkSoEAAW{}$wsZ*AXhNx4Pzi6pkw`lZFp#bNP6VTDi&s`a0 -zG}^M2BbLh|PbPeVsAG;4!ZueDS!LL6+mE!N+ZtP<$hliW|QE^G&;-wM?49iNkH=I)yoNGP;J6b+G1FD7O#P$1bx| -zt%*}#qwptM*splyG1wA3@Nul$(YqK7NOXGoN}-TK=F?Bqa_Ha7^G>{?5k~ly>0dE3 -zb)k>PV6{W -z)J?a8_qgeap;4XzJ4#=wJU=5RGS@d>Z@Ii_tOIpl$l=TC#Ow{1vNJ@aEgR7K^hK2G -zyNGgqL8)WBd?d8l8DWb+d-#7vjttp&GjkbyUI&Jt1 -z`MaFXdSjg_q0rMR=A)Ta1%S3r^P!bU4tX}EtSGMGvO6x -z_?ztAfE%i|erJ881&0LPW$lC%2VF*jx4}S^jO4RkHk9mSRVE%Z*vVFO$w_JsDG)cz -zgW)R@KEJEQ=ZRW+1GB7uw}201`lVIc -zq-MRPZ}oYpzyv+ZEng;#abk%4NUh1_qPu-19b?fcp)1Sz98Ue#!+>2Qd8=35@d8Q8 -zH`MJ%{RupY-iB%-^;YvsXdeNkU3u?|c$76&kK~sM^eCUm?Y_!3?+L-FOy%&f?i0M# -zJL;=E>8oy+&gmg+xxD&rGJFija#Sp_(#tv=(1pEW~)E}$1=iU{i&efX=%`Z@bo3|a -zpa~dN$)Z=&W=_1ZnYJ2l(EuF>FR{TwcH@~i+Bq~r><)}=Bqt6b^;c~HQ#+?`#B|Rz -zxYr|pVDGAGb4WGFdK=O~MoQ5%;z3p4O)fQBO#54I)R~2(LMbw0^|#b%q<;Uw8{T`5vXBun@_CC2EZIR#PRd1_uu4P&#UUT%xKo%+HUE(ov$E5fY2K)q>B-DZOk%BsrGoFf-nC>tSdgucBQX;Y5rRJgZ}4VGPxfZFF(; -z)Dq`tfNt{v?av0c;bJTY8>9Y=_Mrsb1nM`fUpMBx_hSP^nfl)QaoQX_rGnJ$B}{DQ -zj?^JHNgX_PY7m!}L(=J*;Ma-5{ow>ZTIk@a_=gkVZ@w8G_AGcT%dO&T65;P2h^lcw -zRLydTdbp|(9uL{zvGzWAY+3~$eg<(h4?|qdI*6;OS>@k>3z&Z|K7S-`1M)Z*)}gP_ -zB<0BX`f3vWYt8-|^N+-H(rI4EmV;iWg8iT_+4dYe~g(=88Rw -zmo2Ys+=WtgIc+%y%H)PdRdZ9#vi)3ju -z=Fc>y-A2|$W3aKLLBiYzePe}#Ku%G6s6Ec>PJ&cI_xtu&u_PrvGB2? -z(56hqc(Rx=^!Ob|By-od?|nsymYQNCr=G-CkHrXQ3msSo0d1CM-h&n-@>*y4Qm`Rg -z@!Nxe>A+7{<&RB;7$H?o&xGFx4^P)Mu;`y)^ysatSm8r`r6+R?GzsQw4<|5e`>k!Z -za@R~C*h;R$c@WAiSHy#I0d6RjV>qPqE8D~*O3>>T&kQHBP)1z7ReG1=%sR+&(mZC& -zlZ+_~^_a=11~ZziN2z>8^%*i1FY>0z)hEe#HPlYV&`@-(sDPCDl}C9m8q0I(?5;w& -zx_b;E(y0 -zEodJ148JGAXFUmM9!23)*6E2-6P3zN3Yqa@V-B=m7SE9BiPTG?c#>RCL*(*-==vs| -zrM7)h<&Zjb1;Qye^Imk|IRWUgdxN1wYUwTXS-V7&-0WI`K90PH#qs`MqI;4p?>>pL -zTo413uqoJ~mEU}FJMf*!>dR7U%EsjXWez0U;$N=prRf#disi+wM4vSxH*V=s!DDJ(p!`+Jk|_oCcjW!?Gx& -zCc!TxTnuY6>~6sX+>f(F7{9g^t>M -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 -zZX@%np&NH#E^<P -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 -zvoxs5n=A#j@Tp0c1WTgT9R9gtHM=koq9LF -zBe~H14k}!80;wO)?>M09Uwd1{6ykXq#}hh62|qH+(jw}0?cqY1?=HF(nlxc{-NIW9 -zK!`RDsUI%$bqiA`%tpfn(YNbo=d_21^|WtsX%^V9Wz%d-)!uq0r?T@9K^b`-nuAWn(8U%v5W+?to3MQg_v*lxhCU3dVu@z%3aq>uN?)ILR5NMgV8$h=md -zrq2d-0Vv2fZ$xgm3C2WnmGrL%1!eC5$8Q^@i!dyX;{>{xA`GqaC8OqHKnpz|+D=DK -zmlW)?1lNr7muRb`{3J1jTEsBBk|>eJL4+1=B&%7gjuI_$KmTl$ETN-hQFN3{tdgoD -zNy1-UDT}LoIvgnx94Q#M2!RQ5VpCDV^-1BIaO5Pi#9lgd`sg-qK1DE#AHoU&_@e`8 -zG!CFqFsFr7eRl#5pj2&mNR`a7WY8%<(n3$+8cyMJ8J1a^#F1pvwixAnd>g8CgU&!D&5A&^=;eY$@LCykUrM+YO>`1Dqnx; -z-_gfnu5qpAF@ZucoqYZhD`wwIu><Kd__sk0j&0aV}o5|hS7OI&FOnfR?sx7=6VVJSchWz`Gi -z9%|z&Kl4q&8Z|G*+er9c)#8l~@A{OqjS~l25qmOf91JapUAjNcg4mq!*1>{H-)zOx -zT@88XK6yD(eLMq>I|M*$$l -zrI4GUp%mW}5#M`I#y~X)_s0Y5s5Z_ZT=h?4#^9z21u{pmJ=JC>WBkZqt0#s7Oug~> -z>obKU8~J82GFR3!P$0o|yg2-7o+67K{dVH4w2a2V$Y1p$L;m#E0r$@i=HUqK*OA8` -zq>cfAway~{{f8KvQ3}EMOJo?lRWOjd@|PLKQ7|CO$Sv!zN=!2^dPzOIeki}A0jAMd -zy)brG{ZP+gVHm&TQ}lj?USpur4N5rKtAusS -z;=PyyuyzN~@0eOt*YBg_JUR$Rh -zahE61uOy}6$eX|KpGG_5l%&e2gdOfzRajnHf+u>^O}LnmZ|xO^6XEytOfZQ&_D1Ki$NOjQwLs0tE9>wKVm7o-9jOC@o^_s_S#Nd -z)gs{=Y-B42EzN63$qDZ1(+b3)4r;`3ePvWtgqNE1sKY28QNd5}7fsWIyIdxx4M%4d -zwlI+-x2QfXdzq_U)qz+VdHsbb78gJWugnGC9kLZ2m1=#tael-;#*sgs`jBY1d?tKc -zP7DB>f0f3iv6E)iaz!Hbn=_Iuej&z&mcD=rzDP~Sl-q4&R4WsoZx*k?TAHyIm^;xC -zJX{^Y2v(y5{}Jc&v<0i0;>WUGJ>%Q!q<04Vo&+2D<5Rd0-5)j;^E=?Ravk>y1#x_w`0p$h$q9?7n!vU~*ryM!%es+e+Nia)nFs -zuNVa7^%-}LS|Vyn>XQoZs>3ARxc6B$7=q*9LZv4&KJVz>H|vppy%aWH%W(8C@+6Ex -zCW9m_MGhr`mqtcv+fpAMipq%O*`=y;38T*lJrOtSqQ|hWGNWx+wq5Ro>62zB89Puz -z!mjJFlT(i|pH1Gkt9z)RMp%5K^fTs>D@myj2jX3gNA -z3FxdQlz%rWqCt9J2^(@g(^VRsFWy3RwH7qdVGQ$5@Xy!cQMIlq!79%&Vb|Uw&(W7` -zNa$&AD%MPvA}cl~Z*i?y-lK5ETDd`rB;k7!eb>niT(Q2}FzJxatXU2lgZx~Pcj;ie -zVJjmdTlNRwBrg#92j#Aq@cFzg{le#y;w`-x@v1xxFL_-fmX!NT&y@K~kCrhZ)0dVq -zB{7`PZ)~9(P5Tx!O&$I@RV)=kc&4sT4usPHlhsENl{vw@R&O`|2MAz6u)vntpeyLd -zfci<-tZOMFpWPc(m@qUYa^ca~>DHroqaEYNp0S=vkUUbIM -z!I%*nN7;4<9Y-gdt!EV-iuwWV$VE!?w-so|CaqfMt4^b?>%{BGN6$rv*P7>WcoB-q -zGi-Q;#^|UQueI&6HBAa611|tQ2_tLEb97|20Hs7{Ctc8=a!W9jwo6Imxbo``02gzB -z_dZ1#R^D4rX_h&PG@TUaqpX5|nbubBAlc0G4J=ru;=|qQ1@?=H=3pF`7CAHuwF7 -z_(~(|jFtwT3SIaXbv0Wf90z4rr*WI+$qxN>iz2|i?=9`U&f3Mirjkcsxvi1{x%}G! -zDU!cdt7}AF>JV9&i`^+*@zS^=qks-}WO#c`>|W2&Up8IURoQWXqH<*V$(7XX7BFg@}DOO`Kd -zjicT$?b76kyiPA42P!_F6#W>DxxpNJ@Y(1b^_>cK>)EqjZMvufu*>HW&=UBgJ$gehS1PWmS(kM5Q(XiQbxN^&hQMekhUEc4nbr5~E -zGupb$K9IH+JNjvB`7^jbCYPS3-08}4xzY^yG7}4n|ANJr!`|1@E~GG0D>qVN3$z={ -zluO%nAI1?{U9*jBS~P&Z0;SBL^wnN2e?;a}KFl05it?f>?gVyF1As(2TqBk{1~$NJ -zXAS5E4*RL6sSU7v1hhHyEITX%7W^w{N_$@5ZWSv3^jvhVqEBuOYjauv7$Eg&We#$5 -zVLzm>%W}xp_7Y1w|9nu2^lqGNv8Gi|1Qsc&K5>pGAYQDS)2A*K8XRaJA_i;dLSYVP -zM!(QSq)FX|ZR?>cL#(lXdmz?Wr00?Qh2>JjD%>kYs&Ma;MOT*SvT{SzZ>$vgu`o`G -z%o0Y$9Y#k}H9)Fx?o~cK4C5v|@@gL<@yivi1DS(Yw0r4-kXgy>pD4=P=p>v8Gx>gr -zVf0L{OkDjHl{dFLIZnqp(bRcfx1H44qnv*dQ&gJ!YeiYs7*oydVyd}=?^{u6=u9Vb -z&Al|+Nad;UI&D}{wjQ1Zg-)Fre$#FAcVXl^-rP~euW6f9#qSSrRlNNY1Pvw#`bnlzD(2SF4Ko_XuCrsTN7%%W&LEd30&q4iA_va9K?0TrO8ImoWfY1%DI@8-`!L${VXaK8T -zJjL5F6Tz`hu+efBcS7!iP~H(J@5p#4uMx@{W?;1}J&i4Yk(RAd%hu7dCwV*P(6ZBL -z088G_*(hfALp}l}UxHHGAw>}WK7hZI5Z?yBUqXBngbzWQ9w>iawh5{Y>LBU}{53(; -z*ykvc_kV(sM$(#QFD9p -zs_7h;+*W&u;r5IXAz%6x772AsV0A1!4u2TeP{lhA@4BxLuSoYDhKkK$73ePb!v=f` -zf8Rp)rJL`gO+Wn|Ke-Wp&qG{F7L8kcwu)c%)wdA%c2^CcET_$&oYnvklkrEo#PPp6 -z4bbXZq>dWtw7WLwhD4CM1FD0f7LU!PKvf)rDx+Zq!i~BB`wyymF84l+pEz|D`~DFi -z{}5Dr0IIDx2CYzbxo2WiF?Qc2Xvt#Q-Y04Dhgu=k!fX>fo1x3kPllYWMNnLUn+=Gs -zp~&O#yC2XD)m3ytN*L%BIC}cv7Y2R>Op8@L-?AcBg)wje{{D`+U>d;>^zY(*@CONp -z!~8h~e?X-gqrE+B?0poNO)b!FfO6sc0Lq~(h-g*a+e@eloeXpkSiwwmqXek)8&K!$ -z)7l1{IFRAO6d1=x-npQ|w}*~n5ouNYB`E9Mi7NhE_`LvSuZ59)tU*2iOb%qLy~M`M -zHYkeDmjZn7UNn*zgAUO1PFJkdg((c!HHW6K(ua)=(1`xhX-V&BfZ5iyAj7B!c+IPq -z!6Z(`Qpd*Aj?neJiUKbiDOp*8&rO$bGGp^2atn1=UqF%Y*l*FF)Gt5Nu=fA*V+e#E -zkCF)J>A=p;*>t=Hbc0D0^v6CZ@CzvUD3;s-B?t@p3D-h{+NwAL_CKIqH8b>FXz68G -z_S%qpRBE7jaVtuf)P8}}4QsnKcsk{};4W-RavR_hX4sm}ETmzKh60}T-|@>1>>9(N -zs}E=w&47LG{Ubyj|F*Fod5%_q`6M75I^b9czJPl--bKKm@pJJV -zEZ+a`b}kN`K^;p=5Uz_ORa8U@;1m*18E`B#o-*vjpQ|L{J##eCru^_*4*Lc(Uy^XaM5Y9L5ej%^imvca5#WAU -zDVF4xn5x=z<60V4(QeoXq5p+Jw>K;Hj{p3%8Ey& -z1`HUb2Gmg0OJ5s(Y1!oA`5XtC&A_+-%fxM(Sb&6pm(c38U2X%4UmN6rMAUwbqBYVN -zZpU71Sorz^PTQ;SzdEn!Pp77+ZE(YS>p&wQKUgK??`prr)#LwZwZKJU(E4xy;Dcg& -zJ`G+0n$JNYVhBd+8M-YPyNhd3Be}E0K -zT^U@Io$#Oyi(R9lb4-g|@ZhnrOfBXAu=g(DQB>K&XunfQI;jQ%26;6kAQ~Cb1|@VN -z;n5@@jlqzY5FSc0*a9-7iibl(Vx`Aa%66DJIOB{uqeuM@j(Em%Mgbo{cN+7;14&>o -zkpzQgq}oDkgp&jkQ+KUh)tv;GIezy$_xsPi|IL@(wcmT~z1Lp*wf0)I|2U_b9|q@y -zx}t80Wi0~}vrlc$JU>YnL@jnCN5D~LBu1`N#<;N&r;_3y2mv4tOdVWKJT{+)-YEQf -zU;aW2^?N(qCI`YYBy|U6O|0YC`0jQa+IzrDp(})03 -ze84qCoc*2}&t~xKkNK9hx7N2_hCRLFao@MC-<+!#2^kd6`MW%@W0tjy0UVdRsxw$! -z>kl#CGP>4|;J@QDEPQ(v>thn``Ttu -zxxg^u0|<$-;W1AVF!P#P -zHzb<^Z)r4?hA|zALX2%QmI3$*_6qZ0%>i>fndljPyAFN0i!pH;jl7#*kZb~{5JSIF -z7wbPC3vL5%PCk2gGIuNnAJ1waG=MDAgYwW4k3dOzS~7wA?&L=UC4wQjBpsaNOJJsC -zM#A_Z7V{yzkQRe5e>@r>F>%NwBnyP3D!EDtH~TT^N?EHT8Q+EZu@l1?Cz6c0>*JUx -zQ6RaC8wUz$H||H=uE!QbI?*=nWpLx5J_OjQDXndb`xrc=qwU5wZiu)y91*$Aw*H|l -z?mdk78}<6E-9f?6*ktj4EyDMI`}VL)B3`?}3mk=?2Mh7?ZNby`Vo+P$c7xus3~&MZ -z8lx4EXgvebj4oY4eZc0+z#sKs3R31B!WL*fkD9??wHuOC9SQ90)LaYubgS6XglUaW -z(}=C@#*70n4|W2;=-=Mjb!;x6B<=YtA=#~$g81Ap)tSI%U~>CF@>pd!l6TVQTFI3m -zBxGaN9Pucx-IxVdTi3$ivm`gXnxC4QOR?_OOKrIpk`FCxgYludFb8H84sWR-)oEsP -zF>-dh!=kj(U!a#-FBL-MLZME9VpzBe+%+vb5$26?;jCC1z2Y%^4TMVu%og%*PZVmx -zckqHK)j_cf1=^*{wnKR-;`IL@uL7e`_9?mgbXaONCrc(nF_`1*W>b%tIh{^38= -z3p(bnd{omEa$QQY#TOyjVn!j+uyF*sl{Il4UvOenQ9xd7*d7gI2K6w-1RfFBzc9eN -zBIHuCN&FnI5?i=lnTe+l1hU2cLPcQic_FYOB6CtRM29`li12BvP3FCcs0hWovmZrq -zBcBxS&F)7Xw#o3j3g6uyo{qkU6Ugrdlup^rCW=wJA}ktzaw`n06*Q`9U^=@p%o#cC -zmTWQep8%L!YNl`T_bQs{Um2pAe#(#0OwS~WRqjaP)6~LEw4znfi?SZY)J3vfWvcP4 -z=tnW(hZzF*SR~3~unf5#hwpp24x}qQs*%^7ySV&gsxremva`Kx+e%BHI -z0`gl(ejg{lrR4Wf^7~{zPLe-|UoG#MidU>%Q1S%Q%Omm?u*VA|E16{bq%X$1AhA)& -zJ@^R{t=^^dFY(PZU2%Xo?_xG{y$k7zeZ;khv2eXhSf-zp5=8Z)RS#>+uHDa$_h#zK -zX3bzn$)seVhkt(-0{(s)9zSm^yJlm}B+7lPLFkcImR(!N{CXVaf#*FGGb(JQ0Gqq*2HZZ?cVCW~cmdyQL;_{-a -z>@dcJD)bY_<4TV%fDb!b@F4aI(|L~u_YFP+Pdp@@t*h+tlO*Q*8KfOa9&94?Qw|eb -zLyD2p=Ce_XRSONv9k=qYEWvDgH!+L3-p2tEdw^P^K%!ngP2=sRDsg@M7n9>Y?I?*C{pmBo>?hDf*WcM(mr_6gnTLD^RhyYh8i8 -zg|2uAm83uayb(iwx+|0GeS(6$FCUbj4dSupDnhah4v0UwDPU(mRdz -z{KBNs)DR5Q26vnA?vEoQcp7UKJUGm2G}Gow(TZmZJ5Kf@ghOh#qc>8!!&#&eqc{>v -zrVkKr=}8p{i7y~!Nfq%I2py3L-d7r8y&fbZ*WW**eSH@kHK%}}3x>_USX|@v6gQBU1!bMjQ=IX&&W3dXDN&!{Mko+%z -z4PA=>J3R&^fc%|iP+GXkyJ4Ui%=&+r^KS-nJ`;Tdte3A1X@+4rYBO+$mn%rM8jmeW -zM;0Thp~XRa7HMy8hnd8WbiYAg{0|{A3_!HtMu=8l8^HT%?A?(Zr`?#Nc%&ziOF!WC -z0K(lf6f~BaNZitGLkjBZ8L0YyTU*~X0F#Tlp=O?*A#MHUGPSLh=|KTrM%C0L&HLyS -zzn_b9L!>uGQITOvduBw18(j9_B&1AIs0AlOX)+CcgwVgNY_Y-2>KPl%{dSea$Uuqvy|}`NROBIivP0$~Wg-gBHs0J(WxKVjyxX*FjCY%^hEN>Y -zW%WARTpF0zmn)b44;HcJe=k~C)fTF(nIU -zH(!Xn)zYIsQ+}A9PqYuayMf=27l2 -z!m+)U41MxKcS;!7cUgZb-}*F!P{n47CH8BE_+D?5)sqN3gtrr8W=YHIO -zK`%{yQjU?VB-Ss~SP$j+FBrr(FW=M#YTdm%Cp7+@I`6qWsLoH_y3TR-L3L(y-Crm` -zErd1Un`Gh}nE$j9^kru$sH;!|6@{1)N;B~$!Go>BFEmJ&vco?oVFvy|NngT0s4SrS -z$u2HaS@TQl(k8Pe*krNV%pu@6g%Ero&zVXUl<4*VyNxu^pN=REG>$FcAn5v6@?1-jzDWkGt_v}s3C*+LMoYSdv9DKoK*bD -zep<_#<@a$#AkMSlHd8I|E`c-^YBrihs?DNIiL%2M(k_z)uNk4kCk~^-o-u-lcp`Hf -zNgQE6n&Ck9qp-9uqiA?fmh*&}VnAPD$Dojgfw3&J0CzSw-moaIpOcg%% -z8o -z7v@UNht1g9m(=F8)wgztr1b1goX)1*2mCK}&&IVb}^f_L}9MA^dOT6&RPZYGiGM!_Q1!&!>(< -z6a)->=HFyl(LT~~619(1j_Yj1)vg8~awX%_t(n_DQ8Xby-DV}SdY6b7dMg3fE8?fxzIXN!+~fO4G*?N^vP)#UpA{5;H{ -z{)cb|S+B4B1WR1=2{NcjdZKoI#URl0RL}N->nb3LM&8jfGl`@ -zV%j~5{O%liB!y)Hc1ElA2-9cYAuFr59KoObTWSqb*z*oe#aL7SaV&feD3-scNWY>h -z?!%SN(v?CkCHV7GEwF*~nY|zE(cppJmhZ~_#O5zGK#-!=HcH5*P#U$(7yM6hJZ@yo -z+!_iW@si_V?z&b{JOmh(Bdl7(FI^*K8Mtc{?ZKlcS8}1SYbCcXmC|s2bNMyQf9JP? -zM%cA3{dtYX$41vKT!$xD(ysJ9VRt#YH>Lk7?8c|8(yH`-3cEe%UYhO=yPrY#gXzBv -zyYZ2+^po^ohuz2~FO5%sU#Gf}hee7{e-GVJ;KnDj^44`ON^UOXcde76u!76bv1-i< -zf-UL^>!HU>H+JCJa2$~r@P~fook`>|Ojx7@SKLF$Lr(tDrC(=!1ZyIgbZVJ6Pk@Q; -zZhRdD-$=!Ih^_L-sYGsDpN;L2MguOkHUECgGw+8iNU$llFH9eEgX -zmMoqttXZgu8e}{=avOsI#Ix>m^+~g2GG#h%q6n-yv$oVMjz*4o0a#}t& -zP46$CmF+;S?6&3)Vv&O;H7k+cTP;)%k$4maRme)y*U<;(CgkMN2Y+U=HRpR5P>CoS -z5Sgd5%=T+rqJ;uV-)isO5;KqUO|_rdA}TK@12@6r>R-S4X}v{}CGr|xL1l9nsR02Z -zJ+@D>Bcek1VzJhNVn&hiRbvtFA}q5gC~`T#H4Xi;m5^)_LJ@Vk8OeTeLU$wAp$$vC -zafVcZJcVJ=LXL|9Wos@^RfOa~%~42>8Xc8N-IzeZq&lswKGi4!^;8AxM7ZJw)@(bA -zIzH@I*kShGt#JS!5L6wX2n6isibKy)ayc&Xc5fXark8}d<+#;R&BrAfzVcJ_W*I(;+LQ8{-hEwNCT0ocuhO -z*6U1ImctjBkzt%j0)d1HsYPbmVL_d4*e6Ke3Q -zZ;~>JIC6`ih+?O1A&xwOh$FW|#F3k~QCny`#N8UbGz9|2EKg3bodp{;2F1H8lGKF; -z;gryd<*Xti)d@;Whbg$rVJXWKLVQtMWl=w0)KlwdR8%ycW}^9`mKuj_kz#5cE!fnR -zMKaNV)N!AxE~MS0(HugS6OY5f4)1nYG#OF&Y{AjS7|NV-8NM{?(5D2DQO@@vZf=DD;c0Cit9gh*|0Q`7y4@B^gdTq&ysDDXj -zFA~W+W?aH_KyI61m4(bHzN9+XB&9%?X_?98#aEGnkmQgG(%zi#0pb3?r}Mr)EJfq1 -zwJ2lq;9BKXZcnh-fPi$!BP$gt6bt^#JW$i)D{G0|A4s+nlXbE0i0js3y^(lIuW~&) -z)&$s^Aw{DU5JX%GW8W|S3{QVe$Ot&Wf88h~5S^NZFsBt(0dm)CE0^dDH-$s6cY!Xs -z%vx6I{GqJ)hpbAc%2e_df8UK8D12eu%Z?Vmf~GH@g)1B8 -zVF>($fz7rIBn8E_^kvKU*T5trzIHIYYZ_hV?z^2GA=Liv5eO8|-c5Kp0C59EaL)bW -z^4+TPFXrF695NI?6^cKKBlH7J24I=n!qS4HEvc3@MmsH%KH34R1xr$`-OnsYN8DoW -zOxI+qd1Tm}t0zQ)n7l@ejCe@F`>fgnK)_~|4A{A$#(OIPeCiVgsd -z4Bp*IdtOn*o)Ef_dlYuE$7w -zP^}4l#L;h)v*?QP;K-sq$lqJ*=#=|WF@112>L=0V=R;F$iy^OjVyl@?^NB}EjH(3{ -zMOgh38(ELq-XJ97KtyHQHgW`~V_bk1vZ_=XY=vwRw?~jv|2h{u^6Wk;@PQqCRL-}I9yH!DYAd*oD4g6O?p54u(w0JBU^9? -zythiFAUxX>#Os`NtRy=o-=%{%E_Vdx0PJB%^FK&R$yP$7-$Sz?`v*-W#ZDx|d<>?#afJw}3}uvc2qD=;2+8)ys11`6mmVnzpblXiCK3-u -zBBcU?5|O?0PLVAC-Ex31+%Jwso7D;o2Dy%O~+ -zC9L0rLJEFfq>9jh6&Ran??#COwd@FSSW%eBzrT{Kl?s9M+kB~Rio{^frMky5FyIm< -z?*hdx_I!G8%T_%CiMif2hJvalm&6%7`87(7Y_ -z=f%_lik&jB0y>jIh!Di3E65O6g!Kh~g(|~}AgU;>h_GiozXBI`1Gy4OIKdK#iq92+ -zBu)_z55!(`%h(SPPHiVeABdKn7TE!ormh9LaR%Pm!xSUnqv-=QkxvL~8|6H@M7R<> -zgYB71RSlngiZw!rwA_Cl(l(dGHee

q~^okVT1ovt^4Jeur-}mFPDoNcVz$)Rq+Z -zP24sad~TN}&h%3REAHi9kV-eNsWyZ2q -zq0C-bgN*TU9l9(G2&r8qUARfY!i66q5*F0QdH6QffNWy<1W!WZ-zKBff~(walkw`9jpmis{g>^VXaMV{og6h=Dv=Y>Nhx{ywmR^!G6rtM_$oq?#?g*QCk -zRpQ=9ABcrkr4RV$cP*GT&cLJ-Xsz@CldWFyDZJs`?5Y*3>jPE#3S`u(m*Plg_)217 -zGg&_$lF{ez1{R~o1Rcl?8a?RltDrIXB1ZLV1HhusQ;0)^-KYjH&sE52Q(2!2A<-Es!) -zwIijTaTv4313z4p@oa}+AU;Nv%4iSK+;70UYoS5QuHbgTFrNhwK86|D&d!IHAbw+R -zZVI4uZIT`u0}r>vspNROO~c;iU1iQu>Wz6aV{(*=a5WhcC%9V#wgd9N6M+wq1Yg%c -zG?@BQ6gd6;CTPqKqdvs5ot(Q=6$z%e%m@qMW1_RgPmte9I{Ei@KtBM56LR}dFaoSydJsE~A`by<15pic -zhdQ{%imv6#z!Z7MZEqxrrDg4FiY4J2wG>zzcWw!d!}5YtZo8 -zfioPGoNh>|8{_M4OsW%(P1c0)HgHRf;4j<@n^Hq^U>auT(MUm68dv)I1A0q8YZS*M -zX*92)1EsA*9l~`zbcF`{6%VGUWzeQk-ShcvPT;hh9co -zeF^F(#1jN{@?AeZd=|%!S5L<11Mv`RsBE+h={Oz>6LC|!UsI)FyHNy1C2noFYua6t -zQ=OKbR$DVH)#w+hAAwd~mgkBlM`s2CC&Xqgu)w#IBwMVrR>9B}%Jzqk;Y!Gvnli_u -zi>4lRxL%*F}y!<**HzlP^Z7qvd|=YZE2pcpX| -z6>DW|hgyvy8cG_aD5&+IBU8~g5fDQ22q4V*X|L#1F$S-P8ugX|MeA3=^?DEf^x==D -zNk3>#7UI^q^p?ETYy+(1FF)C3)&pVnne8=OE*^hj;R8oV``?MMbW^a -zL9*8Zlc0P?2-&aD&){v8(4W%l%`|X5hAnK4xMKqNw1B(N-cp)%h|E7Nr8*&?57+}+ -z=xn^_Tl|VLDA`fo`LLhe@*we@q53lS_+?$Tcg7(VYf0fSY|@E_kk61|&5$R5_BsK^ -zK@p8d>fNBr0CVE2FB6?mp}axqNn}`98(oP7s{-5W51v-U_v5I; -zhA+H@+TTAz#DMtX)8PihxCdori`(5&m^B~`YpBpK@@C1Lmk(KrXMdxJW98B<(AFB> -zA+qlEpSp1HOeOcMsP7F~0EBd+#Kq?#TF;Pu2%k_YdQ!6GGwa{QfY&h-`7?CCOxy_( -zcNuXfhTX4Q!G_x7*RNM{M8B~(5b#HEib`kO{jhI~!??_xZ0vHh3O&%@Ffy6DJ!hGz -zL<#+9ud{8L3kB~jL-{YKz{}L-=+Uy#yQf!NCt$z*GiA|hpo&O}dFSpMWlky#QxoJd@voIpdb -zpnM#>rY+%3QoC@bgqy8lOkB0@VfHH2>Ox8reNbD%8)7)WuEaxRQC_n7AiHWvAWm8` -zAdT`*%1FtjU<;A}`J=Mu284xSUU(=BjPMXSDQSlk1P-0lI0!18 -zbXut9dQptd_bHbZVB%F^?f_tN?l!QXWf`=kC3A(~pJAj}if|@D&pD7NisV9ucH#P2Uk@|eJ -zIMTQdviilQ{X#gC(nueqN_ewQg)-8Vr?DwNTRhN|ABT5ep8DsX -zF;pf>%|foleu`LIId_6A)UhLkP|EjJF_q>~^JX7sCOynvk;XyCgsKwaD~HXUeTtzT -zW{k2kfxU#8=qg9sdszX~vNUP-%9WH{5ZsP8c!}ayiw5fa%#i!n<;ezNNix-4jTb9y -znxLDlWq%UmW2Vert7Rw0z&6S+T4vAHv7^Cr*zC1>*24J>T(u#llWi8DqXT=!_?kL6 -zpEl54P53<%t8`qo7P7g(`L&R!t-Bf*d(0ap0t8_GC&0G`^Zx|$KMW`)Rf;_*Nvckm -zyTNWGDzPlWNTMrl*=AVU{rj(Qtzm#wB2neCB-s*MhuTosXna7}eZJbF$>~0?Uh|>S -zW5sq}e`-be`fb^=L3&QHw}_UAv4gclj2+MtVMQ$w2}DbTWk5^BSkw{$&5UOfyLY9P -z%OMo-KVz_Nh>O3ySvN$U`6l%WKwy~-rBNV5g -z?*Zg<5yucKDnb=4#EJ_n(MYU#IWJz1LF-<$en+e?qP3G)Uq)*yvA&Ad6U2%_U&H{h -z;)5{p5U~>FlJ5|!53T=9tf*H~{4KE}|El;LvEpk_u{=fv8Ts18QWAh?{Nj3I#S0X% -zh*;au`UtUhpf!_NkzGhkBUTZu_Y&(xQh#D4iYLbqYlzgJSg(@$6KfBte>7VANd1Ww -zZ#2bDVnvoSv6Wa+Yp!@AS_RpRE*}ZNg@^b)u_mDPPsEyt);|*KShVgXRx4V0VogTt -zE@GXE)>2}<8?Eb!bvjy$h;;^9A0gIRXw4*6l(D4p~xM;s-nTejwuvOb|X<+3hVs8P(%-* -z!ES6*eO^<1D7&#k_4%dZGu>{a4k$iu;bIK9b^-Y&Z6)KCOz+ -zEW6R7LS3u)q}h!Ls?Yn1Plnx?sQSFF_$;s+$ErTRQhc)PMyu+xoA_*9VxO6;)_!Bu -zpxTp(o*AR)#<^^Fm`iD~Zr*@``=S8-XQw$&xD2aw?Lt_@^ml9{f1nTL+!;&`lb -z%61=@?mLc}FvjMIEv3rYRI?%<*A&i5icy9RR`tK+GQmgftg` -zu;k?nmtngOR1Bpq4<}lf^U!XO32WA4671(nEh$&>TpIlsIpW%hWEw$zcLPjT*ySpt -zF8m3(X73_Rl@8|LXqcnvw++eCWxxooUIu@duB%KWs76b_Zb&Y@B>1^w)>VT=6#TgS -z1es)H4rg@PyHHkgiX6G9rzy9`;Sq)fn*=Yt2A`k=-`0e$v6AOTmR_|Px45$imT457 -zI)BYOf^PeXt;5CdG9rn74OVFm>bEGMa2iZlrXFqB63Df%bicgWfPP@8^;(OnH7k@Y -zHjW^A$Z%CRRDrrgbH4t;OjWB^+(KM-oILoNVHs>^ZC&|7ItqG6e%dH|4O1+PQ+ZbN -zTyl0^o_tDSR$Y#2&PV -z9t;6iUy>XXLsLlY7ZSmr)2M3nwjrrbP+8Wbzq1My9>vmMp -z!@#=9NqUr8TsA9}>F(E*J$Nr`l;;|x -z;rZgv3Q!hqex5jMGC@jpgA(T4H`52_nsS5|zoZB(%Oeu4lRnSq9cE#!L5QXg_8viY -zk;z1GGusCQXoUSbLzM?KX|T|pdKASBO3Aindo?@U-oVC_O`X%sXB&8nG_O2>?{xUw -zKFCLC@_#eZ-w_+z7@LcS6aMqD(g=YPTK&=leRJ$7eSLW?p5O8mB=($PIw70bldD&i -z@LALVU-( -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 -z(WNo6H5WRjgqN~TLn -zgq;6Ma*hq>91eANN*~=7fFxo}Gzv+p5mhxk|`PRcLa -znqj+`n)@PbSX=atcT;m;W%YVTVruRitUkptHXX~Ne>oALOMh2_)_ZOmSU-68px(j- -z*YJ-0_G-EU#SOXRx?4W5d;t4x$9@Pw9p)x{9pN~Zn!8_-LoLCOtgtl;j{Sc3em&=3 -z&UHlb&I-)oWe9%KXZDWODi>R+`YrLo6|egctUYAshu)$?LhcD+mw%0E2|JC~4Ez2)C?LW98O>QyS0`-6x!X{*%nwJ=b&`G-XYnIP -zQ7f7K#I`uhy$--7TDWXoCH6Dygt^_0Pmv(9BU9Nr){@E|V`E9BPLRXU5_=6hac=i~ -zip04swbZ~4Pqne}Jo_on*75AI;4v~RUi7+KY90HGWEu3Lkh@Rs<8xp3H1B%EyTEvi -zcf8@9Pw|dd1^CZ>gFZMM)^J=gAjO}nh5SD63>{37273tS(f4p3B|~IeAEPgkqd3PK -zI&R~uI@$R$=YCnU`y;MaCp%u0o%;~`cJC?o>wI_-Tfgf8!QJMOx2Fhfi{LojRD9Ym -zP7u!MyJAEBZzgyRb7HH@{e*Xj#ny!syHDVcQ}G4sj(K=@OCJpBPjop>YZ)BY_`22I -zBILF-ZEW**OlbNpwg)oze>tH^jICY@bRN2kZAxX|WsD`9^K`g(9jCVq6LL?Z>P0Oo -zh%D1;*cqJrjLgD9?hI7$bD15>6@RYzkd&R8dyb8QRzEjaiZ78J=OjvYe2!%0%pqC1 -zpxu&W^V#Yl<2}%c^j<&o<056ADEDj1z}OZdzf!LgU$rsMNX5s|lZFX2Sx -zU8Gsqq_eyT<|{A>%{ogVm|uZ;6HGstAefR)808SuaGAxrkeS>X_5hc -zt>j9Q!W;bu@SqrQ>1+ODECFd&pSW< -zKp7y^mSF;Hy^g*4CXj5PfHl11V_QA%JOrCO+|D_Ba04hb*>b-*LN}E$Zw?* -z!OU)l7$$<9NCZ1nBKS>kKOurA*b$lC843}MPTg!^4XM+a_a?IYz3kOmhmVjw=YApA -zr?2O8-vzRl>s=Dpfj1>i7_NI^ilh%xFcN_533+|=pX<2dH#A;DjJ+Djo*&8H8w%Nb -zL&Gm5WY5Go_5j)23uNzI&iyWsJ;CuYR|Ax9zwGpJZl7kix4c%NeDW@Pw*%i-l(EwU -z$5p`@YAOy1je4IyI3X4Y#Z|%40~Ap20|KZpPda)a)$RuTaVlP51?pFe)X%5y>2ib! -z^*e+otn5`-b~bJ7@t>d2bSd^SWRKJ@7~7D=v(Qf=pni@+g!+Xd)Gq|o&lxH|PpIFu -zF!lSMP`~e?o?V3cb!k3OsGsvXp?=ph3H7^<)UOMv-}fr@>!F|d7cvY91>DCwItc~r -zxPbzSC;rGsn;fr9F0_3Qpxg|PfU~}`qa!5g}5dG{-bSa1x+V&7mt(^c+FjYrnaDE@_ -z-d952)n4TtUkb>H_;m^I{)RlphiY_{q_X>f77wDsyh9AG{efr+fbl+VVHhVzq&hm; -zczo?0O)&Cvf{~4EBE)DRF(B|XprxacuGlIg3&wu0JA#&u{esg6v$69K%#aUxoh`87 -zhdH@JaPFfI!f=n~ia&;VxB=(ku`%|~0U=uvAwO0S@?#CZTAhbC?!#A;vhxty(5Vzbi4LKtQ*d@R6?ec2Nq;sLmP;^NkU;ol=f`|eCqDab -zfsVMZ`&{|g$YQi>DnwCJZ4_}GBw?x!>^z-jy -ziMh}YonE$s(EB%`T*2Ler2{gUHL(pst|)~3myp5xjNtdqhz78{=HWu_G5>cHV(Xxs -z*lur{&fY@~TN1qswYFw^%@!lqgNG{3^MsJ6nbFP_9ChA=>3r_T_A?N%u~a)(@B9=A -zUwv$Ycg7qPrNe&ABVkC?ca{043$;*AY^XAJKI|ZrU0G+1LxRl!s_U(qFLRPEZKgXO -z29UI%%$~|d*XXA|WH0iSeh=FU{2Jz$$eMorT`gsjo<4HCvOr(6Kx=>&elEiOpYu0d -z?UdQ4v&M&DWOZT6*3$og>7KWIsB~xUt2G&VE&W1ue?!@qab?xk%4}T?tSmC1M_=nk -ziqI9XFxrf+0LAFJIzv~$fM2RBpu?}FE1<=%wL3u6eu7me9RCm{r6x7x9U+2KlK}T& -zKr^H4Czx1!13MxPnW!Xl911{?jB&^kARI?T)@v9uu0dd+m||-rU2OF#%-5h{AeKd= -z2>>+J7RGo88H953@;}1-yQ(Qh7aQoRHZV$FUDZ0YQE1buDT!3q?rH*~F1A)^I6^=? -z!A!891i+31U?&i;H40!E3Sd^)i{a_b>ZGPsD~OtAEi;OIbxe%CiKXMP5d&OZMj$Q& -zZQ)y9fbFGLcVCH6)MslZP2{pXsx(~#r8H%O0UH*+x~_l~zglckQ+WfzNFO{d_>W*S -zCDj~7NSS2vlow^uLcJIYwnoEaKa=7iI&S?i8B{RoBx8a010NPcz>9={2YoQ02#6(a -zz!J9^*|KZ98i`FVg>76cQYv -z3f~TZc-3135B1y$>Ma5X*bHwGP{5{BCFgP{v~LkSHI<)0*oC@}5FL_^Gj{zLAj>J}&RjAei3khF?S+7}hzBP(?W=k`K -zEGu{ZD+DmhiYjq2cKe{%Le`pa_?q@85|}NT0A_p>m7_dN9619eyf~?@xfD{9Dg9tU -z@-n3tEJ$yrbb|%woGIT`6q1lH1TEL0x1CK1d?;U$W#*nNW_%VCo5fBok0&#XRWMDK -zdu5r-1-wbJpt~F0(Ad(YiK7IqU(|6OQ7HjtWEK;Z#oj(~lr%~(B~{0fQ4pNL -zN4y^jE9AcJ4*nX(Dj?9PE{DaySX>5itP;{2+^$6|qbq)|A=0BMx&j~dyD0HGk-=&y -z45QL=1(hC9Q0aESg~wVi2~Km{=r20jjoAnEmab#QpD&TJBEIOpTM3fx8|?e^c-43O -z5MN4Bku0g-){gek+}Hg?n(96sU2#Hz(4st3vULIK>x3&P&9yx$@*05_P_0mV6zZ~2 -zSn26TA~meN=prm;6?LEG*G@q1x#QY_OkQb=tHeh&Ijxu4iY_XQ{RZKbq{9=>@3{^d -z)*`UZ{QeN~{oCu@lT!Q@MHd;9r;CNsn>JpoC<>t@bbLxx*0eE{#de@-AIKWuFS-cd -z_6ZWiTv8~24ud*bnOK)qtRz8Se`oV~x>mtrI`Z_-O=+2t -zyT-#;zdKPh8N<)1iUQ&_L- -z$nGE)xpkv?aMWd0FmU`@Cg$w4JqPucvqjWPNC;7TxZ=}Z)bkQJkj_G!msKC6 -zpV6(CTE%mh+grc|gsD}+fO?dvww=g-G7tf6Mx0`qJZOjvCM(sr4>Djf@C@uN{@lIT?$h= -zpU4*&_yP)5T>Qd;XHE5dkp+*uMC3MT@}@(B7hVFu^3DA?&3?YSau*e%M2-J;V1_+PhCLddVv@Z%T3eU>6u@*H_ikMah0pOJZx<5-d;58O -zu7%I0WTzRLM20EOZAK`-i+;AcpGd$ipxC>FY=c0RJNiPfGZn52mtmXh|I*_B&JugZ -zf8K(RiYa?9(}ruC?NoOy?hn}MLY6^DghaT{7cL8@unMxWIqZima0B#LmVpn)XHJ!n -z9b5^Y6@vmEC(jD$@Xg%+|M!2)-&nU^bMYCyrUOhf7$2Bt!0*>!UInus%pou}U^>8j -z55}-duelw}6fhZJ3czdzQwio(Fo(dL0CNsZ2#k5RUUL_i2f-`_^B9<|VEzDRKbRw6 -zPJn3xa|w*8Os^RZCK=3hFbl!tfmsh`Cz$8K{4Yn4s=fFtfod2D1jtCNR6eJP+m%VBQ7O|BRlr -z-4bYv3@|I*`kUJI_0P4Itcg0yt{FPZS1Wav>{kayR^C#bCHkn&viz*}mZPol>(R^b -zi`PyiU|waQUDxY1+tzN`^u(s0YD(5JYd2Vnw`_T8i$?j?XeO6VoxJW&>ul@fQtRaD -zwso_us-Jb*H0wg9`^j@7HtfA#7GbC;|3Nt3f?Pj=3poHGgS -z8}FIC?w-koV1N9nb;X<4{~G!b?ug7>)H(f;Lq46 -zwyxb!yovcqjAq*t%zEou>*G&tcxsb%>ZI9|?zBF&#kzJA#)8U}KJioZPM>t=Ppr$= -zuVt)Hl-_M+))!l!+RQxh)TUC*d-|li@smD%QjA6u^RODAW()`TQ?LlO!1Z&%@ANUgYw5LOPRG>m~ct!)|Rd(uv<$vfYp98 -zm{!sl_pDReB1U5k|CR38m`*I~ic6l@R1B@L39{bASSLZqB&7faOjPGSG#&W=h;)7dK8+$_mDK-@BT@e&PRL+{YCy4I7 -zeV^+&*ZI!*<4YWWvu3R|vu0*ZyMX*^Y0xh@EN&0nVI -zDR6X!hLhYvPYYAbYjVjjy^K6nlGCaEmJ78 -ze>1zBu4a-_>?@lh2++u3BuX?YtrmR8OQw-2B{GPqRWP=|afnl^ppBtBfnx0}lQL_5 -z<*QvzSHU6@ -zjf_kq3b~dS6WBq4YK=-FgUYCsilATmO3unui(zCE2W8VFRo4D2J5cBopp?47C{{{U -z0RkVGJfHy51Y{_Q1xl5UI2=DPeW5^@d7(_mN-5X+{G6BUAKHel5X@@oc+k?mY9N2H -zS=xz@cjTp&$vQ&Arih*bnS-~3z{$CbGxdz|wA;0U -zpD-pTTB`SoG*E$KBfb-}PvNy*GZw9C2f-zV)Kd5BqriHo%`Wy5@?p+^29+siap -zDqu~f^S5bcB;G`32`TJ9z{R{Nlk_7=q*H?>V#}rr$#g7nRTs!pEe=phBmyBZlW&|! -zrl^C1!xX_JwtP;pc3Bh(UtD+GIcgxa@9$k8?s_Bgg$ME5^@ -zthLxz-4p26-Z}!PwSq@5RTBj0E0!w>Jr{z#UO7Xl3Q&^Y%v7jUYJrYS@(4Ku`YMQw -zgIMcJQH>DWE-(qO&!PskmF&Gp^&BK#-h^g--~a<2@iaI-pja6Mdn!8cRyu|7=RoK{Y(Y54PW0YnZr{ -zI&mPenEa%PB?z^IZM|vdriDGess6u~tJZtMgvXcrYu^1`_!c$g=P%aCiGTmd?`Qcw -z)RuB>Qcl;jB`v4Re5S13Y_-fry83I%vNd%B?^orNs6YIBKUfHLVsARRn%G)XJ^us4 -zS$Y4G#oy{a<~Mbh!GuXhPPwi?CUq?vKi)DWh$!613}+!Mqbw|Ff6{DNBA)~FBtJ<9 -z5g~p_vDFGY(g?}$2O9}tmJMKXmxN0n1DdqAyBKZ -z7U+W1prDfl>N*k{m+6r`s}^eGYVG6zhZxg}<7z!<^a%Uz-MjR#cjBcHBCSPko{0lU -z>CV&DnvVN&_7GYK`)(z_HHAr3<1N$iEFqbY-N=~|{D;ifWL}n&-7VSuX~@)!>{%xf -zg3O@9$&LsnbIZOer3{X1mT<})&u_QOP4G3vuS^8Ym$Yf^@ju;Qw3}hfen(LZrfmcpr@@z+h_F8 -zJ7%&P{wTMn0QIG7DdX_3pX}-b3-s^!17%_4GHfeLRD)QYfmH4C5U8!)J#O?7mB=@NUEay3@}w{+Ha8Y1N%pQA3*w#Ce|FQzM4mCOh6B)7YbZ0=syPjF*RDL$4l4ypL)6 -zgu3(RGya%lYDn@2J+c{wu0pW&MdXpXj--9jk9{odCpgWR)^Q?F#|#^|7BJsfkW(v( -z`>On94r+~@tVe3S*5{|VSfQhFm6|2v~g^D`8>OvHVnO66rIdZ$Hwm -zeS3}RMcbDSHWDLy2ntByK-#_)xQ-=37$OuE5(UU>iFXLP@V3!-XBwvqB5gNhp(vM5 -z9FI1iDXwJ{p<#_Lxm1nxgT|B}jq_3#FaegO(|EaZ -zwB>Bj{$c~H3uQJ?J!S)qv%JACwFGC%G%Ayi(YVPciGNC19&|!xc9W|ehB{B)S0v;b -zn(VLWC}KK6V3i-u!NP}?>8XNMN6Yi4^Nws%A@wH0tPl8pqRTmH6Edl=wu1Rj!25{A -zLCe!+V~374Wk78fYhAaotZB70yHY6H-9B-$?8q7m{Cud54_1y>PJ@m8GQ7ZA)^QV*^iX(Na_lc -zH)%_HgAjV_gOOb4=_0Rs>O*sn3GTfYOF|>>NnfRD&zz+CSq6H8cS|CUO(_nT7qLd7 -z$cZ(|y_d!Cdx-Dy_llC#Sg*ZVh9!cIf?Z3le)n3au=k{w2=EG96DUYMW&BE&>a^gCtoRK{&yhv -z?GbB(K0tqQuyN1a8V4CZjCxKNvh8|bjv~*zua5HlKHg50=|!- -z7{f7fs8K2NKe6@XeUfg9qL_4fY|@hzx{k>b%{S=9rvjr+6Tb@l!ZzY`j^s0G{H-Sz -zXjZxi7LmF>(k_Vg63Z1Q8GS^(%7--6y)|mFw;@@res$}^CNI@e;(OdT-xbRjX!i1# -zvzaL&21OXD(7pF^MI7CThEi8KW=IZ{`+{@A(QxJRn+7;kM9_WudW1gtE|5zE;2vJ@ -z0ru9(so^*t+do*_NX -zYwxZlY;2$Pf(@}Xuka+%%MDg8F=vuG6 -zFJM-POHk+d%5*0_G8+$H-MeYWlf1()G{eqDuZ;|)9!ExqT|#RC_|2Z6^~CqKW_qfQ -z39JcMd1FNcjXV=>(97KD-^+X#7W>AH9n;^wy8z~~Fz>5-B`Y<0wJr`?jky5YuS^XT -zKtG2Gjv3yDT-|$Qmt-MXXu@DdRD>D0Z;FsZc49Bx3D~!2!*%*7=vbR{gL>8HXV=!w -zBlF~oh3Yq+vT%ujxE#%M*SXg(670?ukT{)xzU(y~NwMA%b>r}bA8oYvHO!y$=%CqZ -zu-gUFblTDC)#{a@Fpf7xl4+Nw6(@(%-bm-?;Ui`9Q%abCjjadJxR*(5?1=GN5GgUN -zhyW8F6o4(z0hd|gxxHm}k#y+8H-)tSQV-dkvz4yr`{?uvZ^K2>iNx4lWN4=zO8T;L -zv*0zj3i#UN6;kSKw?dB@zN`d`tZnX)GuMr@7)f}c*YvCFIOqu+92^8Tk!fDgW7Jl#i1`LFANHWIHd7mN_ht1bvsZ%Tpy?o_kEC -z58VZ;zjOf|H`%A-B=5AZJU2>cK6Kc!Ax_qa)zKle51~%>gm}IuX#Q)jyNc!fG)X(? -z2=NtqR=v8_U_D7N`a -zOCHH?(8bXXx{LQ8GHPLEx=HGHT(^-9iuo!0+<9cJ=9L{?a9{|NC7Kq!9?9P8mS>d| -zp>r_84gB`NU;d<_`DXtCmJ&m4t4B -zj*Sz8*G5Jp-BO%KM_|A|(&~NV_$B8@zlGXudXcb~Hf>o~YTME^^$6dHE66(eJ^S=4 -z;=|;wn&?w6dX?towO~G-oY}HY{m9xgMm*!jUTf0dvKvNX?OEONB9uT^-O$(3??05S -zzpoXfrqD*Pwvoyn7O>F|792Uu??gy>n|6@KzmM1o9V=b6gZ3?*SD*)$rpFz=!uzWF -z12mv+KJ16Ixw_L}tu>)6U%zH2YpBGUEf2=P}qbHSpp7n+;) -z;cJ-V--h%Ql<$Ktd&x+Rp)=iUw)(u-6U5J}bb8=@9rhx|O=L;Z@pB^Gize+LTP?N` -z3lr?19luRQwx2N9(U}h1z;5r`khTKJ3o=s)Wa85T;>V-|kAu_e;93<$d1RRI6-!l -zp*gX*v|Kv9k1-w9%i=5#cC;pl_+uHp*J4MxvN)AC9rvgnJ+?74<)xd!->I;>3UV~3 -z>1D^ivN)d~J0h0JnDT+T605bW&h&WBqaUT&X{#)5(lcEtl*M@lF{A7{g3^j|JO!f1 -zeG>O(`Il>Bt*MR4u@BL^JbJ$Zh{zF?9ES-_kE2?K8ive9{;0~3Me -zUP0t`P^r>EP{SVH4}v!$M`F5;uq&IgILlK}uALR-+F4PqofYNUnZF9)@36}B%B}%e -z+@wdZ3K*L7<~z+#(^*GMXB{zJBcuHf -z$6pA1-%MwPOlQ6@o%P*x)_2nZ`0E+^Od9DD#E#$;<%}j(AXk-OI=#{GB`DT$J5QFM=_&`A;>>P(y}=`r%C$4-;~GFG -zFNHnk0)ZpBcYF0!;lA{mtJeHn(2$j)%^W@bN6_1G(WS9}=dY%R-+B -zKGIOx0un!)h4Kh0(rKFa(F+jILf#n{FYx}9L4_40-8%~@(p%DWP*f -zkc7U^Yi~=ww)lJack%-xDCN7r-qxulx)F5+rq-osn~7e*(|dO;M<0&TIqoFM=L4DS -zpkbL9(0b37G(U)+Ki9U@EtWFZY3|+#Nh1=o?WV!ACzr-$Q`-b%&w -zFzzTG$!GMry*!=A=(CLe#MAkOuoo=&M#ozLiRbh2Pb8kl$MZ=16Cckn+)CuP^731W -z{8nCmE0N#I%Woy}G=760LpO-?UFYN1Nj#H}XOj5t?XO{My{7)Td;436zoqfFQQKi$ -zvG|JZFs}G`$_HrceJM1)4dVCK5xo@9q -z^l?(Xmls(%ZRG-6x+cJi;-CwpbM<7gZ=kPA>Or3b(@jSGU2Gk@D*^@N*^!~9xMOF! -zCX{VI`H7f0ky1qI#RCse75x;Z+I -zcdtSoG$Y^6fT~XOnFcS|?5YFdRTU&q6;!oqRr1l{s;CMTf>&jOA;J)1fC9`T3=yG* -zdX*|c3E|=4l@M}tG`JfgLE5fOclYrI(1$|Y-N~os1a^i<185;A#>dB}YSk)%YIT5G -z{ZsxDi5Af-ABYol>N>O^DRb=bLFCUmsEnNojkK -zXTbE(IC>31}T^&?nlUJ<(7!0*!`uc^RHN8Vy3j(SU#8Ak-JMhM`_m -z;-C2BH41e_j;Is7Nvb`_^#Y4@Anl9PfC30A_+JloAT|!8B@TrcsgabXdC`1*sjLsw -zMhh`9{I8|CctTx+AVms!Xn?Ck-asiqg4Eof=I|pg!k1Hy81&?5CX-V^x+S!PDSsj- -zh5sd#FJom2pfo+rpYR1xu8NjQcxren$~5>K9e^{4){@WF7gDv9CXzECU*2|7FJhgB -zmPGuS$f%&^0-B$K%JVf7(~?c?WKZix+ENZOGO$?yW1=IZDj>JEwDpJ=NXl#~-=5-s -zY$+wRk$8`U_Kt?yqWMX)FSThH=*nq5O?__aZ|Ac9R)U6(`iGLXmN(Q@042bd -z<#Sg6^0hVf6wmQ3*P_3cLa?ECw8bw=I(%l-?XHT?ZJ`=|1{{ukvD -zFO~k6<#j15PfdG@BnE!v{FF%(grR^qviU3-ThL74&IqZbkMrR)FMrsS|eQR`l<-fMgTb2$1~V<%u@t -zR^&G@)qr(LI$$HfovqES8Us!MYy$Yg*4*k3z(ByJfOde*NqQ@Ds}^LF1xR){Cv42E -zS^{2fX>LU}lUo7Fv-XjIGXWKVUje0n8YAD1!L6fw05Usle25rp%_}`87&CezDD;p6l -zY2NNX<>rD&oyYtMdp5mtm`XWDFB>nDj`7j=*T_eU$wqy!SlM6ZIZUkSrPd4+2MyLM -z2kRBR^xmUo>Jbv%aFu^w8NK@(2yYk2k>shRPpLv1v3Cc$_u$`xvXmh9Ml`)6P4CE3 -z5ZF14VlRe$=}f@y-DLEW3J7+PD!KzHpEiQ+KTIj30o81cH>LHWp0B5C0eKCk^GZ-z -zoXkCZ*=o8wR8Sj9A4w3o@azwKPrBFn(Qkw44&X-$Z?DNllU*izOg5OxHkHel6I52V -zsa#W;rgBI=V!G;R=$ypc(4SiSgC;u=BB3ppHlB_)CEbOXQpbQ)d3qR~OMd8#rnZ%* -z#k4Mbd8Tqqd7JVx+8bbuS((7K`;zn0ul*=7aBIKqg2{4h!)}w-QEiV -zxEFo)oc6cMzbp>Ury^1CL!BuR+)_`T+651#d4RLhjs(}0(>@eyB((ozo*KPa!^?=3 -zG)mkU@+bL{JV{<8ACd>?1(7_6KG7vQ2u6oqBNfv;V6e~_j2n%XrNJ;#$`}EoipF4o -z(F7Q4Ji-VAU7|>F|^&c>B(BL6MhYcU$ -zK62FPF=NM#pD^*yNt35c^_V91lt^V>-ahi_GZel`mD*3E)#?2M0)uAGnmuQ3Fp{-* -zB)=B?%PWsQH)}|G&p$sK%A=t#k4aTndh$DpqGb%n^N5=BnDq25ueYDaqyUD!7*^*| -zbo&iYZ)NDmqXF}XYVs($|C*=w@o1RCa5#@50i*L@@pyqp6wA=}6)T@%119(8B~PE_ -z(Gbfc@?+@(8Qqf6#V>d|oyVlTjGoV;`MTQL{}LeVd)!qOp0W*mf=)}gBW&ZaxEBLjpg(CA&-w4rtl~_&12FIMz3J} -z5Qa*IlNf&>lkdW48^*8Au#`Q&{+374yDI}Mr}2c=vfeL_ -zL-~g6hZ;>Hp1iq}%`OMXKdENutwl+=ve}W^7y5Jox|7S&>@#?%&UeqEi6AdJ&}L@) -zbNG<8?AxY2RUm)e&~g6fv3hA-tBvQt{%O(Dfk_vzPgjq*85it;4t&40$|YR%tl7j@ -z5hI|yb6+M7y^I3}9~zlHxew&Ocly{RSFqK)acPlFJG-LX_U4W$SFvmv_n=cZ2hiVN -z*SSVAe)}lukg@&{ptG`y2VKW)?Khnrf0WeEe&Lm{8#upFjkHhg`hxzd$9;_{xZ4;n -zyW+nF0NvFhBQO=4O{`P3@I!Z36n)tCMx8YL^i;oEO~avm^BxCO+na{B%&l0>YBhF6 -z2X97i>vI!N$$0rf9|wH*<@?6pyNTV-F0}d7xmbwMio^+i>G;9N$Gy`UKzkkZ=sT}+ -z2KN10GGtR+e^->+Xj8`847@GbOxx``X|LLkCfR4=A#Rbiq+u>l|4{G8Tqgc=&MVi+ -z`awWzSIixmh0lAtSlcax{O^ -zpnkdyooD7?!LmCcY9;Z{~a`1Y2ghM~?FG7?TGpY&t$;Zu%B<2mL-Rr-fy3PC?FVC$7siB2kTnC#^EL -zb`@XP38&Ww`N~hi)~9phDxT@nAQ^1a#)Njre -z&g}YFZ%I>V|M-Cx`*vOC#{QWvJ+)vc*k`>}ka>x7-BvZV?{ugS3O;kJ;wA1~);M2- -z3-piZ*t%(*E^n=|K|A=pE -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 -zCUXfs*oXFK{UA0oSJ+aSy$)8~pIN$HLJBJS< -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 -zo88ly(8V%GY{j+K -zKl^g%kOQH)m$j@o^SS-MYF(&&L;@HD3?ckcP-9Q9Y)KdqkySLMPl4L-3tkk&8n -zS&ORNt($u?lt%RVfiEvwRN-RBt+`+Q -zG}S-xlB>*B_^Ws2B!6nZ=9Ncf?zv>sr)P&~dF@`8R^nE5Xi1s&ZWt+QTw;i`9$Z=XN)pY891&ACA@1G+C8MdkbFwJ_%f6nRWP+@UR@ALVgo -z-2V2{-}Jsq+kf^44>PXXv>BD2gi!yklV4havu&f*;%!-puX#Fb} -zcvRqO*SYw`Yyj==RRyJpdu-EO&L!IrTJUir;(9K8F!lCvI=*&(#E9!^H*Ik73hJ+u -zUvZ_0#|HLJXkNbyp{Knr{hm1O!Ru2FPIP{o{04td9J%vw)tVf&Z_L}^Z;AJXu8*buvonwTk~lVY -z^To?+==hlTp|m(r7d_ux^n#W@As-hfHY!-TGCqa+XRCtXqQr>Y1(K`+n*W;u?sH;L -zPFjtQYiRrK{a9LDLd)?@`}RJ -zkBPG)iqq`plfSnh;b;6YaX^HP0oSJX<$ew>NZdZhKH$zvN*ju}{KV=3hvuD`PW!J> -zap{M|kxv3kt2C$g(>sgths45!$aYqiLb_gj3C>I0`Q&Ak#TWAT9;E&h{62ARcH-EH -z0@_}U3WMJzW}HjAw)Qx!kJabWH;JL)ai!`L)W3^92ft4Az2Duc#EIsYT2%TnvCZa% -z+n@PT`{Rp)UnIspd$KO?F7*eWFQv~ChrE0@(J_h6Z-SEGr-{iM{m!SpYC+q-r1Wv( -zKL3}!y<~JeIDRdClxW-d@OtM5jzeHJ6MYeU#2GKfM~9_{%dR_&k0$Ub<@gxga;mk*Ib9 -z+>dfqddd6uameC$sUOc5bm>&G%e6rsK7Reg+P302q1X`Mwzfkao>Fzv=&)!%V|cLg -zMg2Z`Sa~I&anmi)MqPOQ^n(-gum%)A;e*2aZD*+SaBJbAM>)$D8864_8}*x? -zhfC)j9+DU#7KRmEyy~_g4|fqeH3}TKOjv6{v0}o}JZve>9_+AvjqvjTP5YSSJnT2( -zQG@K}(ZbDX>CSH+=iyPaF0^UrA`cT2xvXdeyq1^|3X`AA&dPheZbM1HSU)%cw-q7{KTCU@Ac~4_LqO*2!McA;wpW7j-XQ_yNzTwK~nlYMD`gP4#-xmJj%e&!AaDCoK_X -zOs+UD_w)x`rO=^E#OPS#?vp-F^D{nRp>#7+R@fkHcIT_L``ZsV>i8_PH95&mfg~I!@AIbX7$j5hHieft@gbG6>pC0DS%g1wS;6*M&*BT!_Xz^+NhI~A> -z&b|XL>O=^m@7zrdK9P^NH0hp|ZQ09M&HTys@SFKKqu0GL1I(g@<2t(SI`AeRhuLKI -zt98{+SpT?_<@d@3_(`bK&FLQ_gig1IepREWuv0=#Wv*Lf}5 -zEEj&*7~^qaTmiQ0KYa4L$x+5@yIi{M@GF4*bZ_pJ%POPS?MlA;7ZqS*#aQ9ul^cwo -zH$LrrZ$|-s^huo6^@-m2bZ6aj_U8)lxwccf6_sue0oD(ZHv1Lg-s26 -zEB5FH)wp`6`<+itAMu(XkH_~fg&6G@h^JK@ -z{t>4b-dCI%H&8epHGA7@`bX@)P?|Pm#X4cC@XXQ85g&1$XY{cxXSBix>9_LQZTX1D -zC8ia4UW*mBY1cLLF82{X>iy=x>OOOXHST|lJ)Hd!cM6Y7B -z-n95@g|W9+%I3QbKH+!E6XfCkOO2r;){kr7`4iqNJk%_4romV%X3EvABR}D_Pv5>@ -z=d;*&x6RS61606Y-mF50)3L&DmsV%gS^Nnby#L -zy#K_7t*?B-nXp!xI@?oVyJmA5&xZaPJ8^g!C -z9GuU)BSntLW}xlwQ~xpV(Mh1hw)dcAPqBBQPK*wF5tg}77GiSsRv#Tm7`hGvWn -zDa2B@&wclIpC-KCGuUfGd?6kyJzTf*{Wv3cx0=3AQX#Hht<-zm0*$d_6PfUEP9feM -zDfDqkoMD`|Vr220(n4HVGs3o(Fw&^=c=JNv;xmq&85uD^8Di9hY#X>1f5tsCWr{mH -zqm5U*dyjkV@foN4I*p&$D%yyrJQyK2e8wFbm|33iS|gla;kCBjrq8%zY{hp0_2(I# -z&p1|id*(CF9M&LhXq}Bh&*3Ru3m$#ObA#%iGMl0n)@kB4rcK2n+-|k6XTdZCG|&~ -z*xacESGhIMajL=7=rZx?V$H-7{Mh%@=^Vdx#sO1H^8JHLu*=>tb4N_j8wXe3ihD0|{F2VCQ*w0LL4Ha56zcuM>ehJpBn}M%>+hANbD*S$2`2h6>k&U1{*x@D0Dnc^h@6`7&d; -z^F8xtyS`!PqrP%vvraheNQHuy>EH0#MtOnb@5Tr{;%0SP{q-B3G^Ejp>)VzY+iv<) -zuYc?BcvZcbA#IMWHWuQj=ML`Q@zUg7h6NkKgkeK3m5iME9Y0)L{i=0ljPP#s*3AdD -ze#gu0)-|+Qx546$maj9m`BVJvk1yZx!DCw^K3-ZcTzzUrxAwNB -zxX+Rr+_p{2g`$4SN&fDoc;Tko_7Brzh4m8G?fW*X6kBwuoLcAfdgJZr4IyWCl;Y;g -zw-t;YIA8d|Z)y9p>81F2kZhIiwWp9@^}F{mVJUspLMHrqe*o(^{|YvtllQ{s!MDd^ -zF23Tesx$WDfZ?Z9dk%-;B^N?V6Sy1reUC5Sdppq2!xa$)#Q(j5tH9?MjDE&aR-l20 -zTt??IzUk+6i%fE+m!UMcELNJm>k!HYYzj -zVtQ4mhx~lZtbAvfS!p0_lK=9%*-53PUC#Qn+U=1B<>6p6 -zlf0XVZ>smd)L~5$L($J|z`rVy$8A}>8F@67#aES!FD8%7viOp6@ulVB(dFXH%Ee>K -z#g~_hA2It8KUywMei7M%&kt3HFhFMd9wq(<4@c|hSEQ2kv09mCgy(dbL^tTi&oYkZ -zb%u(yx?c2$7u{8Ay_%-+G@lI`#{VE@Z&l!UG!~7fp8)>#v%mlUi~OGAuW!4u_uqMc -ze-8vd{M~!rKfHgI2r2ij@E^X*>xY(moBfAxldjiug<1-gV9LPEplg-6Vf -zT(B@|(c&dbqnE`jU$Ju4>NT-z5-0e*&~ON2(HPVU(wuBY4(~Ob;Gp6C5s!T-j;84zN?D*z?4=`L^x^>-k?+Fs -z2vS0Dg5Zd}H2jv<3k)RXdH4jWRXRY4*pnEdkTO0`BCVfBXR_NFk>Ao&((f_{vnhhv -zKBk5n_}?v3^yR+Y+{#LCZbkNxqek}~ZQJmmt>%KN*YW<98*I1VaDq%^eOxA!eWP~r -zXo*Uvn@oNtbFz5%>T9g -zqTRpG|M1@5=kL0|LfHw%0^}#SMRNpG9M{-}aw>v!D4#e&J`?nEkf>gYAA_e$xNI*E*X0 -zb{zHV{CoW?-F|Q1$L?ljW6!+DkNB^0$6S8!&X$XpFYl?y%&J)Q`~L76`g?xRu;23w -zhyS?wxHkNs?VvV}{P%iSi!`%p9{KxrZ5Q+Vb~Rh`Gym6l=SP}9#DyRJd3|aM -zyf>ldC>O#_2uTn^AuR?%JcPXvPC&Q_As0eEgo<;`Q4KP}yLP>Og1(!4X1#2;(65K$s0- -z353lM4nnvHAp^oA2;U(z3IRO`LI`6ZOocEV!fXhU5LQ9h3SmElLE -zBD2CbOENSvEh;Q}wW6Z5GPS}>ua*|yf6X3rG_lTk&-u>x{Z5PDpJ&}>&6>5I^<37> -zp78)Ga1$^dNCO@O9tBncn}FZv_{TO5V-W?6b;i15;EmqwVd+UzeBQw@B5p~X>>Wr^ -zHxC+q%b++I4oT!g8J`6Vb#}DCJAv`(S=r8x6lzWg9PXWzng#pIU*lZK$Pt5vH?G$ -zqz0v7pkgvpvr{J~`bK!|51CSw5)|i6oa+5U{#&l|CZuF~6O)F*hJA;;lMtq0Jo%0( -z%-;ESt@O#06VsC7Qq$1ikAg?0r6A?=CJmZC(VIb9!=>9c@;cJD=8J=dX2p6ZOqn#v -zn;D@YaHZUz|L`G^_ -zO!^eGKb(s3rDu7E*gc}sN&ozDe=(J0&wF-~Q-M0(G?NK4GQ8A8e`#W7_LK~=wK|I0 -zaaT>jMtQ(LXI6s#z7+O-#Ta* -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 -zi4JS!(AExZI_VfE9q$}7+{qu|&{0nN -zcR1(vIr(HC#{-c4DYD0t>Gbt7r+$vp=h+UOJ%5$A|76ZhmUFoD(JN;SfoNt4Z -z|BBPU_nq>+PI;G>{;_BpGuZ>1!xMCN^^^NdIp;oO`kx8`7tsG`esksj(fZAm|4)WS -z=lP-w<2f1rel{HS=f#gm__xjzAN%he->M8YYFW@lw8DR72yHg_%RSA8|K5K6-wMtD -zIKp4v{KNbIv;F?B4FB7CzzP4KvqAx6ML=M1tF=(rac|D~U^;zO(uEA6#w6 -zZi9hw+oyMb>Y>Jcde5iqAM1a#?~D3hD2jQ|eqzixrKn^e+$N*A+(ZCQu1|on^fFkWj28A8~>VR6H8mIy) -zfO4P=SPQHG3W0oJ7LWpr1>&9hv49Np1;T+~py39z3)BMDz!snYn015m{oiKh{of7c -zFP^XK{@rwwZ{`mBHlM3=@Lr5_2Cnx$TqBP4yzB>AM~zM(^*k+>Ug>V*$mIWSo&0|{ -z{Mqj=11|_cPB?qKgIiw?4E-x0<4W$Cllz)Pa+3SAPXL>NTHrY4e-4HQZUH6-`0X@u -z47vA7?0VvKZp1SQ9xsm-yfNcI>hH9eu4)e -zjTAZ$1(AKy^57u*d4tldAp5@P3Q%%Cy9AWnXN}7avhNSYf)ah8gOcYN3QihZ$S3~TSWt5Q(OLfe%4|^Ew*n>imm*M~_*6+qlf}{vY2y2Y -zgOdJ-fD#`n7?j*UI)i%TzUV1XazEt+D7lZ=07~vR9t0(qS(kNot>us#bI$nYQ1nIQ -zP)T6a+4!y&=ib6$;lL;raF2aQ9op1$LwsPvun`QPX4zVWrCr2{MG-8=GH<&l#a^|PWY -zK7aI!U!FRB_`zpyi&_2c)cw`Rt{ad$`C$FF_k>0Nhyo|6{0`^hIfivov_ -zuj)f?O;hhxzgO)Kr>*;pHhb4(kbkGFF-h8&w?6VjT8FtmTW@|8>Amvn(O0~(=crZF -zzIX18U2iOVYr~IL)cSv<`d(=9x-|c=#TgaRGr#$`@Qr_dXYKgyxAzls!=_a~cfcAD -zcjs5bsdh{KMr{0vTaM|bvhkuMOf>;SJqv7=%Lc&I7w(bg-1x*6>bJdG-Gb4ry1saD|NQkq+RofT -z(JlW`JVpAfzslX$?Ze)mu|Ezi7^AFzcw6PDPuI;^|MX_|>y($mHVj`Cd&euGk$r|9 -z=qK{Gj@bDAy?q|LBY17)7dsv}eQ;-wmESEGGitH^M*Q4fU2eJAJK?vvkG*hN;R9g@ -z`hBtL{SS8qf4+X-zv<=w9sWB*u=AfNI*6MbA~#cr9HRU`f+ljU=xP+rSKc|`e -zf@bndn#tePOnzlE`8Cbt*OUBXK~yOQ_keTLp%gVzTAWLVUKUJYT+XKDmcdkMt8?l4 -z_QBM_z;o$c9fIw*+%%=bI|h@Vi=9mecMhh;xY}z;4W#1nH`MtxIeGqtJcBac?xpkg -zp4QYwLyq$=$BE=PiOR}Ks -zU3cAe)X0$|sbRy0QPI)Sl%goq?Af#JJxKCzwiB7{B*?Q?Oq3{(S+PDeQ)87Ky-fkvnE9FPnY1Jyty$-@OD1I0i!(CAzs=?VEO -z2C9KZ=b||v87Ky-fktN_I3O7)2CAKb;eceI7^nssox$ROVxSsmbOw(Dih=4za;|Fp -zHQIw%i~%Ko)%L7lWVm9xSJj}6lz*@}Aeqzytp*wq=WuK?IUcA68l4H@fMomp$Ojso -zN#YtwKI(&31C7qaan1-7+kL9GCz!)zCIiJlHPGlxE(athlYSr{XtWst`9LyI3{(S+ -z4ij)dGEfY_06<^-jKKlPjifKg2O3G9GYjOZ2{UmVW&|h(s)0s;Fcb$QPFHA=8?=xBbj58CgqLP_U+rLapT5O -z)22J-&@x`8Sw -zS&LLEDo2M!`$PC8>QkgEdC7KFr+&;O#-E(PUpYD~%sJvx-Jz(Xs2-E-4>9%; -zmu3jcmxs$msH-b4-nk;j-vZ2%AzfyfOL`e*mFIm7H|H=VAXT{?Lf2lu*(RLU) -zL0I#W^StVIAR^_j9MIA)eZu@#@aJ>p7yGvC!6AQo1xK5NRgC{4{%n$4y3`jr;?Fwt -z(^-Aw*GA1N3#WbPqs0h$jyyT?XZ -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 -zr5C^<71Eoq1EVlj2^UVVD>u -z6L!l7OdazTbCCHFQsXoe$hKtLvEgi2wkO*c9>O~IXSORBhjo&`jpoL33H)e&EI*!4 -zf(&_?ujBXgAwow%2jBaIEMbMPM%X2MARNN{{!8crjedPMDtABTVj1@&_X@Xzdzbr^`vzRohv)b~{GEI%cyuwp0^0OF%+G$l5&m{3 -zp*JjX9k%#b_8aLgc*AUy8lOuiVvXb$h+_8HgtPB68^wV^gZ-+`cZln -zy`BD+{(%l+!Wf^S&PS?p|f1w5%rb`K=Z -zF-ZQFkof%|<4tZPH;zk%eL9;f;?{5#uuto`0KPr%;jf2XYVsrbahUTQc#?(u)8Oiz -znD_7b}mK#0K%C*b(#1L#p2?WlN7pPeR^&ApH~a?GR?UwcJkbBKMZZ$rizXn_<=vc+6aX_zt)gp-`->-7+%=8Ghn?f -z#yqYzo-wvSs_rumzz#WW1i<3G5;NM*j55cX_rT*=0DE_x`I7mn`LX$(Nm=b6{{<@w -zEAUxs6MVZ$SWdfKAzqB9{kAExs$x9jLv={M*P>CfnJ -zrWBeR)#liAJu&IGfekVhWKBc7G9nxoiawv^q>?&VrQ -z3)k?UKo5TpDH<+F@EBT4snP~1K<+EglozSH)Kls}?G12ts{W{cOuxZOfQMA>-+#ym -zpsFZhOI=BipeMnWdXhduQ%rwm43h<0s)X5s9`s|sg9PuxP2!etC0rP|CYG<@UlR6+ -zUx?31dGb!MN9$ -zX3WQEziRBkSpR6Wz({vAJ6_`{xR(3uHME}I2w!72y`R2}xeGl<4sFXccbSy`t%ue_|h3%R^V-Ju3T -zZY(&Nr8s%W*B?*0okYi-Y(5 -zApFx8VD%rc$d81{JMPB7mwpCvcsI0TTRxo65G%xE;!V`LP9!92aj9l<#+hsDr^ -z?*`r*%BS;>Ku#4wKb7!n`BLcNO|U^JAy{Z7gb10!145CoN?0qDLO;C+E9*LuhJ=zu -z9X4pJI0X7>nYaSJ;99X%jFec(l%_y3jloK(QNK|e)TgaqNS`VL?EBdi{WkMCQzCpV -z{vZ}gcgy#HBM!@VEB7d0D?cg|)pV73SMl)oDC;U~7-Yd3>!0NKngHU?Q7j!z=QHiN -z*}@ojplhKIi9cTfFZ6q{z0?n~QI>Qm3YPB>=)`zwxl|&pl}e>Dse{~ImSszhm50c2 -z@?`l5dAD2xZ*-qr2MKuqmhTZ+RCFZ@8gK|ak5+1Xl~HANB{bbO^*!}d^;_t<-_#JT -zi`GXQs@SnTAER035Ob1g3CpRGjfJ1MjNity -zf+E~0Oc3@8--&%O#)YufUY8=|g>r%XlKiT?Oet0Bm2Z@vl-~9}TO4fkSJgMvx6tlwC(^n-EI2sWd^Gq*!R6q}pj$sRU)!lzzB#=9ZF{vNmwK4Ct+f&QJ| -z#Ef9?W1nD8vX^l^IT3SRDF;ED#4Eg(Zxk4XMv<|?C^6O=rLgYD!Xsa6y=jrVsX1t; -z2R)chp|j{`AgA}!C+GmC71ISi@c`y=W;IjBe$QS5A8H79A2jN_Twmc1F+=uW4e`T%wq5QLaS`JlcWh897F{+}yuF1wnM!i9qSDA5Uw)wkx -z7wq{!Tb@z0hYp2aSi(@S&YrdRj#yY5jH -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 -DdclS6 - -diff --git a/plugins/amxxpc32.dylib b/plugins/amxxpc32.dylib -new file mode 100644 -index 0000000000000000000000000000000000000000..d8281c57cb9e478bef0651fa5ff8d7026df0c2a6 -GIT binary patch -literal 173104 -zc%1CLdt4RO`ZzoTTR{@&it`}^bY`LJiL -zHS4~f`+C-zU8j$p3l{_-6#m2DKN9|@wi5(Jh!R8y?}4Amlk+ks#-#_E8=lc(KPH0!SW&r`>$6QXb~ggry-{b*!|NIt0tQ -zM&^yQy}-4cz@Kq~V8TPV)%MhRMN{p4XV9yJWrS*EYtmBU>VLm#u -z=bzOvefrE97pgKiac!=mqM)a0->p9X)PL -zrfakbQ?sDw1@N2@A|&RqIkcC%2>uh{Kc-ds4R;mYb;sW`io_Kz8_-8^oQ6VjqEUptu1hz>;Ol6hWQqtG{KB!lGH_YZ;|2H!w6wtGKRPh@j>=Beja3x=<+M?~}F^F5#~|J0LM|cu9-Di8tPSQ|T|i -zbP@#0b(^}66W((hK -z3qN5C*L4YoeYWsATezn!|2A9tkGAk3TliZD7uHhnKrnb$v=w~RR^fBD@NruuBUyG4 -zf{HE6a9g-Pg+&Ud+R_Kw!lP~B>CwSie8ZZtiI7?&+^#9@>Gf|k|NCq`dCgYrB3NUQ -zLhX4-Q|_Smp%k8HYwmhmShj_4qp*X*Doc;TaHcJfPT>d&&$p!ywuLXJjzi$HE+l_L_w`l8YShQR|tZ-#yJ<4XpPe$!DG2o -zkXT(Xp@s{xYB~;G6_qME64Fr>HS*>m9N_|MLiOPgsMolJvf^yC%-SEa8cSD+f;}-B -z69;V-&ok>aWzH2iICwsb&)PEQDv)#Uo-qZ3Dj61F-LxgGV*C0|sdx^K8gufT`U{wd! -zgO%{SYD(chuvrMsx?|1^UL%5?vFtDnFJ5PTrhc$tz|822sf@mqdTi9a4q+=_gqe>Q -z38NzF0ri9t_eO9{zu1foNM!>O;Jsh-BIbEh1b2k)9q)s_hUwls9~+0}#TkW4a5RWe -zMmQAWsrdfm_i;JXoyGy^weJ19uf_PO#J&Mo0vE&sjdWr`T;zpNL>r=e_aA{m%ZavP -zvht-!&$9=qo0$!&8-}x-twd~aUKL!4*x*V$beKV+d?`;IhN**js#Nwp!a)`^Sw>Ci -zE4t!h6+vfhm7e>WDm7xESWTG&+Z+VXH*o17UHt|trdd4kH7$IeXT%_Rd`(yjplJ98 -zYT2UHOJ##$%4`PpaqCWT!C<)U29NtH++6CV0WSPIUw( -zQ8+uWveU8M4iCWaOfH3_vl6iA@9?Y;8Py`LRV123kD}8=lQvRxsu%<*ScOw{7P1v# -z6R*oe5NKt!Dh5c`U=3y;Z|5LjLfao-Q#=JLyKXPei}@zE%3PYA5KTI2R#7nptH^aG -z=$?C6W$}QBJ)lE{_;;1myNqZQ%xNOd#MaLs(>CR(H5X{#G0wSRE?mw8nlD(DKhCPJ7~Uq(8hNmWU$EX{Rw4>ZCpe91dui3b!0<|VuR$L&F|uHjNeAx= -z1Oiw@|ID@+XGvtx+%ON=2bhZ$hoAuT-T_bl6)iI+np4z&Q*goO91^XHu!5a?kVZC} -z5=L$|j^K8))1w@N4Vd;0UcX}U_!gk|tSlPR<>;@`3o!}y=QPYuGcNFC-HRXMd -zz-K<=7}t%b*-9^f(!dQ0M3ZF|E>UZ>aA>LtvLs-Z#N4fT1I2Rzn0^@W7<~sPNEqaVEDA#uv&V>Qv -zpOnl0Z+c%rxlUd<*E!5}C*?Zxr@aSxhjKX@F5DuBMMgKu)sf{g)*^d+xHBpnqPFM` -zLLU8L3ExIK)oSmzqW5sH*oI7Y7E#m`BNomS -zx&8;(s{c+RLv1)UyO=i$=gn)u5R!JQwtCExx -ze*^-ir6EMHA%(GGrO5SGA{*PfvaVt#cTZjUf(xTT1^V$OkM^-t-4WIN|e_D$DlIan|$< -zQF3honIExE*~eX?3>{|yKOF4 -zAC##x(}C+vS2ve_hawQ*7s>UiDQ(*Lxz=8(bBCv1@05S{_r>+`n7JRt+)K2Jlj@Yc -zkmFjX`k8#(TkSxzrN)L}w)r+{0hu|dhFye3Q~Xx|B;^w+#~C>v7`%aHu2BL~*+I}=DKxllnX}vkMocE|Mhq)Y;AAY4SgS# -z<82b9vM#7;vFr -zJP*L!Z8ky&F%}5*zG$23Yq9Cf{Or`);x$@k0Svf1&-Jt|SL|+v4UoLN?ffGPH~Q~J -zf+uLx1waNxJ`1D30&5sTEb4N!4Hk97VkdS%`-_5D^ps8QuDJ3j>CAZ?g>sz}IR4~1 -zb2;+lI&(M{xSTF%pTU2YXu^NG$l(9Z^bkoIB%T-k`?rLDmov{Cw{w>X{I{JS43_*K -zu0M3vY@=!?tpF@)Zc<>0wVuPyx1Q(Xt@XTmAYV_HbAnlwywh6D57}Zy^DH@LmK%2R -zm2^3C&$ohA6 -z!dTi=T?w$X0$rKU((-kMuk0iX-@GNbzPI73W(|%ENe`725;e10uj=PlSo2e44t^rY -zvsxA|=k3;V>a>o3M!%lG9M<~_t>+}Ok%k?j(3mwO${ok&Ilt8e^}-1{y#u>~tA0b$ -zQTu$4gY|y{`Y?pAe^9VB1RPQ`to_gd*4U<*&CX*LW~Oc{{#eVhuYG};<)$6h+D|>- -z+86E!8h3`E)#njh_2o{)A;t@rUtqZtc38`uq6AQ$f-XyC%OY{rS05!Fl}sS;Gm9ir -zB+XBe1d4S0l_K#J>CYlgiu}l!TpUHhSOu{Z39vUY6j523Xo`HmB2g5nVUb9R9A*_n -zP-G8#+l -zm?Bv$@-K>HunE~uk@>8nUr^*17TH4)&hs^3o^$o0=XTjk1lClp%mDwmZ#7Sk_(Kw%t2sYPbM>5Ej>T&giu@Wf~ -zNR9B1Oe0yen1=eb@gqv!**U6TJ)0Ep%#8z(NE3w?^hF7j^y5m}_O_e_Wkh55c9I6} -z{iZU!4ZSF896*RVFalf}&bl>T14w0vGp0(A+F{eQ>^_cIiR^x?&-sX<#F-dt; -z5KR5Bs%_J>JCp}?_=`;axi8h|&-XSv)MN5QGr1!hWztb^ag0kS8Q#+V#u|ta&p)=4 -zwW5#-h0}^+T*aRw|Agr}t3fBT@7-PCDUOK44JX7%N%;)1kyV%2wmRBod9@aMsAU6* -zQxB;p-M6$Pb6EfX8GU2GW)hN%pc#OU6>*x|IoI8fO9p$|P9l*yiRX@TU&eEOae)r`#iIWxt|pU&s+!Unuy2lcHSz7 -zTFvL`U$(jWb{jUqWVS}o7Y}LUfx^FQm)OqOXnbrRqVeAVmB0RSOJa*N`<&o3maq!5 -zQfpLy@hZ#49^|!;Gi89SXX-h(%=pXSMLk>mI&u(=5f{)$00xt)aHCRSE`=K7 -zD*mha0{(FUsq%BE)60s*K(;mT%uw0$-i87|mdf13xUxE_?6Y}rjceuI*s2pvzB25*{Qpw#dku(K&y*;^6t&Y?$xnOw(VaO%6$UQ6OC) -zodZ9ViNi8aurf&jqPKtm2p!VHFCo}3(Htv)E~EyF{TcO@p(g);mh_r|w?k|L-Z7hz -zRA=R6r$MvDPx+IXzTFfeU)i#?U)sVlTA7S+r~ss?l{llt&N*W1azfi)lCffUHIzH4 -zJyf6sIJV1|m?ghaxA@lm5eQiLo>T>kg-wKx$x(N?Bam1+H<>|oaRX^OR{U!< -z+v-Fd1*BSmLc@eGeOf#Fe0*Lx_K!?YbKHV({YJ5@PX1M6auCso`Dgh4FCH&2HdB4_ -z^2$shy-%?teT4jIS(UqYdfb8@R{ttTiK8GfBE64#sQ3i*=#a)lDNf$7GGb*i>zpzg -zz@{?O0To8150?}Ka(%u7>g)>DboOooR$Q4aWp3=;pVH~)B9@q -z&SH1F^ef!rc(h{?0|%Phfj4y+7;L4ZH#FsPe4QREmG6cG>4U0uK$D}SSE?oNMo92q -z0aC^L_=favPJbCa;{?yw?+o;yG8}q{v+%n^RU17XmvN_@t2$3Ur(zKv_He2TG=bBtlr(ub7qA6o1PVbr{t>P -zIr=woNfNX6-v)Xh%9Ey6$l!Qw5RDp4F2R+ESf|E{>&f9p?M7zLS2l@2)Lp^#2!RCO -zyJ+jkwi_g3Y>ZpmXc;78+oBDzj;A4usSnl!?KNm3Qo?>`>MW=e)_z$_bJ8svP5WPT -z+ZnpzJ7sD@`v%jOPoGYX -zADWJCmmNhpPJ5sBO2cUX1*as;97czm5TTe$BUPK6Sf@QPn(x&{vZ}nPg0!?+`k>C7 -z)?}L2pc^DKjQmImxO*^PPu$vhq6)Z++0J`Z!hEIRAspuNS4rDNe~9E~w}Kxw;sSpR -z2!QocnJSp}f6qgM+sn5!jsl%0j}wz${hfpSyf!0+W)cU|#WNQ&|K|7G_O%-tpcO30O( -zhDfTl4_!?2p*^nB9=Em{@i?@b9{Ff$we%d!OOxhBPlHAwL}ODY_bL6@bb(#aRnLsm -zG%TAY&W}K=|3-n7ZHMmt%Ewf+>bGD*z3VLhA>G@^-@Hz5d|gcEOnTY%2zyycFV*N4 -zFO&Jp>F^R}H2iuDH6 -zL+%*nm1}uC-Ggu)KHfw^WFCp8tJ>jZgkVv2{0v#!5?>$uP~(QNMGLf&4Ptv&HCZ*Ody_M&a=js45p -zD{a%>tM3QfEB%YxGny9zP((ilKhje8dGjgw>G}fvOn4H0Ixe#bIRsAK-^cvVnA8h< -z$~l8Ob|di;og8IT1^Ir0dVM>hN2AxJNb~ -zJ&YoZZ(oO6;*>@?wsZp$25hQ0N>_Xwr>fz7QlojYA&s4EkS|snO1I+qhubILdfOIb -zy@K-8YSGl6Z@$URX8KRuVGF}?*3dhqK)o%){tP`HT9gkv!^65$lVd$ -zFJUx2YQhB5jKUcmXe0sS0cgg%HTw3+TY~f!&trIhiDgGNlIpcp1>cca6{A=Da~zKcfzq7NsB5Ozs{d)*H2P^d&6!{nv7992UK%0wgzeGM*nKd|Fl*)=BAwASR -zH@&@FTj6qcugn?(k8Udx<+ae?D4O&c5oq!`u$o9q1|&zChNo>TErFSnx@k8}N~&Ap -z9VU7Y1iYIaIr48xoh(&Cebh-P8RNeLqTSgp&5fwXWer&oB`G-&)W+qb5WNQjpx2F-PbzyQr3d8jwZm*VlWHAkvlT|!$4?q;BPa{rxiHcOEhoRleu{b| -z^^^GrwYih@d&Jb_r{rV)54~GsY3+$$viVP-`Jb%4u>UYDQJNr?b;GT4w=>q)5hgRK -z&T#esF};a}QvgqVzd(2$k>UOrJ%oY~^S+JHO%s|6z{ufTcO?o%CybF73)I>7L=vxJ -zwOnVMmgjV8MNq5=<{5yRiw{Y4z*|(RG~0@G`=6Kd%njdZ0b5^hE`Udi08zc0*7I)^MO$L5Hr0^ -z^W__$2J%E{%m&n-u6sV9LLswLjaPTIb)4j~a8lhzgnrleA~&5O{wN!Kz+$@xLPiv; -zj2E(le&ADfp)Xt$z(cK>QBuxfds`C-dZnvU0~-hc$X=>@9)6$bMHJfm -zVZBl_Q>4Y?kSJ`-9PDjs@4nL86v6gCyz9yF0s#Ipc;A>gBt$Cv1XnRyWb2K4=Tp)} -zxgXy*M-_8!2eM#YD!5JO^c^^3cVvk|aLU!#R4kRdD!?P8+ -z1VWL)Qzp@-$Vo=*f)F(?N*FOVz_ZlJvWdH`dDPsg!!YCqwZnkEX?8IHm9EH;PV!R6+OR_*yP~S -z?}6xClX_Abdy;@g{vr#MA%F#GV<)9StN-X -z_|CWzbqV0`>VZ<6y$l{y%yFxo531cC2F%7 -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 -zV;*M`0vMwxX^f)C9ZR<&;oVbb?M${l5C-WO{) -z+UFom??*JfA5Na|P*4PW)eqBK3vXg+_#oY&@UrnGJAsb16X;QcaDn%jbw`=+^`Kl& -z1o`HtsFC3q-u(eF+!&i$L5-LH9t5MeKCo<))@3}HXG6Tf6^UV~T!@{pBZAK_{F41N}w-l1yCu!aAj#=a68hSw%M_`uIgiRQd%ARN7>f|Q*IKFu| -zjn&8MnPVXEfo$*aj2{wbl9_c+kom7BXc^s|z+b}$PwP4}dhpZfKmS&u9-MXKk-JT3U5;{JNJGVAuAx`)GPlzm18A`G0 -zEEi-+P;)Yff#m=p$;gG|xeoO#P{epx=J#;fbB1I9W5iAN_zT^K^26h;&E2Q3{AwI7V?_(PPOz7P9uu8CjWbv!NTFQ -zK*`$~&8vc7a`asarx858OZsXzoM|;Xfuz#x9K_bw4VwR0VvR^XjmUfUH*QR$%bmn?>;S3NGn&X -zOw}OPJb(sR54uQu)cAdS1ytkbbuw`$`A5#qlR40lAJDjGQ5r5ihs@Fa_tJC7(&cOP -zHSBcxabrd#?x2*OMQ1Ikd{qd_)AObBg`pUTlgj@Y%7_ptAV=kSzC>X7rRPvble>X5 -zgh%oOccjU67eL0+bA+n{welxun1DBZI38Mfdvm;K(Kg?qFu_DrJfBNFv*GbSmVnlE -z)TFfo-w9GhT+0`+aJgQ^xn`VaJynn)_d-TMyOM2sdEg3>T?LU3g5+}6V64-4nW&F7 -z+D55tR2Vm*OG*j^0W+PTTt-G!WDS8@w^FU)=ncP5B+Lj3Uf$ -zC!F6Cw1y@Nj&-U&V@MCY{l@>4XgRD`ETLV&ZhCoxE%km%mAgaJu|f%sfL!*w!w5X% -zhJ*lPPSDv^4~DlV5(nj|I|}4(%y|RhPd_?rEV_H5RUZVcfZTH9@Uzd0)aU(x&U3^#e23yQbM8o8%hY-rLw&!JCt`= -zE(+#x2fdUu_{*gNe|e$r<}s9Vr7_hLu3O@Xgoy+5c6tY}Y0U6>VL6*CaT -zYULMIi`)hGl1Q8xpTz~V@_ANR`e4)$?_q~pe&1=#G##feMm@wQ@{E?^zp|D8Np=EB -zgxTggky&|B2X^_1eApDuet3gcE8Nf^;O~N(Op3^)X6Vw88BqH-EUynP{cfXD@-=h} -zj$ILIB>fD8wixK|ylBWq8@&(55hKsD7ag{OZNftFPG-KsI5eHAt~H54vs;!?z`CZ) -z4Uj;VYZsT7K8Ea!vD|E(PTF~!LhkQb8XyC4*U|tfb2p>y%af8JDXUo*h{K=i4cdRY -zX*%&i%=an!YnFdO)r8H7TXzQ{*DKYtyR~k(2Q^$8AWWg4x6527kS*} -z=-%ONVXG-J|A0wY2{lWb=Y+m;q -zdYrS0;vlOy*b53=tdBxIF{gvcBkq6B6tN!sAIs;&HTbD}HK?gw^cq!~ZyJ5hzDn`_tylT3 -z*KE_zd=T%y15bY2)JT(P5Mm|&Km*B9GZRe9%JtY*W63q7MIsMJuWaT)7R|>T#q0}~ -zcSNYY%5QD}8$HpEJp(6()aVWC1{7F4|j)nZ2dIVzal9zq6K6JAK*{YJq#%#=JX3)UyhV3@N-QT9;*u*K71`+2j=hPZ7Pu?D#GyMYkz0v -zk%bf&Ulaf12$d^cJ$*!Q?zh)1w0N1^Y% -z3+6c=Gp>kOM>0zc-UC(@w+rH -zUJdWXDm|nVQApNH_vn1Lsq{w{O4m!jVWC9zD|L@a+996rznm*+)^$;)F;%_P25)-s -zY`kvWn_|=~M&Fdn=X6%8)Z>y;4sfjQ@*Q?C-|!yZrhb?_3*vMj#M>;&kAfQWo?jb| -zvkNcFt1-RlAxXIo3-83O`4ZHs($CkW#!Fxjr$Eoez7)3FZ<$Q;&x^$1qD(?j_7V|_ -zF(iisJ3jm+x?+Ha1kqjlfDV?e-zr!ZifrQaV`< -z0Bp&dT`K<`eusA>^Lhijx_$y$Omdwmq@@yWFUkwId3?=!EI)V(EX~>AoRM -zrrRzTvulO;{7;6ms^52Q2)9~F3LT8zNsC7BMQqr0CUJP3Z--XGS23vDG4O45xMz&x6tGE~76XjPJQKfJC$pkfrXzDg84l(9l)1BX8%uh`cmiG*$kt -zK(nz9j&jh(#;&LmKs^(P?#$_olxded%y;=2exC#NUEL*>buoK_kuZ#OQdk{3w#!f$~#CdX4O#&skDKpvTYgB}Fn74Cof?nXzMvmq7? -zjKUmIY<#$KXaFg@9ql2D%jmYyrQ{87oIOQjMi!>A>qgbG#fYx~R?f7H?|YVr*t_P^ -zZiDzbls0hro+>~yokwLn&&lSa*2BE -z`zEsWolm!rt>le8AduH%uBN{I9+_zJty51%=zI&1MRg5%4AipwB*?Fe-TQ+}OMV-C -zz)BrV2KK82&sRwAgz)=;yqg`P<%ZOT`QcF28o}N_ek9w^F_MPhTf!ipREj6N04%=3 -zwk~i_$avxz2JThT2m7nP4+B~DHl1Io#%2SDXWwf0;Q+{!3>cxG>w^Tul=h6i{}jxR -zP|${4UuaVUIl+gjTQ2nn?UzD;}P%{V*dc{A5$1$uS_{H_L(5i -z6|gS-3%wFLbzDyCTEQMk^&m_}!+Mz_%@2@wRO(6j7*2snDSZ{}l(@Q+^ir7qs>7ib -zWlp3lDzgMv{~Uq}%!UU=^B!C~Dc{wZFbI>;k4XJ5!}AR6{iTU^+cF)?kgS<#hy-I-OcIn~Qe*>oR -zT@&;ncc?3k0g{}1Z=N$hM$dmLfv8>5(bS#uyK9cO(#lp+?bAi(!|DFn-v{8br=Isz -zN>Wwoc1a(KOC7r~Z8>8V8KT>#yN2c@)m287?Ug$thADLn+8zH>5SQ+1rE(kW3+;G!arO+lvqD(DYJkL!1w$fDig}e -z=de%v6k_#-ynbov7U_d6svlm=H2LDCps!U1CmSa@U6dm^d}rL>+uteOAzxy_yQEpv -z*I4{O5Z@s>{{hBg*Kzfl7CR~6J97$`duVIl)sLlanDWe3yfa9vMT|7U#y~;2xw_ -z6qBp2Bq?SSQhl|?UOqbw+M0hi;08K6<9-xW*39FJexnd?LRa&t#r=)9I)(^!| -z+!BPiXY2vu;whyC -zNB}lh+}YogH*h@`I#jsi-U9_Nyf^^)i}8#$OoM045bGA2uO*SQU8eh{G2K^|Q2Z?2 -zifS^mX-stU^Ej>cQzwz(CD$3Rc`kazIvT=61k-U4{Wb83uAf6fi1s?QdvYo>j)h=jRu-Z!QZR3zi%_1@XCGOiJMPL6VX~%;$EzNl`guYcw5B7lRF~i -zem+OAl8IjTWLpeQZB~wY`r3Ps6zI8E#fiUHmOYQFt;0_r1?3f36C>GOAT~&gm@zCxo -z@YLu}$p&xaE)&@G>i1NR8nQxkUq%W|v2z%5@!q>2lkG^T1WiD;h|D3(VLUD=VEKzn -zL|6bHjy#1}NPgnqkvl!^#(KuS!c3_vmvWs+rmOJ6XET;BLm@RYo-GgC_F(5vxDCIf -z&3^A+H -z;7NQD-Qe*w_awatm`@A)1}Y_nV~M~Hv|Ytbk`D3>fDzxb#L}`Hc3tz_EK%^!GQ~sp -z5+)vAEpm4yTMh9SsA2sq(n%9c!-wY)fqfstZMmmWzNL__#^szO_(v`=+jH>twg_$8 -zTl7KLdExB*8r#lSWdKQa^Wqv?)72b-(*EjrmI<{M?8Y -z><$-O`-e-LCdZR=06@+js6fjgPpk7>laN66p)Ao-@g9AciHY+VH=y+#_z14DM)!V{ -zbR(yqeC8K~j-xMR@#8-UrW>7qrYLYv7BuS8xp8jRy#Zbow%8xKUEQbd&=y5KZ|)6g -zi>8_3cvF)*qm$N#oL*xekI>fBM-rgP>%3<~N%@t5m79YPnk$TLI$MrS3^wV0%9q0M -zU^uqG?k9sXWGC{~py$AuP)TVHA!Ksuw*x{HLC}WLzuS3->tBQPA*y?)}1S~NL^`y%-8;4K->q?@ax{^-pN -zKZ&&n&^9pwo)hc{tKSn)cT?Bh-K`NDN10+yAFU9B6LG}&0{L%^{~~Mr09@#KbPVd_ -zRy;agiBGcL>FgeRbQW69$g8y(fif*pV9h+qZ~J&d&?A(O^&xcWJz8>IQa#%b57Q*2 -z4v1s8|1z{Ur*5B*3yO@@9|`=h1bcWf_HZGH45Pd?4sWevth`;R2QWiulLvEeyC~kB -zNZWGRmj_mqfvFL}w$Bpj?ke(Q`l86Z&*(pza|8_z<^DV!zYxbz)@|3o@BDq-{9`1iEaaMK;b4Lw%Uz(_TCofqX2nP!;4DYBRi6+ -z{GGMrQgkUaen5NvJ2hg1cWcD$ZSMa`;QVAKo+t$7n*n6D1B^09U6lxsqTe4-KTE1l -zJtvhtAksxG6SVvd4t?cp -zBQphbCpYNdb8%Mcx#DK^8!U%fe#yPmw_t}3`7dg5f3Q|TL!2k7YcT+QaOuUv1@RQ9 -z_Amvp+7LDUVeL969u^FQ=|vZTmc%AWOI|lB^0z0*jOTYB;y%t+?E1V)Dl64hV-O>ZT(PKH5n4Qbly|W*yJH*PeZGzaT8BF -zE|RZxvIxlTb|$#Hn7tXyGAzYyD>n!{_WSzr1_S(t1~HYzcnN-OQoV-xo2l -zQtoAP>+cs4T5mGD1|&m{X2_9IBUZ15uDy}N3S -zy2E(60%@|^keN0ur`W(gX+yLO7oH0BONF-ijZ11o8*yv<;df+R1E`M;(yp)11ufFw -zDQwPf!8?m5;WcV`P>IjD?kw3lY&IxX-(zNdF`(S!1C|_+lsycRv2Jy@`lV5Fj{F^) -zeIH_pM8(=BGn_cx_53=k7*<~H?R!KBW)T+=>9S=&j8ylirw8Q0BFCuv)vx;-utrUy -zlz9;6PpMOPxFb@3m6X?6J*0s*pXK$0^f%N4soPNrncrWmrS*f^6>C*L!2Op-MmhD? -zryjzrEMxK4Fc6={Ols=q?kkjlx@$pqe;=;@n*7*-=n<+`_dlN6TzteIqVDS7fX>OO -zO(oHsBZ}vY8PFB=YIs|Vf*d;-p1NOBZVQlzh`D^Z5N>mRUCpBfO*Y~G$1;MmNqQD4 -zoAG)U-aF|8$+E~}u1jGxL~9SS(b%(t_5eq}zMeS+0UG5R9u^r_o? -zrv%&nh~`@DptC*fbQc%G$WhBGnR5ocPY^Ev*^N&~v%%I;9#L!X>ZG7Q{1;P2hUk`o -z`p6krwNXscp!2Y`qZkDq#SD|9m|b!d6CFn}tK=wVlpMu$u2FI9!Q74m?(XCuF{*_> -z{H7_;@V(AL%EcN|d(rh2NTFb6VK_x%kuw25>A6#mHamRlLWYJn0vcx1c`uTtlFtMY -z!&t~pUulk2phfgZt)1WA6v5h;SS3Qv@H1NJt5Bl|b*wfauJ!rm(qHfc6#R(Tm!Lu@ -zJ0Inq2Y5r9rnGxZWSj}G3G_SRu? -z*}1+nfO@HWv=*vV%^j%eow1EnLGG*R8z7h_;?<^aKgO)+G^ztwJmEBUXal9Ip_+ol -z_=RhMVRQNdcKW5VJQVDYFn)raH5!|7`-YsXynzSj#Cij1kWZ<#W%(Sk_g?Puq*6IiAU0Px-Gewf1jkv*u(oX*lK+h*f>e2Xkrr4JWOfVxOrWUwI*&@HpBxrc46 -zUw~6xO*5&nd*6KJ0-dVG13s&7!|{e0+e!rCJnEn2!zD66#s?XD*#H*wp;Yqb@#t6BikpJK%Xgxe7g9Uef(7Bp!uuFp6{%qqT&917M7w%Xi6>TFm{)sX} -zjRl8UE{y>~R*IHI_KLInaa8Q}sr}r2H|2d|V1&NWfZJsv#xi%`u4W_sn|LE$A7p$S%h=X~CVBN>T*Ko=(mN&!sVThQ -zEw{m}VV)`lgroL-f5(gVyrob>qaaFU7j=Z!6_o0QCiuBs}he}|gP`mnVJE7g}_s8nW!RexD^e-fO_Zt#l -z%%#Tg+&K3dU|D816O;|ck%ksCq`37< -z3sa4m2ZPoDPIGd5Gp~UkeqyVZ@TJ*BU8f1$uKFKn@2zT3y_jgu<7*F@)6xg0<+4A_ -zRVcz$i2j4T2Rs7%GYeHc$X%z~x3wkx0MyX8wY{|(DcWjUpvVfs)^sBj1KTv}g|1n1 -z>}@^AV@^^XJLodO6ohzu}s -zd5jml+n&%0cmR5Evqy-k?K$7Z=Z@a<}wf5v5(3&j&KGmXR+{lA@XU+ir>@9mRT@zj+0 -zF`Bon^ziF(_?fqe1V$T?k{FSS!2Uk_0|TV*Kj$qSY^2W*_|n=lZEt=@eBqlY1_9&s -zxvT>T=K+iz-(aV{g|=2WfJ%A~5w3cxBKU>}%_OvU -zfbdE8e~mi^KL@6c*G!wN7Y@aSQFTe`q3Ss{zErIxa-+wSl;>O -zsmmI6Kmhga)anJO-~A2K?>$PIEcz+rpzf5Dx?OrCf|>oY(# -z@UA!2FE^-uNNqKvosR}*^!-wS-3iuWMr$Xwp3y_U{KYeR{%c;}%RAqU4pP&sSx7_g -zgom5hRvC5nhS`iS&1PB!p}?<@W{k$~FXR0%8p3a(Dw=~%+{F>(isL~9+3__=sPSl( -zL)=sD0_N`fww=kTNe(LXkQ_AG^PkBvR%Dzy -z#CXOvJO5nRAtH*>l<(S;fq)TrV^9q*>qDpe3R;otfqle(MU3tGr-Y>zPtzdU7AV?YGj|7=osFjW6fH~Y)^(`zm*IEg;Uc=1^v^@?LcJe)IGSckJXz! -z#kg=QFNp2iQ!jU?7Y5sw;& -zZH+UCpibgj?D?(Mu+604dDPB`x@OxuXChu7vJ|`N^H}G({N)5mV`;U1^I7ld5b3ea -ziJy>3e>^t*`OiUl%faL=vmz}6FR{pPZBT!7VatucM}Nk1jAy+8Q7Yf84BFMM7NM4KCF3^nz -zcrF2Xg>R;VY9V4$|08__^I-z-&T5p_9+W9;{jvR&o4#uHWo;0TkL(DBN5rBF#5%NB -zoYJiCEUoQK)Xsx9K(B-_*0!`Zh`4i$m>-Nu=6$e+Wl_QR5z{GLisg$~T_lKRuyWV_ -z@5#phbP9^IZx#ubt)o+C=H7(<>n5$f2M@&|xB1pbT$Cn2`AVSkn>%aJ_QP~dVA+W_ -zZo@1RX}Qjnk{L!U7L`u<2Jn88B5oR -zFi(qUHP0D^%`JF~Gh5Y;gm)5M>)hvhqHs}dDDjF%@Bf0R8MS`Mb(O^=ubBJov -zhlOI`Jq+toQ-+`GCh{=}SGEYlH8_rH^Roo$fM?_P^Dh$-cwDj5S_U0C`a$EaZvp|n -zVyAa8aSPblHBmup6MwrN2#Znvg-Ie%kM`|50)TsUqPZ}5IhL;)(sXarH0EX3EehCFqL^?&jZznne(^=(We#b&v{vN)wyHPgi*s -z;3ez$Q5E_=xKuU;gNeS^1@5Z`6~sNz!e|ooe;XZ?#Wd#QW-*yxwh99OpdIp&7jg8b -zpsV_Lhm9XmkE<~&UFu*q*n0~}4&y! -zsSLkSCvD22>)h@Dp)J*rf5Nyn#%aoVZ}y>^X?A;S9Jb3rsRu8>H2SBTt-rLHyF~qO -z6?cLfbTss7>>{TGeeJU8bkVta$;r*wT-@Ox-}~YpCT!1T_s?xM&qTB35+%i9T_a+$ -z^$8zyLr5pUxN1$rjYDbE-{VcIR*%tQ&;(^94P>Wdy){`-r0)iiL*nl_2+T+wC7we( -zmkCvUPkx9w=9dug%S=f}X*3ltPA5?DlQ0I5(RvBnOUjXB-3D%AV9c^reNqz;fed^4vinQfyEiZL2z-6=Vl#3G5pT -zstL$JHvsy?!DqI-c>fxXAEqaheYz*5zue6O_#xxTcjMRq0-YEOZ*BFcS@eAhW5)ni -zM>fo0m1bTQV9QvLWnJXfB0VRI@v_SPG!LC&4l<3MpcSNUlNNt`jtQa9LMG$s0d#UI -z!A73?g8Z{&8;m|06hj#RWgYy>5H7RDe`v>^XTk)b18B?FhO_wP0R0OiSh#n4_Qe0I -zc=%;_9)$k~I^B%qdeT4n(3YU1d -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 -zwZtS5p8B?ds?*;OLdR!}h=ad9#MrxmJUsz^ -z(WEXYb}aL3-1F+V^yiTNkw13<`p<;F(Khyc1^hk&fA_)nUO?8U5RXX^;{46d(W??? -zi;TLmkUdr1>}HzQyJ#C#^=JO{B0c?`KRrQDVgB?WJgpmnXsxQ6O_cjCJ}F(^MTd^0 -zi&mvi;QAYtyoNu`pr@z#Q!zaq;7{Y}$(hfdhSSqc{3(;3UguBU>FF?k66h)2!}s^I -z@aYQv^esL4`O_|XdYwOQ%0erKwX^x&BET$M!oIvp`P}^J8OpalF5i6qrHZ~xyg}se -zSMm3EPDhML -zUb#C*>~MZ_gZ^~xpF|=5={)#fxzDioUxNy{x=$)H4f`ts*Z&H0*pZ-;X;eQrv7;P6 -z1*RFRMXw$Y|JQ$Gi#iAaHqkT3`hXREghyrX(9>(!Br6zB)ajkUd>`4Lid5t4_~@o_ -z{D1(z_FcNJ_E0%SgxV?hLPtQA_@GxV!T-H0PFwLU(O-czeXgVcQgSB3av8wVNN6-R>+D_lE -zmw^gBT7T?Os6%=urEs2>qR()qHri-0nBh!=7xNkkDn_0Ay3+v=&DZ~fk*wZyy~u7e -zCcxTpm$iQt=tt64`aDgfjg4>@z&!fWF0(chmlNu6g2^;_ZjJ%n*sJ?ZFWQR61c -z{>ab{*^A8Wr^z_s2?9pSUq%?i?Q=vYTcoE9?X(}m@clz_^!)Z^@~)+;XRhH_dhw!$ -zu8x_>1+8xfW6+%UFfahypEuO^N6^Dt^zc^?J*=RI;*s<~Cz$H<`C>FYpSp!T1n42e -z9(?q0`^7}P6^448iG2$VwT-1@L$!M-b(f*0veW`YO=nHMPQ^>u>st(U0ZZL%s5i6J -zTtmHurOFJoKP&Vy6`I0c&oWded;L7UzKXq`VW>Im^*`wKO!j)Zp^j#+pP|>+v)84D -z>S3>+px1NR>k>oFX67DVL%oB&D=^f1SjuCl6)ZL0P^(xf&rly^sa!*Sl%;YE^(BTZ -za=oaY&k&Pss86yC&d_x|;?G~$$mw(%Pyk;-xcgi(Pg7sOFk|jbi;^Jy3fi}*w^GKS -z!`GT6RpW|P5NJ}4hEAc!WjCq^s=&NCp>hyvgEuvsT}^?V@))Uhr~8zAkuk#|>Q7=d -zTCZTbqvp|6vkN+IhS!C#Or$~{M`bG#^xdC|o3zd9&c)q~DEA=XK@~?D0_j)+ -zia6Y@l8XDjSXga^`i<73`*$ -z(w+2`%h{8BUU2dl`$>;YS~>_SZJs<-J(7qEyoQZo%uc` -zXVK|SX)O+O8V)lKm$mY1yUd#hgT9TG*DSM}(66Zl#lh|YV9HmM-ac3gpsZhfNjuQt -zl0)G=zOUPB9vy~ZP&y1Zr!zjXxa*8{7=5VMM0Ptsu?bbM7gykmy7!`#fK(is+lO>g -z;-~M@2()USp#3#WAZ>4rceq&O9;fVYfP|nPksiE=_Ou_J~p`_K(By#B+&3|iXWZ_tl_yEhsWPC -zV9EF4eHe}^ZinSZU7) -zw5SEBWIAdL>O-(v9Xw=@~@=e>fXYqj(u;?>B5Q0=gfXGbnO&qKw6w^UA -z@r5_viO%F)-)bl2kzM-RQ)be^GgLhhb(jEs!N>Yj@S7O#8~e_8&T6|n+V<^`(oO^u -zU`A)bEYF-|5lbcG9>Ii3)?~j@dz2i}x|&FO4%Cs;CGAUjoF|K7qLn+0^sXTI7VR>; -zT}7D1R8cKelo*6pg@HP4m$Jj~bS>1jX*)oQ0Wqhj)qHLsEk+*-9i4jDV$fhql3?Jt -z>fCMI`@4L>urFP8MrnemwQHa2D=9;Yc1k-LOiidswH3G%Me;Aj{8#`C33Jp`r+aU7NoU^qnfsvCO%C+13EXrUh+bi0H&IY3oQ6v -zKA)MCJ}A)4e4WFCpB|!5a=GQBnZLfDy`HNxNzQtG6MKC*4?hs?KYM+#&LlbO^%(ZL -zf6OByy&k}zQ897>I2(r)d@a?re&yw%#1mimE(+qh=CpiCM -zeVQ)2JHe`1pGxHco#4I0`s9_osE)oxZWT4=n)<&G7L*$?bi%I+3eN*e4;^63P=VF< -z@%{`~dqrA?P<}8clwh+>Y#I8LEkgl3uuAw(m!XP&G-0xF8M*+Mp#iWAb&Feuly1CV -z8NU3H%K6qquxrgS5B6Y^mciGgAg)Qzb33iMd_(wAA$kfz`!-ilFNh0~yZ*8`#f>ry -z`D$PI$X3n1KyK;Al_DPkM{tq|=zmw+ -zBCYMO?gJha#S8GD4k)>`?>ScHq46tozj!R<)i5j+``feb{#!$Up3xLm!(XMmkw=*M -z5yNSIEz)BBd~C6nZ-OD0=g=bkQ}`R5S((#_3v6tzg^96U5V#6L4LgFOs~IS2A)rPs -zjCN6kSHCYrDhtnPV6*9l(4CASKObetR}e#xc&taF(|~pLt>nGlUKsT8$jZ~d!GR$mWaZCz6kkRvz1~18nI+vSVSxW -z(E4){?aDI8`7J-8M^L-PSB43@4Q&seunu?4D&BR -z8Fz~!>#91FdqP4el$&$|LDSs2p;8}0m8|xgt=iu?k7@^YbYBdFGFyjB1?I!&F#>p> -zaHGwPp0kc-nkpK{h1N60WHnbz?u9bi27{3r;7n{YZ-Q6iZhy-_sT$*F(}nc6oVSQk -zHjst=JHHQ!YlNjvhUBMv)2Etqd^*^hY|OE;OBJ#wZ@Lx62*&D|9EpU2jHGj{9@X`s -zZl_oy9ljg7@iA6(<15gY>p6J3`kR^7<}y3=@!!Loexs%ipxnYiiO<;anCR=QxnbKz=|5~A1oPLv)Q-VRx^EUaQc|`&Aw9!<%zzg#F~<^ -z9j9VH=uMxvJ{DLj*bgPX)*LBt2KR0|3fn2iEn!l!NfBk7~<&(I>qR*&2s=wVj6CDrq(Vt-PAObWxkgF}0>xX&TO4^grR^oOH -zMTVCGGjTMhpJLe{ml?u?&G_>juZwD~vp$5-7r-k*GMk0z8LEWij -z>HcBZ_eKF|e*e5i^`(b!cQ`yNYL5+AXxARGu+XBf8pd#??N_?S@@HedGcj!a3~0hn -zlDZs*tpmKRR(l-VP{|8a2_#;j1mTvkHZ4t8Ng*Td`ASdh8Fjcx8N$9a(q=Xtcu={p -zr{jHyO(hzkNPn9!;(hS6z7or6Hp(t{Gk()<4c~(;TvFE!90IKeHu@KI>J|q?zZEb^ -z)!)zJyXbtdqJeZFM@=Fd5%k^Ss)JE>$KVO3CPfMRgug|U&o|^GI(=UZohz_x|8a$A -z!^^zv(1Z*kF6~KEI4jyDVuYF^#SWuWn){y@I+W?k%J4X)_HOv@WDlGMKwYEVE%%P< -zL{CA7yTvGo+}p+1I_U1>zSc6O+q}jCF^Snp&RaniZW#5*Kq88W!!|6e5F63{peJs% -z-^KPb*>cd3B+RQ^gM%vwiwDHKlA{f0c6ca!)>W!S2#<%1FHuH$WXFuoc-_DK|2oH4 -z392oRh(ZJXFXV|eTx_Pfu7$&08YZ`AO>-UL>J^=Abc-)P%_vXsH`=6k{Mh`w71G*i -z?RY})5129YkYDR4;3tZ#{!Ri3N+yRohK -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 -zog= -z?%w_`qmP!LSh#8saK*z??NRqGrB}^{@Ryy|TWuLfYY%Cy37A#q<1G0ow=S?#QrF=u -zvT5zc9mqqxKL%&h0o{ZQie87*4D&)#n@*#VGOR15WL=)Edjl&_-=PWJ2EEG)_he}e -zee0P2Y!jI4oblR^!#={0QD}FLFB{3wyaI~HU3hMKm|LM(C$k=>dH!iM-5E#V1cl%f -zVSK$5c>fgcFQ&x!sM5!iuk`dSP7st-y_(n-Ze;;q0uCGcGh`3!Q*M;j&WWh|V72Eg -z>G8a^#FCDNGviL6FgTuhBbrdPV(+!%C{qS$zzY~%0b7y+3sGi?V@qf)@CWQFdMiN2 -zj64Q7?Z?`-aH2F&5RXpQ8iEpvIq12DM$XqdMEPF(M5>)8LQe|xhgns@F?KnFIqT@5 -zmo8hOHp$78@!qAqjnwA1q_usaALmhP(Y{!#bq3)(zCY%p7=?)X@uH3Q<5^1FfWWdl -zufPLqig5dcDhxt@oc21?7O0~&2-cs_P>h>}2(NHv!qDht&hf+Ah8-~P09=U;`LZ+p -z-oDoMemh3yT|jvY=oT&%0LF3IZXekaI%!Bc@}EhNRw#Q+4GcW;XFgM>+Ma(=Mgy&0B^_2Dl8MyK`!X}3~sS7ZVqDew|Z -zd?d-gx0Cuqs_!ZDu3mIOf@Mu`n^M4!`RbG}Lib}vx;9#>mjP+Q$~m!}+*fGZ%$qSL -z6M6i*t|fjn?Gth0e|nM+4ZD6|uEp~z@5?Lj+wc~oAv8NG&^Cr<;zkxy4+yJPK;r8t -zw{wQ|dLO*z+yc^QmTLD`q_(X3uw7&wJUkY&~yo -zMmPQ#_fzu9&J2?7)h)+y0x_j4pDA6a@1a)4^u0dKR{TbG5vkEvj#q>PJk;>{=d#lc -zU$vD`Dbe85@VCJi#GelSa@c*Q>ku#iP4G7U>7;Y(MuzI2n5-`%*>Mz)1%`qI-*^pleR -ze)NyoxH~LSt -z>UD$Mj5;ENK@295Km=v~8SXL-*kYN!)Hfs=u&iaoQUn9*aM`a6Tu{A -zlZ5Vsy}ECi^IsUfRnsA#G72T^;b>qn1X+JKW)Q;*({d&STErMU05AH=vqmPERLr4X -zb`>6GPt-mqr*3{W!rCgNF5RCtghmyHp55%)g=1VK{nl}RaCgGX^9m^M~V+$qKCB`}?b)*OC -zCiO7o?q2Zww5LmX&-nck0AXL)0bka667LyS|D8P^ik`@TKQTW$h5~{iC%zDV&5#Fd -zFABc^DDk!4AU_ks%e?;tFV~(un$}kCo67_~vf2S0+pc_UPob;#T4FE*aY^WeSn1gR -zfLOYmN0M&-(9R~C>xip4+%H~#FB>Js@)bcwr7KqdUAQ;yUl9I4XrBL3iXn^J -z!yj{mfKCKr+%PtD=ur%>NfAzTd|-IVy}?0RNI3C -zROZZOohtFUFH-tQwcb&pwuQAxTPNBcWu$sU9yY91dlR`a@V4_Ab>n6(*;wbYsV6!@ -z#~rkgrt`VTu9Ys$KxW5Wc>?!KoF7RkQBFb045=1mK>bey$c&|V%?*ITgE-yMP2~Ip -z>9;L-Cy=kynPol;S{Kv-No_CIN~cLD!w(?V?*%|B;`=#31k)k;2mDD@Y1_Bj@d60mby$Hy)UaWuCCSTj{ -zC6%rQPKju{$i9au1dAdgCGUEv2=x4G1pPr)-$TfYF$MyxWGCh~r5L3t+u^%dq_1Kb -z{sffuz4Y29XvU9-^|vNydl!$;;Kj8|AH^4SZT^;oB}e`Br=dB-fVS!6*Y$^OhW%mf -z_^|rR{jK6+r?v@5A`{CzL1o(gEh3aTD26lq8{6?)_+t7$8S@~5FIStEoPY;tXx7qy -zSVKB}KmLJ&E4^0cEYX+F<%>XXHoBO+Q2Pr>CcDBe^xi0tn$i@&3*4440z}!HXydy2 -z6H3+Hp2NF1O}K2A>}oaXmfsQ5U2%YlcW`Gte_Ln{YI_FYx|3 -zFPz>{O}hODrY2zpN_U*d$vA>4+Dfv!Hi;o^8-ph^#;&ZDdRVl+c+k*;$1ecj)-VF7{fMq*VF_P`AXX#Q -zFOBgUPJXvX@IujWlIOHf)Mk(l)8q^~7U|?WyDana|f+proOF3F~wL -zu2#KZ5mCCs%M|wV1|fzC-}niVI@=E9yHK1U1+Iov<@;7iSO)QqVbD1QkJ#LToKwJR -zpzxl-gjh9Ftpn60WuhJ&k88_k!M@=u$wYN&U`PiORlvl75}0?W(FP8&z#M3@5!#O1 -zb-?PV{4c?N(%MhlJCr*Btij4HjViW^`$xbKb;HCqlQjeB3i$V3T8eHE94=#~tyo&S -z57brfam__S?RH%)W0WhY{}gGLVwQii4J5=|LoH2VGN%>}y+TU;ASE4}l!r^TcZu#@ -zN}_L}ZLpl_-XW>zX#~E3YL`nX+hFE1Fdn$vH=vN5EY%i>?(Nc}^}1>@Hm^ouwdpFs -znrqBV@Hf~%04+MMJm%_|DSrC75cRvf4Ahn?eS3Uurjwmf0KHd -z7?TO0bDz9VzNFS8)$i4aLz1TiQBU-ZA1dea8&x5+o;XLZ21I-H2Q5g`mGLl54AG_g -z|D>m5&0p*3>BaxDr;T2fu}vmo=K3ZM*7ho0i@A!J8&2bQ3t+Opv6%64u1sj3$yfTkezF1dKUNufk%%(#Oa6 -z4%+KNHWWKPOrLZ8S@F;<|C8waFje~q$Th=q8oCZ`#teVODQ0gP?t;Xe!HD@2PRv_k -z#GHY?HcYx<&`{Zq@ZF8utmvl3ym1lKl!^y$!YAJ)%g%Ik#OV`ArcBcx$pl#S6#b

IcfYK)lYLpY{&UE)v>V1Fqj|lk -zT!|V`)h)f~jL5w~$v1v00)=D*CyV2E%TDc>RJ+^XHn;o^WBvjEnJ!ZG3sA>eJm8W3 -z{-fmoD{AkJ==VG$JWj7#-3u3Dkiq&kueZtR26q&VyPw&g0>~S}J>%cK^$EU1J%V~5 -zqTgoL0e{==<%5j*PeYUC6ZDr~SODBe+!i^++d>DOLb$=0|FHi|N_k(%P|zs@+NXw} -z)8AO#6UCON#@OX6Yd-XSxZSnScRIOzB-$D8i^@auH>6-8srI)KqbzNEFllnldf)o( -zzEdf8e>+V(<$;yqw?H(PA!0&PSk!R3PkPV&C`*PWpa*N-FiH`jVR0{rO=iTsz#A^1 -zq_`JokREDokG)977l-0rbj25+vKOv>+DGBE4&y6sn9Sf$vf#eQRsW4${}b!|QV`+E -zpHa`RF@W9+I*!(s`2C`~?coow=+nMaiFa?r)H>g(F86+bJ)aHDQuU#$A+-YC2Oo+1 -zL;Gm_eS-hK!hg{Y4{vbK5@UI9g)~}_v;D~iAKqyeH_TfR^S{(k^%=@;pq!-%@&LW+ -z|I#e!jM;@1Ko9f>m*ZQJyfD#z7?jUo* -zGRohYFORNl#myaggkJSh8ne+oPp|6Fl5)Rb)t>;GJn?x^?%q(f5}`$JKpAs3@F(*2 -z89u`Lqu2Dml4K~mmSWTlWN8P;e!hWIL?PZ^6u?_z`I{OoaW&gZFf-V3C&0Y-a6IhO -zLBtE7Lc-y{6yTQv0A@~Sq8^#f-0e2I%|7)2~t_1zV$FH)d4?)X+6f@iVv -z6mEDd8D&%*_?dVrhA6~yUTN+6bNQ|?U;GjcZuG#Pp6(`EfuF2%Ve(1xSBwp9wJm$} -zsxXM2BsU#etC-4@UZze0sM|tLoF!&jrwq15tpgUq0Rupp^;% -zRD`=ZP9yaxEMt^DWyb&%R*VkwI;bE5S*odefx#V(yu}f{)7+bt77S$=!nn_!);ILm{ZX)ZjK`t$Yc3v} -zB?TVBT8hc7*^*JP+!vRG@AD)pi}b}M{>IX9W~cjOlS#(AdOt2^bAyvV^@wu+K%G3y -zV^_ZMEjcYHy~6wA_e+wf8ijvj`|NE0*H}pU8h%qw1ZR%H7Os@m7CTft#y|;H -zOYPdx4lOO-2Ca@RWGETIVuzp|>c4g*Z{E=&)!Gx2 -zx1+l>zTidq5mb?-&na`^rjk=z&$fb)9^88uW$Jg#a#ySrjH^WDXn1iadyRVco<*rf -zp{UQC<@W>yyz3$r~v`IDMiW1H6}$^(20 -z$#af2$-!*IL -zukhwcNd6oZ6y4`YBHY;sUl-;t?uf78ZiX+6p5R+N#vujJhXpISH4%p_8?!yIo8e*I -zza6kx!(S!hVQe^=+b`+;)qV1W{0Ff8NmkeZ@-LalU^sw*RJ-bvaJ1}hQ~3z;r}!Qi -zJn#x9-w73w`*b-+-Q+*jDO?aHwY -zo$aUf>Pwhyd1lmp8rEF0s%zaP@X(5~NLn-SZ09qAb#PApVi!2M=ST-K8guwAGJ$dJ -zGYdW^Uh?l~N5h@-sMnTKR0s6x%e!znbUJqf153yZeHpoZsVQ|{1IgDJYbfKFq~PsL -z0AiLP#LRus{Fg^vte}}MI~Q89Lg05U{W2?lS~%)tkLBPl@|o3hP^!q$Yn-Vzi*DM{c#DgFd>StwqKE7fqwow&p6P(oQee+sG`;e-h*I^-jMQ;< -zIgz@x7U@AE{{?{03g?VUcpr(NHtE{wYVK@bH^Z5YDgZ^?#ej3AWXR^_lwH8qu5^-Z -zSKwtSNh>LV0wA>Yo2QkO>Qe-*#0%hMYbADdpX5Dil=h4GH`@J;_A4t}v0a2+TaQLE -z%0s}YvM_WU5F0hcT|-5i7>v4|#r&23hfsI{m(32^& -z-VEnlZHND$L{06e57}8d71IuuPQ!F6OQ&Nxjioa%ozBvkn9gA7top;5fGp=)oHXGs -z`i!?6Q`MbHk}*|Oo0c3k-aUiEGrfm~< -z)JXpJi1MBGC0^Jj*gaYtpP#WhoCM}6ZL=fV%sGD;m5rDVB -zpMZgc{2yikkQ-L4Si$(w%R-E^y&^Cdox0^$6za&sZ`RdkCCi2Pw9u3r={b;Xr*C-5 -z0}5t8d(<_I{sdi*gKwDEru+`gxLy)akTBjn0+ePfeGWr(eQrF~EmaiA->kniO{&IL -z{dIPKgT2t*&$!C2gmg=>vw{Z`hs@t0u$XAM+9|Seg)cZvP;m$+N{*uN@DMK)o~Xl4!*+Sbc&8srELHt?v>4Au*hyEx^`c -zfj{Dk_$mNXQs6vh&Yhz(q|g~U!xt*JIF$f1h)NzUl04M#h?yt{whUvpj&e`JFR?+C -zSU|R8_=Mb9!Q!#b8jnLRTWtk1#e+cV92=gpK;M>kp_3jD6k_jVLr3 -zU$6TEuIXripjWPeVb9N%0_Z!_sC)>Dxi?6U))`tQCbxjt@2CehKNLEJV=JE@oQ!A? -z%cECzD`(Q;V>V5vU7K7%9?n07bKGrOtF~83az#Sq^ON;N-KYE>-h3~jjT>DhBc?Kb -zCO2GF_vwswByWp9VpA?4YgH+*T8M?H?>aL&Jwj;l>W_$$x=M(>{2ODpIr)#j2UCWL -z5_$QLAA<)OUe@EUGyn08_?wyk_!|68&wm`}mz1V$qplZwEDvWQjUNm@sCo7P^QXc1 -zJv2?WAI)CpP*Kk1Go4KdMhld$%QaChfDq4{jvQ(Rfyg2yKF`+BmdX!bj;^6|x1rf# -z$MvrB^GxVLDsHB^H_JJE74cnhM!>VC?Q%c&Cb5WJZhEE(ggKj~`~ -z%O^=|OHeD8^Yq8I1I+n0Ik&mqu8i>4S@VB5&Htf5acqX~z;W1r6U@FuUy~i(3w4*) -z!ny;C)k2JTR>6=S-qOK84_gnuu-1dwy87fPf!*yx=NcS8cf|>A)?Kf;_yF0*v*n|a -zQiQ{|ceD!3NmXorkm3%F*~;HnI6XX83cWvnE8WjHiWSaD11^!EElx9HS7r?!a2GIN -z_GdQb(s3iJF<6}HaVY2WfV?`lH0BDU_-AB-sWtV!`Ziyy?d}1M#S~8vO7zl;?eU9g -z^K=qBt@xJ|C-nHIkqGTwmgoChE>Q|yO}ctbo4^h^P*lY8F>?XNL2g1g66KriXJAeg -z!H7gppPFlD`H{L^v45%9PM>Hc}>Bd2L5q?#T -zD80k|wU71gW(e)FT5$)c7qZgC=7O;fI)&|n0EB->_a6ALU>oHkK$u*dys0l_0 -zlOrg32$NZqd;F6XSZa~u?}vC -zji2ExlT=(-P_)mV;k-*y$vt&$zDrV3!P4)t=l{{pjJfmzM}DD0Qju@?*E{f1Xb9;X -zSWkthbZG#6D~X$w|0c#kiY*Q@PG9-TDdHfbk%L@hagf;Z_520Vo6W>T9={>RL|7wE -z_$d=%q5*;ALsLqx7{?!FX$VSSLQ8`)^juu02Svvqm;JpaN{ -zAkbH$bfDsj9fV%s^pUFh&cJkidI?Qju^e~AXQ)k!lc=a{({=z^I-$7=U;P=J*@K{> -zy97B2eq>=u9BhLSwx&7ElnZK+aX|jTN8&BUD@qwa0bG}2B{PZMc}X%{upp#G50wk^ -zF7|mLR6NU=;arFU1JJ{C+@Q6B7B+T@mR#{O6BWFdM_C@n!V2DR7{+V#5>FW8Y?lI@ -zHK=>L>S!xBM2-YYO7N3j;+59jRZ8!1yY=s^TPmK*0z}jO_jv_rWxZ6p$JG?7VlOd3 -z$U=9$JXBwK1o=)+SXKMG*URUrO-d3T?-t0>c*_sZj>2Q@kdkaU;Rn2YUP;VEWH57% -z)=->^0^eP2k;utC1R@moFGMivq}tuCI;|eGYP{9D?*3BuNlB%t0qU~5!s(QjeS;m? -zC#TR8s^t_leH)|nvMzGIe!tiKF|3GB672omZF07Ii|hne>0qnAoB`uow4F~9=*S@& -z|1v@l)43~vu*z6imO(#~FUm}(c^;-V=#xwGCzU8;^hsWQnisG%E)Gj0082w-Sjyy^ -zOT3M65+o>=M;SCWRe1&nz|2ixyDZ^B@Db*91}>KudNZ=5KcBi=NNM>{(zs`8L610SaAmPnwf -zhI(@+6n#bn@^xqqeMD0;m4?>9z#cCFjut$*w9z)#G@S~KR~0@WM@$z3`1bn -zK8B1QYhfGA=`vW^09TM7Gy0~MT_N-R#49$Qb0)gIU>4*)LtSRL}ci6E*^z+*Qc -z%cfdF8P62ox)wS!l|0b_rDy6Zvwr53o(7a2Wdg>v -z)Mx7dv-u=XdF*m`PlA#Nv)vxH)10r<4MN1nQAD(An@;YQO6%Pll&;$DdUK$-dq+#y -zChis+Sq|4ewD|B?Thj68;|~3gJpAqeyq$PIorRm -z$771yZ$*=*Z0#f6zwIX>=CQ)y4o$gyY9=ig&>j3U$mNStK?nT@6BB>ac>*1HkW}6X -zRtlK&Ejib`&>ke7o(*ftgCbLr|5=D(u*KLiP&ApK=umm(e^PmlRk@4-d(A0@cqEw$ -z(gAYM{8f97lD505$1wr5-Bkzi*_prU5dLQ7uiB5l>G`XE!Qa&URiUFOEM8=%QO>2S -z3A~{V1|E*uT}`}FNB*i~@T>IlElN#Ly1AO5*#x=Ed$_oL@|6}Bneqj67F>i9rW3Dl -zV2Gz{>=anNU0>wT_UN-yQ2;GUiR?2=Tf4x`g+2(XaG% -zjhEJzz~AxWLy_>SO57v+e>$fUH=gXH`gK&|GG@l)FT@+)u-E^`>YMs@tp2@gV$}n= -zqfEm|zPt0*rdQi~G(vu8*`4)kKQaU7WeLMrX2Q~g8hd#}rwHu4jC^9`RP;<7{ -zF@8I3O8COW0n-|aQj;2s2=$@c&|Y~F67Xn|ab!syCZ0`>c{-{s4qYN{^~m|h&c&_1 -zoI$$~gsc*~zK9^n_Y;u^vY^&{|1Xs8PwD-X?nCK=l0^{0N9i7ve+;Et>3trhyV3j082dOM -zJKB6TT>>w%he!Tfq-=(~$WsvO79Zq?8j^|ona;rAQ9^T`kpPhr~XN&t|>Cw7y -z7x-b(i=fqaIA@?)(v9W?O%a=`DLOxBW<6OLo3aNlgYo_t^dzY1sk(44_<6D}oC-fr -zumrH#&>Agi4oc1CED9* -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 -zumU7Nq~X4 -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 -z5OT!t9=!GB24lVY90kV)8?zBbmG9yY5pN$B!s -z-8H4!_JVxxI4^N}>RDnAZp&O#iUW^EX>`vP7Z-K&%dZt0QjWk$b`akqWga%7-x)Plig{H$LKy-I7026CfUs1Ku7nn -z?Ru){7u5Ihq{!9m+UIK(73}!r4jl(}I9~R4>U#la58nTP5*GC#Dv_;0M5UKG5x#fa4~2T0l`D0>x|tg&Ukau0w935EYBjL&B+$UnxY(KI*kM>w -z`zhQ*JKixK{blnH&kcGAU6 -z^z$=aN!1;qjvW+BodrhTD7|!)*AKJlK5~=b;CFaCFv=?r0iz@zYu-^#$~J>zEDFr? -zy-}ZnuijB*da^OYIfF!l*p0YziUv1=N*T_F)oYwlG0F=J?TGGuH7Ab$#6bf*Cv4V# -z+aAduRk5e@R0;L|^{FzuyERp`15ggc#Y_?xeHEaP_-8mh=<@hP=w949L(OGNxMwH( -zrVVo^2PcuZhHfp9C=bzc>fuCL3M9E#Yl%s(_g@9rm{jU}phUROBdxn~x`hafgWUQ< -zdt?n${^UveEl%}_;^B1q6~df+A=({=(Y)1M^EQdOJ)lB-Y<~;p*b%(juit{P56w%C -z5KoQ{#rf$m1n)@yb-WaHqe(J7;zQgtu-+h6N*Pu{cINt&wuPVn4Q(BG3_GgWBm}&j -zPQ*1mQcbumBR^6(mLFp*bTtx1HJcUatROSC&1|lUM4Bg!&5~2}NtUC6`tNLb`gSIR -zOoTI8;9;uhFW6MIYfJS0VfFsamSup2(yA|kDKEbjr&#sn6T -zIHCGGvoR0)th!a)p+81bVTX1mc>UPAa2MY}9&4{s?9z -z7PV^x=rFD(ahFtbOk2fYJGEoO>gx~MP#<+eAGB3iDx!03lKDhH6&T|6OwR-OF48!*8{{MnLr?ynKv97V8UcFd3ijDh$kqrqKM*wi-;?Pg!@nq -zT~I*;S&tb<5JVw>kY81GznM2l(B1v~zn{+^&6|Gxs;jH3tE;Q8YWIx0ne;7wc?&n5 -zT~a-31=48rEaCltWGo4UIM&u8mbZC72@Cb6A>* -zQw6HWw49Hd)%Sk``qT{-PcyuAAw_wMa0^ER=>l6S{JNgNbB>_118r2=7VhiJ>7{MM -z<}tKu2^IWcD|+7S>^baQhq}+*-+;4CQa_Nrv54&3(O4j@G7paCh2~W`c`YwS-DsZi -zy3tq+Y7g8lQ&Mok_*R@2_Th|xT9vbqPZ6sH)(6z8Hh-tL1huLi4_Vc!^{-IKqE>C? -zp)P9GULML;T^$z^CkD7?_lY!n_C(NJZG^dE3mWO@HPc*yr%04o^TsC<+>MRS809L@ -zPWcNd%Di!Ag1jRTA%B6Fs3m7Jlr$mdY_l$x%c^`xZqg#YQ{P9wW6K#qvbhb -zHacR&-0q49a%5;P>>~%;h(el$hcnzIn77p*efiJjCd8WX&e`F}tRtQ51{Je`#ZIgehw<#JI -zRcMNK=}5kqd56HTU?dA}z;ut~D+5pHuoiQyd{S~big=m_Cp*&26?+*DZH6Ue0E^8Y -zbld~XQ(^-V#Gl7B{+w3EShe;3c8^k*__h3-GTo|?6g`q;Rz8W6=zHlOoUpTZg$Vl* -z!a@>`-W8(lv%7-r9z-KuR8x$uFZ5ZUx`4jn&d$VW^d3ydd$1?|9s%au1UUMmU;9)( -zw?dd_-o?8Rv*)Hu6bsrG(CD46OsmxP1CV--;d7(PKSsO{4C{wl_@k56oYy^(e7AcE -zZ@4!iZgqve<(5TI4WzZIh5y4%+d6SEf41?yv56uVZ;kO!zVDqR@7bvnfb#xoNYL<%_PjUWaTQng;(Sup>j2;?;cpvWIrd~ -z*-9wgbw;_Bl1$JrLNx361~}6 -zmmI+J)|F9$=Iz7C3Yu^FhbBMwy~AmLYZ%eY{TmFUg&!0mwbCa9aNe*`-giJT5_vIx -zdtUh8MfxWb4EplEN;P_nG)hKb=W!%bt!#Ln;~Ic)mGhAG#FqX&_M^SH^KDK`H=?;v -zRP1%bNJ_<#i?H+Zn!K6>jlQ9X_vd#>ocIBGy}xWx_mz`ZV=H<+0!D!&t>}j;<8^~{ -zhg#X;IgVx-qN%NW7pH;nJyp;p4@J5js}%JQZ|=5`4Z5!u{tq>Iuk5j!Z$cTVRJL0! -zCI|*#6Hscm5?*zF+se=muL;vBuW|hCp6MLo8XZK|^k9qD>C*w4d#`WaVcfk}rsDnZ -zU7q)7#k=fXk@q0%0pN3t>K*kg<38`lS;c)_rUZRwu)&4a>wT0`qiEwaM2}sVv#oo} -z0HngV*cIkaE3Ev`5xW~Aq^oiAWTaa8`7>b4j|MG}Kwi}=k3Pd$m^OsB^OPaT*cSw2 -z|lI5AX50~?XY+| -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 -zuEN*)^R3Kl=b3R+sH-6HQ;P>V()XK(oJP;; -zGQV~>L3m{IJ@^pcazZ}%Kd>Q=Ht4`l)*bb4J&uWM{uJ-k&yo<}H##GHI1gfa2&eK@X+v!1VH8~sd*V6bOR`-2^e$$-CD|< -zwtF$ei-S<+4^mQh%KKz5BF&QtUPwvXfifj?pKnDcfTmJ?^Nkc;f>#HbJuo(7sdc*R -zgHSu;p582-VBpl3>Rl(;q2FmLezg;|_~Wa4;K~&uJ=9`_(2~TRc6hv!iz~i#AsmoC -zy)R$oQsz~`;Dj0K8^77+T7<`eH}hY^W~FNWQzUIwFTnfe?JoR5!P$(&;fZWKqS%v# -zuZKf(PpwnNSz|!EXWz?T^44sC-&XF% -z2{8}galaSH?PLhnMbP%11jXI%DQ*9z{#4?p -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 -zJlny{l%_e?H&`xv&V?S1)f -zXwx!_D}#J@+@smTlAc?>e>6)W+I}s{a=;|?%`ocBpg&PH@$Yu(O8wWOFhR&We_9FvqPFyv8dOPJiCg~RIgx~G_bJq7@$AQ -z9t&^xSf2x`V_X*^r3Tjpi*!aEZg5=y=I=(O_;pv<>?-hr~Ut**uTO2HPcUC#J#GT*dQk$k(T2%_W`cY{PkK4sXw4{FQ&!ad-pC+4W7@ -z|NqSI)>K}3+qthPgHxb5k0HC8(DQ%BZ;}6=b6+FU(|M5px5)3yP3*(Zd4sw^nICLW -zzCg#kmfBM`SUc+9$Q})T7o)S-u;f>0k48v8jO;sZG+VIxB1cgNcc#Zh^vXc~dn&9C -zg|1c_jX)>wLXT%%Fq$pYZpTk5C5_Hx`9d1!#SHn!@BYwJGO -zrDptt=%ubpA^ySpMtm3iI|%iMD1QO|ecwX;{a>|Ll15I%`Y<8FTVVoGc_H~}r^|mJ -z&%Yi-NXsAPhsyuI$?tBVF21Z(IiBB}>E0X> -zhza9gb*sU__Wwj9f~=&b=x5Q(@B4wYi@rGHP?3dFX=aX^YNYvD8mL-T*(qPO^Q9mwWu1N -z=-0HTP}gw%0sY0U;W}dj=M_gagHAo0=U&f63VLVc%j_(D`OAW{u(;ali*AO%y}iv) -zjl1dF%JzVzkxQM`J*m92%0G`6(rXs5m_?MP^7fgh47H+UZDO>fu}KtEOe)fZ-t$?_ -zO85vB=BHudlcc`lW{_l`E>=8Oi`?Y^KaCu$AILvJ%O6OQ`8^9)pv0`lPs^Puht~m; -z+4Oy8GeABQnm#OiCe*jS86= -z+7vM9N_3YGZ9=#43UrSHx_#bc{d|DbL3O|2WtyLHJ7#p?D<~dcc?w&-;!DfZGs4!l -z^b1?_@N9)x&(7fM+0LuwQ{`K5$(tY2SedP>U;X`t56cG?_oEILI)RgxTIareqj|wX -zMiaW^8dIDS!M^t<%&{~ZuW#+$i7(x6lv$YlDxlGqq6T{st7j6UCH@*R5L73sayCwa@VW -z^+DdhemOX`QT{RziT&FT#>k`4zdzU*>|n$Dw?FA$FP%F=D1SEiTo-#vPa+p!SlR)J -zmQVW<(RrUE|R2KDKJQDA|y1b#XuIrG(#)=qqW=Ksu| -zjU#@kShp}*e04Ikp8>e`gjcWM4IH~YaFYo23QaG2qw##av4)P+qmQ@KzQe7EqcITN -z$M5TlrejWN&Z`A?g`iCwh`z3L`z;?J{}?D5y7{wV)i>zmV+@y%y{U~s`%B2j|2lrS -zDD1DJXdMS4YQp7lCeQDD6MGNrg|7cwe!#v&dGEQS9IfJd3lHcU*O4OvE|H5Ph=0)# -ztceIpr0`)fK*%G%Bl1CLO=Z^JuKvtiafsTgBL7rG8*FHUSnAn;VOX_UXFm=j`!Tyg -zozMs-JlT(6zi%3hqyDO`LHn^z*S@v}?Z-MQ&(@&*Scm*O0PPFy#~%$Rhh<{>lB_rv -zogx%NtZ%o0c63PA_S8DWc*dk;S7IB836uZ+-2OR?n+pq&KvL+)vC>C-~Z^o5K)$1ao8EHPHC(j*Z%sm -zn+HgK_l4F@E8Vr4X?Au#TR(s-gMIE@#-{5(pSdqal-=Pf>(XJ4Gef<%@oaXN>jyY} -zfn<4XaJ7kSsK4K)voO33Z-C}@&=xw+VR`fHk)YE%06o>&T{^fg8l;G57ZBP(>}WtF -zv`uh)GbD=F^d{Oe^mCWz@SF{SHat#QV8kQ&^+uTjJ$ASo`pq(FqOE%0eIqy=Al&~3 -z6R1Xap15-9O6niTQ`g_&<93R{f7>fx5g~EFLcf1dOTKEVaQRU^4zzmhyYQ-*Gv?<) -z$}-bHUmVt-8HTuWTcz?*h^*>j65fMaKF^2Mzw~MVEWd0(r+{CSby2;ZNkKy_4+}B! -zGw4XX1hoxa>Bt|ngXnoNeB -z=P%#rdY!Xj&cn*mG6-+?VvGT|8XlIe6{qL%)%O`>Ms9cMZI&+UU-QDVmOsU;5u3=G -z9N2hwOc8=lM&<_}!>e+Q`+P*%4T=|mU1g?5=8STc87@ajtwzY#WGp~h%r9=LZdFky -zr46R`e0GyTx@w^BRa_~%rh0HAp0VzrJc|gbj8Td{k@~Qq0!F*83kD}tmxEGZb+zI7 -zZ8MsfA9u+r@8Bz1)jg?HIF#vz7VpRu14mbOt>F}|gVg&H5etVO7u+6%n*e<~@n|ZQ -z8ms0T+C(%v*;SU(80Ab*yz8j+5zbDEckC3}{3)t)ak7?})e=R3I;}2EFB8HE2lSVbNd8Kg&nX*1MeT<@V@&cqQg>NF5tvkOP4}?nd}= -zCW78i^X!}vsSawCvv(V-BLaIwm`5UWz-oLkXm_46?w!tpPEi}cD -zjpdO~XBwnV@*X7kb6*3blrJE`8Nk)jWAbU-;I6orO-Am%ZiKfqv*+g4I7-?&894@0 -zK!+L7AM*~g2mNsdIx2X3Ck*3O;-TKMG=tm#1&9TGik4t$jOT1EF>A-1pZ$l7)ZBV0 -z?k8VE|40vUVBD -z`IF{pG*=Yj0SAcNE-s$e^%v`Dpt>#Fnu(9`_?V5?bD*niTvX}x2lJuT=8B!>igZvQ -z8R+EDJ);#GIQ4XOHlCMpH&`HVoR@0oX0BLBG4W;(`hArz4Ut#zF)}pNN<4bI`L5K) -znrdS|FrzwTCQ8=||G~S)(5)WV!?S8Jsm-(E7tM86H1N$oRII@1_v0Y#4xD8=1ND;`Wv;-PmQ0J;vl0px_`1n{-iAcy -z6S~p;Ffn*WTfuh}igE4>%&hf9^hD{(V4&y1(!)Rqzq|WD@~!6D!F2e=32*6JfiaNb -zP)G!t&UsMb>=`B4M5+zvBPso0OuredR(!b~lW#VA&O_mb26AbKkqHan!-#PDv9Pf_ -ztJ@6Cj5IIWRI$r>5{6Pg29n&{B3yF}xNiQRz>k(Msk011cB)4iKny(RadS+UCQN^_ -z4|R5*`p1iJFh4oIy&Nx+7Yr9x_enuCoJZ*1%*W8$RK%y;qOTp2pdI -z#G=SnH9Lz5=dHeq+h|tOWC#dz0q-F7Nf_(%Pq^6FXqF$mNbbSOlZw2#M+0(x6aswV -z?{|@|cj@B4Z~-8@vUJef)9%#mry;G0J!h=qwvkd5vLf&CO-R5EYy9@9V#Ie^9ceP) -z1WoC7oNWoTuE8JF;pVwQl%NqP4@ -zba~rBaeewI{L+~<^moCBmP+|78#fm%%2=8Nh*mxwrzYr0!v7_R}fMSdV^%bodcRLVj$nRn3dI!<@iUqRd -z6s-_i?b%%}Wa3zohe@gDylNr(7aG5XtQ?q<3W6@1C8`>)n}Y -z%z0zr*6{Hxkg%4Hx?*xA8jL_`H%2ZCMg~5jo+b&0f%wj8!U4*-vbRTz8JQa1@}9szb}B#=R81a?ezf=-HQpB -zaTiyw)Wbp_;yx|DWa4|D*eA_4ZycJC{)Kte7ql4m^t!`>3;@TXwL_P_Ys>NW -zSX?|%ToPsxle#kypIvGW1m!`4J|us5_d_Btg7X($={_f} -z0Wm|Z=|1x)U*G@$8s$@gE<;cd1cPz1+`Mr!&foe{ftuh%Wee>I$ob|$9Fc(JHcH)5 -zgz{>HhjFZBJI~RC9>$$N1R~_iST^2bg7j+L`Ll>=EYJ{1iZIH&abQCFK6!`pWVn3j -z=SP5mMIi$El9f~dM1ERn -zJT11NwVyJpCBxwCrQU6n+bMWAISw7f0d8LwN_t!U;fSm1X^&$s<(kwwc~gyiApMhB -zNlNdw?mDA-pCSFGvJ+~16(y|4CdEw0p~o72$GJX3J?YLK3|$I$c^xgq#?XXBIDd5V -zpL$rS8jg;7#reZXD9u>qo@ixY3<)_5i_@Hbyw*JZ9+UH!d?fX3n7;l60D8~5R(Z^* -zba_TCHK4?0ba__#J{@mD4>;cj!@whRvw^N*j_4t5nP8D)>u5i9Z#9!2CIe|af|lV> -zBVOo<(=p2vC_O>{xDlX1Zp)~Jq-bs9g9K8pz2%{(_tNB{(SzkjVyNdT$MVT-ojtvLWB^Y=~GrtlA -zFKJds;EHiVn0$eVnl}!>%M#2LxM2rvu`v2l4^#Ua7$fg?o<-=C -z*re|eQw^j)p{4%>(hrW#7!ob@Qt*NZ-gVN26(8PAI-$K-*G1#|UgX|*yu=tiD$agJ -z83OFD@zl{w&+Oh>{oG|#qCZsbGiF4;NB1vk$;V>yn=tth)6n#7Wd{Mxu=KrUwf+$( -zK|1s)xe_DTOAzytr^PSed+40nIiruEiytA!BOXT;v!n^H9+&n9r90%-exU`{^@wJ*@o}T -zR~MW_$Ed&fy0NB;z>K%*2|{$^5zwddXYwZiMYAsTR?P-6SKt61`;ydnQL^Rual5vG -z#e`YU4q66RX;8BXilRmL_cg}M<|fn7Xa!Y|G!PhYYt!|XpOs{=U#?Sz7`4&Vi&m74 -z8Q;lC@*U7$cEh+c-Jxn`!&qE0A@*;(^J(R;x^q)iTW}xHr2l?yeGN^*^+w?FL?qY~ -zvG@@Nh~vz)w<}YPcz8nIC!g-IBW;)S#`Gtmow1}0QTd53EP+UpqUkhwyr*vVjzCw> -zVN{pW4GQ;&ik*eOI~^m9H3&fq_U2dc4^?|(4PD=yqLV*OJ`7mmVRW$NY#bMrlW{^+ -z4sEaORzu)mvfmgC^$3RIMX0&ILOp-RW8Xq|*L276BKeb96Q`HtSoolNt{csmZm34n -z`#*N09)vanyD$wNVG9c0Gau5`)4m_$gn*1kkj>gIuX=o&U<5lTR()&L0vc&|(9%8x -zX?619QxZHUoDJLC(pws0{a%;1F^&s8bn&sF{5t>+yw3>hE>EN3%WfpfV%{h#jzn2q -zO!+s4@;|gLEdMX?LMF(cTBV#4G8gl7{S|ug7^v3d%tvty*C%M7nnrkb&iPFlWZWEn -zzd>!{e5(KWmg>J7uk`blpnj-Kov&4J;{5OmZqZ&Fuc=2(Q@sB#mFB)J@@e^y@AO4+ -zX?l=tM?Yw6G}pEYqyP5QonW{|Dx-~Q2Klt}XL+9I*u190iI(LH*^*+eO;wh>`{+F0 -zGDOQ82$j=Yc>BBC}P8#*A?=oeN;e0bw_jU -zMP<#pV~UOnao(6H84Z-QllS##NIL{{6g8y-n)b~a9cb@Q2Re2K9s{W>v$mJ=)dlFp -zRroL1p+N5?^-4eO{8hO|HYxmE%57b7YaF%agsxn7S-O&vNU4rhy_jC13)g|u!;NVj -z<$CAO=Gx8jJg-J`Q=KC8dAK}%r(98=tiCCzPhPu;i`Gjwh4cwckCSM97Yv;ahE9l( -zTKSt2Tx2HCD!Xpf&3I*p%iqIVBb|U5Zo{#HzIS>IZ^eQJy7eZ}K+|s0H_#-zJS+Gq5Y+UI8FzigkXa>e#(yOA^T!5c&E^T{B?ROLTtpF#fgzp*9$ -z+_Q%B=hYhpe`0Uc^QY`a!JpnrIDa~>`Cs|-X7!))C%B*B0rlPK)nq=#g!SjA=-5_U -z&rWqj8Z_Z|eDxLieY!K}x4(0U-#w}|e#ck;H~ik)xg~yo -z^B(7SpDu#muXon-JGzVD_s4QLzgNEZzw&#q{9nrB)$$ejv%eGP&(2OE{}AxZ&_Y@w`7mEYzAkxQkcuJUK!fokd4zN`>`N1XKOPX;MF% -z?rM!uJuyR>c14awyCTP^yCUa>j-h@$vr|*!^{;qS78nb!brRLlv6J2uoz;m~$BV10 -z!u#(|tN*C~Ry40*STepd7YolPU(FqxoiF6_Gg4zt-LN2Y@UCdjbHjt2p&i;DX}I7F -zIv#<{9#zzjhY?$lCFoX~l5fxLPdFX27*XlALN>$AB5tgh#&GJ~mn$2*Ycsxj(|9kX$L89DzeU{FS9 -zEB6l<_ZG+C6~td1Ar{|s(2K>88-!StSCUvOm%}=8S+Zu?Fk6`H`QD<%29Dv^-z@_LQaA$e5d2Kd{SbH@y!Em&C -zoVBxg?QX;Q)VlKXXK+)87k#`zo}F-JQLXgd859JDs`u~hNm;bdG&p0nRV3l(Wcc;p -z$(2ZNoZ2S=Y?g8&q;y@RWc@_4ev~Y=QGMxKH?Hw~3mPWUlxf=cqE6x#En0X?M>g -zqm=xkJ>QC`dg2BMIR}yb`8p;%02Fh0-%5VxbQh}IhG?@_!R_Imr$>keiE1G;#Epj# -z!MI?fp|}CpVTxcjAVO8aY)m4XLG5t>Y;-qVW%l-<9O4IrH9x|1_S&YH`UNr7idNTf -z9UW^WT8~EPY1LzTk1*ZRLLLjRZC--e&GOxLt!Vsr(rzuvvkm1rHR4Ltr!~Xk5?IU? -zeJItyL4vEEC+CJs+4^g#8u*!ik32WDkMtq@LNO#z9#w>(gZoRMG#obR3b2G3MYc{= -zG3PLQ(%`N)4#*-&Jfo4|pT&2>SmX+kAOsI;^qF=jERE)h5qPM3r@J9aYVB^g+Id}S -zBMi;j`xA8j4XU!E69&qAG1&y3Oo}dVY{aXJ&zEk^tJ#*FnZR%hSOocH(A>%zyQ37J -zXh#l_zLX-j0sNOZ|5QEDFtBRVsgqPJXbr1Tc*eX@mrRZpT;9Wcav -zim;jIr#I4W8f*D^NW#pO*P*}82IxyIxPD)bK0mWAT}Gv1hG6*yjg8JUJaUcI^>YlL -zkTF-B!2OxTa;$*2Fn$BRapt=i8SqvPkq2fv1!#GGxY7SEB;E%6Vg6Q)7_uf1d*fqx -zo76_6)IDIscbd_9DBsd6Xi(Lfo9+h+ZYLfKY`D{4UfWlxsC{rYV_C=`=grF6duCIQ -z+NJ&nlX-1q2P+F%UpryMCE<)$KWTc4moCaAMZ-*lz3Ys3(SO%xOpw>nD}V^2#=j@V9?_R#=%EC -zke_u*d~EwsEBXi$8R!om@wj|egZS9$BP0K4VSzY#fB831VT=|t%FiR9bCmnI;iJ|Z -zhCz|cYj2Q0FaMz~2-b)sId882rj7e}|HxhLZ4qwJ^QQD4<#VMm&^evMVp0*)ON!0YD9sg)nPh0(wMT-b6DyhXbs;|b|R&&G$zGq%k1|DlR}Zc3S6%{ -zFNRJZ+WL!t11USJb}QL@mxxx9@e$-9GlogMD-Ju`Yjd<9_@l5v-t;Q8kZkMqx+GW_ -za)W$p1fR9yotbO_g)GoZ+rPGUXZ4~n -z1|ZkG@kG_wUZ(1KW3Yv)_ZiF^Kdl@$#>`;AG#ZDzg%wA -ztxxzLhWGIEb}BbbOoAyi&8uF`_i%*UN8;d3E|hctjE*y*IvKP6PyszHZ -zwf;hD!zQKTnUC*BSF$s@XqGh^xZ1L|S~({k+DivAe6jvCzX6rc#dAG0iEFrQsy?ya -zcrlt!wSlKm1RJziaznvS~Un -zR^V%o_%g1LzkmyMD6#ot5uM*tfV-meFAC;`uV8i&e`$$-R{?135=CASp -zqie$X-!7^Jel@@Uds`&a?)_FOr>1doMlzAKALwj3d!_L3>75LcPfAw`b`lhggU>1N~Roq## -zt19~N;EU$x%+bjo7{4jbIBiqRmv}bTL4mX_9Z1rs;IOze^v#3wVaDE|@Vh8C> -z?7MkflFG#v)j$_+bS&1Tya~%*X6-V)4LoC~&p}%5g_y44LOCU=$u-osLwxvKJz8B;(76jpxxQHUmP5sN9=Nzly5SklFxjCbhbjDicpHuwmijX?8wV~ -ze`y;$uO3=o#X+kDh_#|EcKu~O5|^?u`7lP5Kxir=Y6zq#Rk!0Yf=IOnulteFn5p@e -zhfJz#>TMybu3KBK*Z3N2_#J9-v*G< -zV|u8?9BQ0-+t4X1;NfHlsqPM4xFrAHrlt9RZG92CV4&_nXwJQvG!fy~|BgLB_VWBd -z16G!gn2n+6He~yish&Qf&0ya1+K{h6=q#kWwYXeJ8@N;PeA|ah0Z`;-Eu5>&61o|fWkDw#q`!KdlINHL!X~wGn*s#}^*&0t{W$3onG}*7m -z_XDWjgTkqq>h08zS4U4gSmV8UI)B5nG$drgL*iS;;8$UY8Co+I+98n5_frCRYk#>B -zFOzG!{{SlIZoT|Z2T!&v)PfN -zHJcZbLxg1_VTa`}fHZezBq!~7tCrT^L-S*DRgRO!S|+(_5`>!H-#Q)J1lb8?&m -zT9I12My(6_(6{(DrO1cTdZ$#jfkoXep>M!VHea9kjY6#z`N7r8; -zQ={$2!!~XULDlY#-X5LNI*Tgg|Wq -z5vXp0Yb3P3gd4Klv%vspO?fMHV&^mt`S~i+_XbXt|44IxfC_gkVU!1&sQoImKiJgd -zd_gMuR8Iie=!;u#;li%&a!)yX3E>o6t^B{$|837$kTsuj-|c -zr(wD&w6(Iu^>3VFR0f%p(ipU%)#x;675&sM{S1edK}L0o(fv3S4~H(X$i@EHj_c)7 -zd{g>k!bXYJx{zLY4B#e6B_9j~kF(tymL?0zlcF*Akr-vDNf|}T1veUob~7G_&#h*g -zG6JuB#0MbCNktfA*3 -zdOkomp3CX^Iz3m>^Idwbq31e!uBT@mJ-5(v2R%Qg=RSJ=i=JQ5^DBBDqvyBu -z^wIMtdY+=^uk>u7=kN4nariXS(?ri`ddASRJw0RT*@d1KdRpn3K+j(EOrd9QdZy7c -zlb!?UnN82(^c+dgyXiTWo)6G-96cY6!?}jZSONa~JK}W5WUL1Noji<{;qS-8SS9{j -zc^E6ke=`qb_4qsSFjkWP8Xm@~@<;G6R+#^6EQPV!{6F$AR-XTB9>yy4f6BvHk^XHw -zjMeG?Cl6z#`rqbZtXluyc^E6${|pafHT$c17%SU9n}@N={iQsN74OgEVXS`tLp+Q^ -z;2+JyC<^{TJd6V2znzCsEd00dFbaqNCLTr+@n6fsC@B6mJdEPvzi};( -z^aFFcHb>;ImIQGES}co>D)zlVoWl>M7{7zNtDmWNTS{crFv3b+3y9!3%O -zFXUkqbbloeqqzGY=V26je-RI(==&!^IH|xPu_T+L5FUjyScz?V5$m3pUtqVeDAv8C -z)HbQmX33FC3vwpgN-Zff;!|#&5v9eK*m9;?;vK0fy2&n?Rhq5fs~YAl*6V^WW(*YTzjbnA^TeRzxcF*T+76nlHC!-1{der -z!#;+8&bCRmKlpsF1cW9}w%baAK%vhW7FKARkz{c?Y?JJke22wZG_|OBdQmS+uG4Oj -ziY=w~9A~K`zqlxh*&R}Tp-r;qT0%*(;sH~Ry`aEhNr=~w_K0F*izQnDB!0}9UurM3 -z7fFu3dYYo*b1g$kON&e69Z6Bl!6@Qyw$h^fqDd4Lm0et9hu_SSL$uharo|hGevXWbzlQhFo5NDBQme{l6 -zB>N008Q&=xe6%=oIA|o@4Y=!oI@s7-73PeR_CWk&V -zcfP?Ruh>ewo+T6 -zhz6?TT8IuZPDJMy5U#VE`$Jtd4!y2T+Rgud{`ksOlt -z%w%Y4@OyKCl)-MEgb%`<5c^6D@+PtSP(`D{$C#WPOD6Vhq;4z^YeA^F@s@{+OGsqL -zgC-fngMFh|uscZ{mfDlF#C5r)IL{(Ywp((k6S7aDkG7&*iX;it -z0vuO(&^C~EJ>cMndnPB2w?KR$^s`b>JzMgMOSRP0Q74G5G%G%*haN!= -z*RK|hDI|~bK4|ml4$DYrU`2_kdQ7<~JWx~&t+sGt -zF|>CJiYinFGO8DTD0LPkLg#3=x$^#DzLdQ1+?sX;1VOVbEfjnnHfrYAF -z4@nHqoe4z*41^U}6_)(AKT6)KSz4kAWuh?u@n*Ex1#2D98FH@XS?t)EiyDDGAHHDC -z!E0EhdIgxaRKfP@a-93}P~R7APW@ZBpKmm}Oz!zLyytDubMh85SLC7haH0xT+m)|gjX -zTu4nXzo?~hN+QMBfr9`7btBIz0rLX=0!->iydgiYM01FzM?KmXo3m*!6K++2Ua*XJ7IA^L8lexaE)*UT%c#N -zz#6b%#Uht9tH}}vU*as&^PypqwP1;ZpSUI|De$K$Q=o?yod}P%i4TRgnHJvB*a`|} -z0z0rE(1cK4IYdx=IT%QlBw>9EG@N+}aed=@V5_nfS%4!@8VB@B5Ss4gMg7wmo;)(j{`WG&DD)c~W8Bry3|QVA<%mdLB4m>`Dt -z-f{7T$?>_#@ee}Z9zVQqJlJ#h#zCi?J#g%h2@@bNcEl(QK-nBPro%?fXrPxw9-jNN=Qe8W%h2Sy?5+m~T?St_xKpcALE -z9MErM9H3PLot85=s${%|a#?OMv*TzJ#{tYfBVS@5E%*nmDwj%u!&smoO4ndIEq$Du&WIpn7s9GccGF)4hQ3@$oh54hC=VixV_j -z9?Jl$uSl{_0_KxYC9*_51_D9RA_{C1?FH})Is>#zB8$&qiP#`P?PHFKtN>Iy4!n4s -zCp_^m48ny`2eG_w;|+~hu&r-q_?9~X6Cf;0WH=+iw6e0Gwqartf|2#c -zoJF9*a#7c_oZ2K2X+(56Qbg3bZB3kLaQTY*GP -zJtGtyri~ny9B5eB-)W6{dTBAJauOg70ZWO@u!P1UEQLiPKaxsH^DPWMu@no7x_9hd -z_l|gIh=mOvlRX3@p{)(X-$-f-7$T{lS(bt%7%bqo3@dOZ3V)#~(r-ad0mP&A0J&iO -zSb9S|DY7IYCK40_#5jWAc&Ja5pemmNxf7F+xB}?&lN^FldJ#c{bcDYM?76w6BA#c; -z!xYUSpgomRE+CjZ7l%F>{?r -z>6ok!asUeEAlr&dw6752A05+eS|ry2STfK{(!_!&9zu#{0@;rtj;Kg#ECfU}fqntY -zGIC-uv|J>0inFl9!gA>uge?fx0WgY4ArlDzCKn{-P_b`~(%!J-{H;{?jRap~P@xlv -zbL8ev6QuyO7~z~K-e=@Yp2QL26EJan@GQp140_rhgGUiPi3@@uV8%N5FMXL*DpBf5 -z9K2YfM2H=_YS51qSwgQlRPR(D92Z7$-eL&Z1HbUhwR2GX<=-*n;9ro5MUUeXD%rxg -z7R|HaWE>9*gNoT0PLAbT5)+}-^sw}`#5*kUDYxbJweSz&QBi|+8qYQn3|xC|68p}w -zUMhY0nZ+9|@s%GP%{jM~E&MG1`MPfxNy#7QlwSIk{l2d5eaV|!d|=sEA6Y)jSEAT^ -zmi0yUY3r7Mcm#vC*C!P%Uh$ICwbnK_7{4%gLGG!;&-Jx@d+NmA^^eQNQ9MerzaZj@ -z$`dJi!PF7wM0S3ri{-TiD9^7RTh` -zLzN4mJNq8;+rmnUUw_rL+*S9U1%ci9o@yBAC`Ty%sReGS>bXiJ?%4)?42;WFd{=g+*K0$($d)29ke*A*px8*S5JUw&i^I -zBUsp9MgeLnXz?_;G(Xq1+g4IyuYfX0)9qE3l8UOeU=(g;(7k<$;~1BQWZ!Cd+k*A6 -ze^S2W{UFEwp?9hB!|&_1<>c3t3kJu1YX4_kU(4oCUF)l-+h%%GEx$7NbLR@(&$u>x -z>T+A~`<@efe`O06+CKW^@N-dY#n-$FH==R=Wgfs6K26LlkiBbtRn9`o=U?UmIaQO^ -zTIwi%9cBHgt8T4Je2#)VW>^G20mJ3|p9?PTdp>W~L7+a_vU2{e%X!rWi4$oi;h>8~ -z2A}8Hp5J?ZdPU`PIR!_bU!One$%TN2#&&Z*KfN9YW>VFziO#vetHVFra^_YY&i!$} -zqyEDvma}NtLR%$uNuL+kkKj9kyEgJy=@Z~=-pT1lnA_pZ`#dMVYHp#u@adURY|U|p -zeM!MO_Y0-Yoag69vEK@17@u(HU0A9gVJu+Ffw52&JN$Eg!D6yx=2Cgrx;~zfUkK$z -zTu*)KN{BD0q!G!BY~!WEMNi44s|rDJ*d`s=Tka}wZ()a@E3r*-eOyxVzw;6*9JvdnF99Fw5!#nsvlNqcgRy8>%n1;^(?fPb+Zyx71B4|z&XBY+nq -z7h|EY3qD)?-cBZ3`}4Watf1NfYAP0gx`i!Uf$io9Tk{@oJE*Oy7us^4`V6#Epa9fV -z0%#u4ZZEP8q#Wi3YJNT~)I{9Gg|?}CR>f_S+)n$R^~KJ)b(^FQ8rVwctU&hi@?K3bGT(+(Bp+Iopm~o!gb^Rg*l#STi6C{VMx(LkR)%y*Js#<07Nau&}P)mKb>6x -zoSKUz+#H|#BHIiUx_E=+5%!;@r;w>@UMT%Bfm9xF0yV?p7fRieUSuCgOD)&~c=w|8 -zetYUY3n)NfX|5A&+MH)xC~SL3Dz4toU4q8s&$QqlNZ!-rb-fUDX9xaf>NtD{omVQCNu= -zD27<_PY>i?g6?S7s^?yS+%~M=c*#*%4L$va{m<5vd+8gHQs8!BO`@t_1Nm+VRg1K1 -zxhw8r%lJJPp7!qjc*-hFwiTr<5ko(`Inx`+J5=x#7cyuOq#8u?NBv9S3%>ejF;v)( -z6PM;}VJ}q7ty?*8(TyXeXcs_0zu9T+E2V9V-^*$yGV7&8vJH5;mV8J+?BBM45RMt -z!m9Oa_Qt)U?0FAq3~&m%f95KA=G^zYp`xHe@l}`nG|}$KA%Tb93;G<8mW`JR%2y}Y -z@}zYrC?3g)`s(eXeKRbe+})P7E@-u@NXtdB!s_#di|-pdG%?Kr9g};~u2nftmpV(N -z#n1(jHeb2?02Vk7?UkZEiz+GbedbF}dq1cQ_okW`s^(G@+7AgEZni*cd~@cDT+rX! -zwQAW4Y=XZc&-YDrt=PBP=GAIFZ#EO+v -zMH9a)U%k;n)ns#S{0h4NgRV_^AY)QrOF8!A2M??#c8eat_T<`iybFiE{NRBK*Jq3K -zR;`>btTjYYzLSTsgU?$fVsi5xQ)zmdK@Y&l(r4Phh-m{SK7!>@nn{n7IgF1W7!E7w -zK_A3Ogyj^LIB0Q%1&4YpIR0X|Z~^1z9Q>nCWM4C3UDL0Fh9u1X7{hT40Z{&1I6PtbxigSz?Kf#6F4N#2B`0&A2@9Wo9gL3%*c8AuWfDCQ!`8;$Y+kK`a2DCIv6`XQFXs1pB*7>(W;j`Wx|++)Nw&NLX{vEZnY1xJ$*!f&O) -z_);xilRbwfdc<|kbR1UF0|<0z%+bc{%n@QvXh6>#loQP#IV4)CW!mta2lAOVvS(tv -zAN(XR&@=%9mBYmNm1(0(1&)6ijB**y6EJPEfN2v5 -zJm6r9K3KwDUGy4L@K;!>h0KnhCz#FfffIt8P0p@@1`0p -z&>0LJgTQZ)8)gQ1VOEe6W(4^xX9pJj$_^;-xAa%`34}j^@Fx)71K~Xo{;KZZ4eX60 -zUw31NF|-szUt!dCjKUZUd{y`V+B+NQsH(f&?-PPXMI9A2D(ax1LHQUEHBz)wrJ7n= -zrxtBgbTY|Il7abhW&**Y9X<_$Fh$g8ql^_bRn(}c(PEt{YOG*`qD70ZvBio?+xS({ -zQhlHQ-p@%k)c3u2t^3}!?z)Rv{PTOBefHUBpL6y(XYWZkyX$kE?cL9jPxMNyw{$(I -zv%dSF`lHB|TB6LSkoiqr=2OV}rj&`K7bHniL`a!B8_U!gO_@5YDN|>L{PQ2WRU2x8 -zwcD`rZ*I{3-33sR0$m -zE5VK6hXoK-eGd&1OYTJy8ld_>eblMGTA)6{6*p9U`)k7IYZ?J@C24Ts#f1~ -z1De2#$g)h`#XP8=_P?k9YQa}a)mQUR9==39`W$ZTud7FKcVD2Uy{-~SNEjD;bto1# -zysl!BsbN!kfoj8e>zAR#=LFb< -zF7uyt3pT96&xh0o`SH)~3tofW{*Zc2ete;qej!Wc#}|6(7qV1-tel5Kg421!Dz(1f -z<;CV7QXiTnA2LZVRv)UBi-hZ!$=$9&|30s&z8=q|F`;;KJQ)t^U-M_jsB7KfGx2WHm;fOk*;USpArI2t5mLdQ@`?HHbBjLU@(@>Ma(@M#3X@FEMC-quf_; -z-(vZlb|ewrb@@oISw2GPUzfX^?^`L-tbgGd3`f%yx;yi4`74-URvi8Bt8#n0uHBal -z50?an6D(z<{*7udJ3<~h|6ckopJ9H(-fwHPJWGEG+4F5HbMAi;|JxsDxA>;d*I(}% -zl5Yr?*_6MH_6$;LyfQKRBU7Si`R~1hu%_pmw&LkoR)*LmZBmIE;zx;92+)rhj3^a9 -zxdcb6L|urOj0hmA5ap6TP@-zUETS0^hOasS>p{;38{vEAIVuKrBfOF>>rKHrSUyp7 -zHS&R#h!~<3>61Voq78aJq8Tv@u>_GrOu@22i1COVq6KLqW&4OOXmx3c%7ZHq)kyOo -z$`Df#Ly%ShrVzyzN2L&+`Hu4E995j-s9uD3uA^$e0@6~5JaqTZ;IS_?2rr^%uDr?v -zX-Mw@y~s0P_6MJij~%rZ(S_KA=s|2p>_C)$g6$!OASw{!5q`vEL^UFeNFin;S`aG` -z1;lDZCt@9<8?gnk4e_bGN#s*U4MLP7h9P{2iHIu16hsXohG<62N8}N0h<3ypL=mwb -zu^F)y(TmuLDErJ&gArcDNJJ%K5+Z<@ifBY+5jn&XL@Q#|XU;BdU5<(T_x$7HXvA2=sfY=Pvk>1wOhTN8I3MxMKOOZPq6_g7;s;0zAf_PJ!at2T`%6dt1pZRQ -z<%lq18X}3f9m})e)rbX%>k)axjfh(jD-m}h?n87S9zi^b_zmI(#LI}+5L*y`LTp3) -z9q}1rC!%B^+7-fsC`TNFH~}#daSGy0L>1x!#6^fp5VeR#L<%t*F^{nTaU)_G>U=l& -z0AfF0zJtj9!2_rd1U-m}&}Z>7o=sjsoG9D!|5a5r2gZ% -z5S~6^Z^mo>fOo;1;hE!>Tz_0sA`?v{(~();5D?17Tf&jW-b^;KFkU-i-x=4XL(A%Z -zKG(anzR;AZjU{6tZzg}|EzyPZSKjEo{oc&1rkfvVYw&j5-SFVN`{zHBZHzQ8@01j6(1*>X5_MqvisKG_~)AzoKG#Aw=|QTH}qS>7KW2IrhbvQIeA;% -z?aNzJL!0l2{PLDNSKPE{!RWfHBJJs0@sNsKc|+lpp}7YdhAvpu*irXz^CPQ=PW#pU -zcilQPc2CoNnFpWzbzA54PbAmYJ{=8b8ZxopHb1r?J@oFoelu^;())&ne)p^7;u}`p -zu=u9v(B=0;GOuLP*%ddeUhvdn?~?ID*WJ7F@p~VCp%_~idj8p0M|VH7scUoU?a{R} -zBDZW!{w2O``Lgw`b@`Pyg>HPQt!L=UyPtXV*+*Yo^QY(AUdp}khj+q}zx_R$$jsdN -z<*oPp7muX>9b`v2N_l)O#kzkDA4PkhGwUo3miXU}KP=l|``lWQN+ -zvlJeVXZA}2&<6w`+^a-Agm?t;DB`Dx(?55%A=V<+Azntjfp`z`1>zu2i8={Ui8vckhqw~4 -z2yr9g9>hb4=MjHEyp8xAG4P-gbs%B{Vj?1dh$9vwZbaOHcoOjf;#I^Oh#iQ74=zzB -zBE}=mM>HblAleWQBL0B*9I@{qCF)2-1>!8kj}g-mKSSgZs}R3NtVg_t_!x1(VDvE& -z=OV(0YYM=OHdd)F2Xw -zzwV3v?7n7QFXCjxIf#o9al|adO^9|x5%CIQ8{#9xUW2gzh@%iEAkIaE5DO8vBOXU| -zBi=>)4WUqvLlNT2+UaJ&jM#!%jI3V((iVcj|H#c^4tTC8VAm^)|byT=I?pXQS!dFCD!s8 -z;0mjJ`P_17N#Fj;f1bbHTD~9HzFYo>t^8^5aclXN;IFOiWx;1Hp8{XBdt76h%UUk)UO1cH^RT1GBwppH(T46H+kG<z%gfXf0}t=_GLyOI@c#M?1&^@2ycpv+EB{5( -zo~-3H;K`O>2#&G5OjUD=(gM -z>xl2R{CB|Bmj5o;VU<4#eA4n~gX^sP^7^JOYx%k0E0&k<54KqOF9+YXyi5!FH_J!B -zPb^;reqs4)@GGl)c`L`j@_v5^c!1>(0}r?Sq0+uAe-1dRyubXB;5ci!d@9TP@Bi|8 -zN58fFaPWK9`UipmYx%+8C6R^c$?*~lJ;P&FJEpyWO;e@<71ZpKKQid+ -zE|vCSEx!c(qvfZ9Tdn*bLjN5h_mxk;&#C_@=i~^ZOTm4p_Xj=Hhk)hOL%?IHj{{Gn -zJ_#H{eF|7fJrVp4^>@MZsecGgK}f&hVsI+;6=0aU9-PknNia*@3|>t=2V6*f9k`78 -z2C$X74ZMT;F7RIJ2f#UJq`hehqvBA@}+%U=Q`5!S|>?0RKk)(GljD -zi~j5gbDTwg!DA)*Uq_g8A=)|89DmURk2J?n^gc(LV=j9CBh4`veGv3v2)TBT0=?A3 -z!4cG>!Ew~5gJ&Y-+B*mQ9`yy_6zWUCAaw+sMx6w+)U&{=spoVP4 -z`Zn-R>UQt}>PNuGxvjNek$N52MZF&EKFZubUkBf0`rF{2sow>+QGW=2M7;z2ntI?6 -zY;%awgTTSmL%?CwBf+slOx;cgCougia1!--mj1q#=R)u&)R%!l>IgWEIsvAsXM$Hz -zUjxpeUI;Ftz8=g|uK;hM{snjk_1)lV*15ydkAlCZe%jLOz~527Z0T3QH>lsT^q;`L -zQul&8snyXYUFxv+(I#E=fzXE@ZS>*b(bV>58OE$PBJS9?MD6+P`Rw`Z`Rw`Z`Rw`Z -z`Rw`Z`Rw`Z`Rw`Z`Rw`Z`Rw`Z`Rw`p|M~HKq<_C$dKx*AJe#Z{e@IRtFC}ZpdNM|) -z$!78zaz1$-nI~@|+sI#%?c@XG8uCf9NIp-lCto2qlm9_(B|jj0$$yYL$&!x^%g6)B -z!Q_#ompp+SNsc2c$+O5w26g3OXvkvVc9xrAI!wvxA#tH^uFhsdYM -z7s=PicgVkzUyuVoF+7MonjAr%N`8m@0eJ}-A+IE_CKr)6l6R2zlTVP(ksHak$oI+5 -zNas_-{mCQ9;pABIO!9l=MP!JKle5SL&aWlyGWT%VSuzVGDfDzEZI!XCUfL`vV~ki=E)UgE7?XC -z$W>%Jxti=C*N~m$TCzy4BfH4;WH-5q+)QpEd&sTiHgY@JOMXi3Aa{~7Wr47iEF%Yz -z9&#{QP7Wcx=97+1f@nj`Ak@S<3$SQI&86c;S)#OyNh72F4e@|bUI!^!Ivb6np -z{kx*lRb+u|BU{N8WS(3?wvhA5966h8CbMLUjFF9Gn5-eElGWrCGC)oytH?>DpPWcm -zlH*AqIg+d(hml@#2w6@JCOzaJvWzSx6}j^`!yV+OWG}g$+(vFCd&n*1W^xnRO|B=q -z$aQ3qTuXM6Yse0AHQ7$CA`4_2*-EY;^W+k;g`7|3$k}8wS$Z;$54rOso!d$!X`ay;oHN0JrfFw#p7A -z4cS4iCfmtXWPxlWTgeq(N)y`{^s`ee@OdUixx+4}BTEqTg{U+t;baZ=>&_-%Q_4-$h@f@1*ab -zZ>KNNx6AUEQ^quq_^zHNo`d0cpeG7e#zL`En-$-9WUrisNucG(USJM0FE9kxS<@6r< -zGI~Y7;}q`yDcpbh9{SDn-Sl1bMfy(q4*GWb0(~oep1y@XN8e1JqHm -z=_~1d^cD18`f_>?eHp!?-!YE+KaTrP-$TEdzMH;_zDVCm-$CC_U!ZTL&(pWi=jfa1 -zQ}m7WHT2c=0s1O>KYb;=kG_K5OJ7d!p)aFX^gG6K|HpFw>3irm(|6N%(HH4E={xA# -z=?nC&^m+Og`W$^TeTu%3zJ|VGSk0^f~%w`V@U5eGPpzeSp4--cMgi@1w7v_tKZsd+5vP -z75$De-2XA$fBGK!⋙$UGzozPWle|cKQN+D}A26g+52$OrN4}q_3f`rVr3p(fjEu -z>3#GS^j`XMdJlaWy`tYSn)^SR`%m9PznQ+9zKgy{-$~y=-%ekkZ>7)Ex6tS4o9R>Z -zjr2A2)${@SDtbSCCB2Wng5FDCPVb>FqgV7h*x%?K#r>!6q2Em3O~3V9TuyE#H<9bf -zF0x3jCD)K0WIMTvY$IFAJh_CNPv*#GGE2tDMzV&SN=_jIWEDAyoJdxZK5`^EjP#P_ -zy=LEw~$zF0Bxs}{PZYI0Q_2fFTNOqEI$kk*!Ss>fU6=a@lA?K5`$!0P| -z#>g;PLspYh$jM|C=_e+I`6SlS|0?WR7emvt*2H -zBx}g2hMRGuch9C)bfh -zvXfjxt|r^b0@+5cAoFAkIiH+OHj^nbMuy26vYMPiPA02JKRJ;cPx{CTau_*;EGIqW -zAhMKH>yW@tH=V`O0FQ6kS%16oK0rQ6xm3I -z-EsLuwiiA(cDT>M@?k>?wW-{I!ocEyoD=A93In>GVrj3_QCchwbUXfnQ*?Su^80j` -zbeHt*)8XkZ%R9M};xUDRJ*CCHeZ>KJr?7Vq9-K(tKR2MKw0l4RIHQ!wE6oq|_;Zf01M74+K3})fGr(VzjiQVaf6stiiMQ7&IQe}%9)F>v`@rHr -ze{oR9UVeXJK<@y*{^UmGjxFq0lk%s$fxOc_z*m#PhEaew@ARUo-A;{^SCYrZ1Abr6 -z0AHXc5Wt?L3fQ906A1Wxe*E*}2R_JSWUe$<8VKa~uE{(3vw9qlujurYbd+FE_5S;@ -zv5o=$jstvtIXpSX>q&V6K2O1c&pQEMjTiMUK}j{(Jrvu6{m41pCBB***o!=<5ei3j -zL=;N$C52L7O?OGLtR{yI6&;VqD^>J(eCCH1eoyy+RF5OusPW+BI9`8Ejo;&`QRZEM -z$2jJFfJae}haOEGfSy2|I#cQYe=P42>w&(Ey5`$T|37y9ezCKaekXwBFP@|H`x!+0 -zCn>d@IuBiN)4!|KebhbYDz%on<2P+eabd{SQ`p49{gB^7lwdW8= -z)l(Ot>q?x=^{bm+Bieaap6oSP2)GIh-nj(Wqb -z&ykLL*R2EeU)}nn!GG!Mqa8eqm09 -z`=JBOQ#0IA)zrRGj;e9j9pk7g-E^O$W>Ke3bJWkM3uid$T6eq9%c#8*9CZ_Q@mr3% -z&8_p9j#}lG4}G6oJ}%^k-SVNIaPvbK-TcrmxcR@0&$&GQgy^;1V3N$rC^o;n9Tin<57 -z(#LPRlbk^d=eT*Gm$>zWzS%AFXO8-%TPE~s -zYIz^mqtxUP7UA+*;+12tsTxxkY?ku;QMUKk3+gjqN>!{_S+2+<6`tH4Xe^`y{np)n!(Mc`u -zig=n@-V^b>n+Ffp-&4!`pf*#>yOrK?^}}el)bfsu&)hN}!Lco4eICWLgW3=6En^;N -zAJe^$;oeBy{kWsfW*!e7=s$4ReHzD&It6_>bq92WI# -zR#yk-F4SF>M=Jz^l#j4K|k--|2fP1KWgt`MdLfr$MruO^}`|jq4&b#G97pMd4@vNlI -zK|kki7y8wGc>Fgw>Mu<1h5nQ}|FWa@-k00@y`u(G*K|AT80tKR#ykT>U4s -zD|fqF9rau49_Sa`^miS#(XA)+Tkg8hAG&$|f_6pigC01D^@l!)It6_Ubpd)LbvN|s -z)IHGWQ1?OysJ-vuTB8m?Pou7Zp5c}cJ=ZNCdYM~3bQ`tW=BQt}b%TD~Efe|~cUvDg -zY7=!H`aQS&577s6*WHeN+@Iw`580pn5On58Fx?M*2Ge_?zsvOe-*As*dI$71ZXW1c -znJ4gf)RVdc`bp|u=q_s2>!{bMJH -zFa1brd6)cY)bgJBbExHg@)uFdJLl`D<(=|LYI(Q(PpRdd^^2(Go%O$Ok%< -z^rNmmsYJaf8rPEi9o+lW^0#Ou9;4;&&W@y(zcKSs%inpON-cjgb0)R?eam^&@;4p< -z>UGdlspUJM>D2PQ&unP9R^^@lE!6Vv{yeq3GryHu-nV}zwY*P%HMPtW@EEns39yb@ -z<`a0CTHgErCbi5Z@F!|{5C4bM^8WtMspZ}O0}e7;-tm7RwagK4G_}kfFoIg=-@qzrnZw{w -zYMIC21!|dR;8kjwC*cihnJ?kb)G{Z+`_wX@!47J9cm9Bbd5$KPsQq1CRiX}~mN^=Z -zanmQ4s0vpH&}OJ*UWN(OGADzdTIOY_qL%p?e(0_{1;@wL)wn;n`qC0L4f+7wcgmof -zs0TsMrS{0&3)F+5e@R^qeJ}M8=ohKI(63MrgMN#;0(vX;Na$_Ut1l~2z0@7hJE+${ -ze@)#9U3Q4kPeLC|y%zdt>fc-@@0KTC -zK%Yik1?{Jv4E+P@70{PZw?c=g+n{6A1?U;ntDxslw?i+YUJdJI2O>NU{!Q+Gml -zQg=Z=Pu&f@k-7)^EjLfFM1A1qf&K^eW@vd4pw16Hh$_nt2s^(J%TLwL<^rxBXtrEq#xrAF=c^mfmFP_bmOfrT=B= -z{SNEbM_9VT(x+ScY)hYS=?g7gZRr|IH(EMj=^2*3+R_UxeZ8e`v-I7TzTeVMS$dtN -ze`o29mVVRH?^ya{OaIH#dmY}d53uxMmOjSPCt7-prN3k8i!D9P($`peiKXwb^gWjD -zuym)TifvFbq-{{wNH4)SCzlb7Xj<DBdXciNqyA-Nbq&bBHfS<{9R&P5V -zY7Xj|OZB91=}29Z-nZs>ERxVu?FJjL(O4*xk*U08KkH%*v05W!lQTkTW6TDqBZ;QC -z3ML{mO>O0;oC-;bgk_e~z8x@im6by2hD?8YC_Jr6io@nnKOAcnj3%PlXh@EBT_}b_ -zlun0c>B&}uCUa2EGj>4^mOcku$NZdu1kyQwhfPIv(?~}$se0;UN@|1bq1t4Voc5+nVxi$#!6 -zr^K2P4UsFGLa}IlG!m}YjnO1hrz0|Dq0CYnl*y^Hp;#=1h7w8324azBv$GJ`TrAZX -z(kDUYS;sNYrf~^iVKgh#{pnnKQeF{tv9z=VEXgLPN6^qTqKW#XIblr2x-zG;Fq)8g -z7jZB%jj}biesgSay3>(eTfX~ -zX%_V*h1E6D4x{F}LyL)pY9lBznoTzL9k!r3n{|zmy6M3tR6mL9UKo@KosE*|qj@0Y -z;*d3PwDq;u7>%UIjwer1JoDKkP6AJT3@2(F&dl^^oY}^bJ}x!(41-F8(+y5DIMsmL -zImKX{ZfyE$Gxvd+>1Y;5H58V+S#6}DE)!|c_bu)>TAIG(u_&w;g(LMc*|0gd^_iK{ -z2t>)u+AJ=cmf15=ULt8OLA@m@Gnz0rMQMcQ`szz}t(-e^c+n`+S##0j3>l%P_^wau -z3q6gBHR&rhoHh*^^@L{Mf9B6Ku -zpzI))XXGMIHj%Z#q(L(&lc@_MS8B*9Oh;nL6sHPxU8bpCI~2(6%M}DP7$*%TCX;*z -z^$$*MZmt-8u}q7nu*hdbPOk0fcVxJ#sy -zGy5~>1$u3*^sO3n@0yTdX&hifgp2g9HRArxXN=K(8;aN0r6VCJ4=R?-Xkls|ugAl+ -zA=@Y_6NyM8tLL`kXriI8P@a3jRFg2&luhEkluVfRpdVaD_AilRxx0_{Wj0Iub^nsu -zrf4i2i)OM`xwbVoaCT};5-L}p3AwHgS5aT?Xu@7sG2oGWDioEcnC`#18CZmNyOtm`>FOr~6?2N&HKTs6vhPIgR_x#1 -zZmTAn(sg`P%a&~KuGN>c>#FGIxrag4v@BQrZ&G$UR5<j5iS0qyxN@y>wB#q~Y -zzInw%(S*5qm>UWd9!!Z$y3Tah_0`qqsy>s={Z -z31#B_<+?_f>l$5F|B_JH)v|gmtFBjfjb7a~dUe;B+ktj{b4**Z@1Ff{Gd}C2T_>H^ -zNjQvHQOj(jR8E%^b04-Qhwi5BQfOE%ss0J0jmEiRHR^FEu0?M$Xddg|SU7Kn-@FW0 -zRa8IVrL~ze*l%?QJ2|UAfwxAwtbUTZj(15q-aJRcXUruoed2MxU3+_@ae$?3gGc6! -zh<=Liwt^WlqT$swVytL-S9splCNt6OEE$<(r5|aYM{*IdXH;jp%Ndh6b{sjD^ckLE -zP-$?w!D$Ak8jLqMML#^{1iANI3<~f}i)7pcbWWugEml^k?Kfsri6nPbw83mT=3Zxg -z2HgcS7{K^XF9=6!n;J|OjDy)Vt24v3NIY7XjOp%RogVA30|SRHlIi`*Q3%!cX&j^E -zOjOg9(*I1-mDKA=gVL@J2Q`^Bw~PK}Gd(gZn8ZGRo_eI}(U -ze-jNnCpc>f96DWNJU=)fk`X_1#G7N$xLm)w8=_aNH?6!LTdI`{q8|CvddQ3wq6srN -z&P2nJ2>MZaXpoI#lVP335IsAot6swlEYLxg@s(?E<7v=iZ@1<2UuUwB3?B~Bgbb_Y -zr)j?ErPb>k@z8XP9a6eeFIPZfmM$KRq27GGfI4$bl1`(;r^!V);<_11u_gs)>`Lib -z)S1gGl}(#XnWd?|t6ti0Q$`Q?Qdqkw%QJz)>7Eu;O6+LU=y&@zCx%W+Ci`E1c`>?H -zcX%;o$<9hi{}_il7MUUa(3w~2TFtyt4)=7nuj$#O?%<*+V0Y@76_;+@e8nO4WTGA_ -zMZ!`q8UH6DGi9$_tH)3xbc+&!8=QO(l8$o_Ed%S(@k$D -zbC^p*&VMY_AQh9Q8IESm{Zij}L(-1qHYm?Tq;Oopen_k~X6{?KIHi5d6L%IagP?wV -zYvm3fbW_tKj%Mqo!M?CunsNsm?Ng@58e}`Hi#3HKazAvx<}qDeExEz|ex&qz-JT%F -z3GDE>T{5K3Os2zpAoNLdtCsrqe_h$vCDKO4PaxzVC_}7|B8r*GSkyd37wcR>);kWU0Z2ZVzAw4Y}b^A -zrcgR;lJKBTrzmmgDWwP0Ur@R(HOq2|T^A;-r8t1enR2HK)tRr_aITu=o`?rn)U-hT -zjT8rU_2@auR|zrwWtt4z>I}@`GsC!g=@bsT=!f5{9_RDn`CjiH8yVi!8D#9`rhj8P -zXdEK~EYoy_%#hJqN%yp}QGE+bCK{&cp(bl9U#c{w4O6C%CEuTDp*!fi_JqcwW0K;T -zl|4vB>hSQb>ra%&vpc@E)696FKaG!Yy38&`={-lfsbM-|Dug_`<{23k=*uT91AqOX -z72TLNbbU&HkDCsg!F{@34uEw~kQ9^eF7-*~Ith2BzS7L2Gn>};In9{d@8T)k^R2?n -N!JW}}_GVDv^Pej-a(Dm$ - -diff --git a/plugins/amxxpc32.so b/plugins/amxxpc32.so -index 844212940d5cfac2ed2b59a1370261f8b4fe8046..c6aa6b74db6f865995b363f9675ec4e645d51d44 -GIT binary patch -literal 207368 -zc$}o&4}8t#|M>rNwu6=FEDgib)TyTC&lp)o!>}?@Ml17w8#4dT{2iuqhSM>TRg_9m -zc}FFr`9C&)Q~8&K3Q=c`lDwCYeXr|!KF*9!zwht!yZu&Y_t*9MbG@$XdR_lsuk%_> -z@08TpYPDMYKY{8W9cnhqVu{f!ehe_{V=NICnE$s%+OWhN|`c&q)>5AHChCK2M!>rdj^w$G^R!`aI3LC)KB>`oybGH+`)7 -z+|NGs*{6g0M5|9*!VdMRS1I1k_@MecUTOVZx*XJ}k@_@MpH}MANqv$k?bBR++N)0w -z^?9t)`mXqdMar=a;kaA!)B^9Vv@RSIZ`rrI`Xs1N1NC`8ePY$8vHCQz{Qvu@{=e9# -zhWdo5Pw2mFyR*`A?SI*R58jP;{L4Od)aO2yANrT=wJ<_`?CKL$XX~=T0`aG&W -zj}Welt<@)z@0>W>Sry*7euV(vD -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 -zRjvzm!tOW*qFj==@^0UpQyqNTc6 -z9UEW_cEw(piMjX^zJc%ID%^u-@prt6RfB2o7=vvv5qn}k9EMZy4P1sF<67K`NAXAe -z3#~P%4;X`wVQ-v>Gx1&g2oK{gSmzGn#TM8Rdtn-8<19Rcx7kS#K8Hgv3s>WB7#Jen -zg()}zU&MvD6xZM({0T2%?487edH5cFhCA>m)~`vu!hSdoXW#;S3s>M5_%mL@DtC$X -zuqC#~uGj<9aRO%JQv3ur;D51BsMs9aVOM+x2jU2vj-j=v54a0`s0Ki3kJteZVBia0 -zjql@myoi^vT0P1c@5QFr3KOv#rr;nPgV{I_-@>)H8N=(-t}zLF<3xM~-^1_1xn6gR -z+p$Fh+8Jiy6#N`F<7K>#kKQB3V>Z5kJ8>W079rZP8}`Kc_!=I@V;I&@Y=Ega2;au{ -z@C^Qn7qAR%_YxoW!1)ewFV?+Z9EPnQq+VjRNZJuTj;WZ2$1tvu_ym58#b|j*ybIgl -z$G91HVCuu-s3@^k6Y+Iij&qudGn$FpqQzZ!3d=CRx%e)Ail5^l{2edht1UPVm*WXM -zjeleH7|IzR#Fy|Jw6qk1(TVeM6Yj&uT2VeY3m4;m@Fy(6yC0!l#F8KU6Q@5aUd0F6 -zh&i|dAB+>_@C!)@3*O?)0FVJ@ZUN2v_47EXC+iVjFCaU2qT%8zbI5R&0ikU>AH22jWvs@{jqr*1tYW^x*LE -z;%q#OzvA!MeFE15f5bD`V4}DI%dyQQF&;bNw8>m|EX51>U;p+g;wij{wrtUk4otxA -z*dLuZ7vIHC@fe=PCQ~^c1Ez_0U?Y4SpTwTH9=Bi-J}_N;7RO)?=HgrEp2zjUIXDmV -zaUm|oCAbWi<4RnGYq0<~VIdadZrq3a@h~366L=EOpbyXC1-yip@fup@bDc2=gE0g{ -zF$}{o0v#BMQP>P)urLLvF2m)x5?A3`EWk}z -zh{d=Y_u+m#j7RYVp2Rcg!*h56FX3gphL%^Tw-|)M7=ob~hT#~24vfSoY=$w|8sjh? -z6EG2zum>h%3Z~)!Ov9m=iKEep6EPce(2cWk4$i}TT!@Qt2`3~(fewtsC~Sr?=*HPN2j^iv -zF2u#S1ef7*T#2i&5Q}j)?!*0f7?0u!Jc(z}hv)DDUc$?G4K1%xo*0C|7=k(I#@RRr -z=V3lB#KpJ-m*H|;iK}oe7T_i<#Q67Vf0&3#*aMR>1ygYVrr}V`#L?))iI|N!=*HPN -z2j^ivF2u#S1ef7*T#2i2Ef(M=EW~2mjr(vv9>$}10#D)@^x-+YfS2$xUPH?V)E5lG -zU<|=f48w4YKnF%*6gI;cY>jakj|rHFN!SCEF$Gg`0H)zk%*4^?#EF=VIq1gOI0xrp -zJ}$(?xCEEsa$Je4a4i<#CM?8a+>QJ2B%VPZp2G`x2`}R{v@GZPVh{#n2!>)9hGPUe -zFcPD%8OC61jKg?Lz(h>K9+-?Nn2H1N+zRrE*U+|-{9q`CqXVNb2IDXRlQ0=mF%2`( -ziP`AJIhc=&aT%_}wYUk3aUUMW6L<#C;U&C=wvWg^hGIB6FbZQZ4ihj5lQ9+3FcY1a -zjc%NS`M4OD;YwVKo3I%7;bA<1XYd?e!fR;znEYcXhNAUczf=TSfjc6vNShQ5b`9n1D%`jH#H0ndro9bmJV% -z$Hlk|SK?aSgvGcI590|ugXi!PUPIfbiF&Kvln1sogifNdMPRvF(&cS?K -zjLUE(uEkAQjQj8~p1?DB4lm&~w5=xp7>eQOz$lEtI84AKOvY49!%TEyHo9>R=Hp^q -zhAVL`Zo*>RhllY5p22f?39q4T4f)4V3`Yk>VGPD$0w!THreYdqq7$>xjdL&`7vnNq -ziED8a7UMoVj3@96p2JIc4Q*@5KZasBIxq@jFb)$i36n7u(=ZdAn2k9FlmpJedAJZ4 -z<1$>1t8guD!b04Q`|vOx#gljj&*25UjMvb%UJSwz48?Gaz(|b37;KI4n1D&x15+>+ -z({Lz`Mki)t4$j6on2!r_2`eLx1fE16p2JIc8TEe{-jpi_V+e*} -zI65#An_&#bVLT>c5+-8`4!|_b#L+krv(b&SaUSO5VqAjDaV4(B0xZO0+=u(|D4xJG -z=)((m39q4LBlQ%6F%-iv0v#BI&9F7bVFD&%4@|~X9DqYH6P-8_bI^@*a2_ti#kdTY -z<0@Q>o3Idf<32o$NAV<{!E<;4FXJ_|ZK7N;1Vb?#BQO%9Fa}#=JSJcg_P`WO#WWm> -zqtS`kn1i!%4(8)RT!PDRC9c8(+=Rur8~5X3Jb@?Chv)DTUPjAi$`yk#1j8^K9TauPXq<@I=*HPN5A$&`F2Uuv64zn@7Gg2(!~J*^Pv9B!;RU>e -z*U++sdV>Qn4KEc^Pq$I77>@~_P|U>9=){SbjXCJX**FL1VLmRz -z#kd5Q;c{Gwt8gtA;3h1@V%&}Ua6cZ#qj&;O;u-YeIlO?E@G@RQ%XZoW24OIUU?_%R -zI7XlYBQXk_VGOp$IE=>xOvEJYfytPHsW<@Ba42TtXxur^VhKpFSiW2+MlZq@Vtbrg -zDsK5hoP1S`xYuf|*Is-Wf5DlZ#XFP4RRhHAf#P+nF-WY1?XV9{!9}*_-ubM4M$?NfnrUphi|8gT{6VpH~@z~FRmCaK0HdiZ35|?D6Yl7 -zapGigcDDG=G%shh!IWhiE -zu}VX$#1ktn=pcTIEqaUh_YqqS6rUU^&YC6eo-HOV75hd77>`AZjpN0f4&nhk+);e1 -zleqH<@pO_n{~7UpJTXwLIY>-N7r(=!BgK9b#OR6Q9h1bo$($F*P7$Z(;0*C29HqRZ1K6+YQ1>=H}P6%fU!?4aS^`RSUiJobP#{T@4AW$lf#C5V#gdYWQN%1CGp_vV!<5& -z#@E8dAMY1me?T1299xKobh?_TdhnXK`(3fsQt`|(aqN5I5)54~4#Lj=5l6;YjUUtw -zFs64A`z4A&N#b;j*X=FJVi}L?Fl>?dA@0Y>0x@HQ=!>u#2Q?ID;VJwb`*ak4ND#~L -zweI4lxaK)=Pny_yl=w8(8!bM9EwjWICWw=!id#J5+Ly&wOT>sq0mi^6@ji@cEGA>y -zrea@g-b{QN>qLu>;ISC-)t2JGR^p{c#7A3;Kcl6Mn2Sr=ig$J5c>EUcP9hz+1hbzM -zXX3{=t~=WYiifaUx;PT|Wr%w+#kwQJX&5k4+%ZNxj~yq7J*SXf+%;A7>3Y;k&4*qW -zzt#0XS!aQGA1=}9RbI^$&x{b0#){$k_(#<^uuQD|zPNq4czUJSMb|Io&IB>HyBLur -z?wKa`*W;D)Ma-Kd7EBde==0s7#)Wsqwguvt_2P%R-&PJ8AugLBMo$(uOclSuuuJ0L -z2Lp_ITZ^~Fij8nZoH(b4_|NlV(@e4ZRPjUn=WUgq#%dl|H^BH|eeqR?c-s=Sy^ZQ8 -zu^~3bBuv3H9F5sH8}o4quEYW?#{Kv+Uc_qeh<9TnY>Dl$8)l*xU&E#N32ww)*f-v4 -z9EV<9h9~gh4q`@Ean6(C^WDX>m^VJa_#H0R^`eWKhb$Gpd{6B5zL`xdPQUV!PQNngDe<{6Vne4GkB6sR&z=GdGFV^tchN|2yOX -z#tAw<4K0?rdVZt)9zPx>E|?(p(d|cBx0`tVSut{pIzCd}=Vzi%3Tx0*;B-~v1X3= -z25!T(?bPv)t9T;=jKTW3(7md?b`$&QcCK{m@jF~??<9V#t*z!Ks(-fLr`D_fSNjG= -z>-qVe>ON?UI2-@KdSk`papIGD9v`BPn;|}r@8J*F@CET%oR3-Wi%EL^u5BTn>MZ7V -z5es#HUPGmOxw4+ca!%L32h==dyto3->HhsOHQ$RA6CPG}RQ-qU$Ai^8JyTquZLh|Q -zsp2)=ZtJLeuj`#%wcDwpTZf-e^;g@-V!3~+cuI%E)OewEezV;%$07xnIrqwAIyo0-I@@s(u)gwawK0 -zMH{2$$vVD=RXZ&VuvBfQ@~eGP&6l?+d#HA&tX5a`t6H@^Osm%S@|<;@3-UdyAN8Km -zzaG14wd^Ufl&{hM|LpRm=9#Wp3f50U^dhtlO*mAC^~#b$6|_|P -zQRnFCI%o6g`$72kHXkkV&Q(Y%Tuy}xgc+IdFN8){#5XwJrP -z)u&jpT6-5klce=B|BaENNY-;zD1t0 -zyiE`K)8mUW@wbuqy{=##ZK1Q4cfn;jLG?VdPMx6q;IryzZ@9ys#OOWI2cru;HEe-_ -zmgqg6T0M>gSfURuP1dN@DO$C9-*K~g|8ZG;__(Y-DyvVh`XsB*$Z8*}gHFimkP~Kg -zsHQN(QzOi*&+yc$XEtOk4L>0VL@3u=b&=F^$T5-rW9IFs*pznKY>MHaOtr;R%c4R{ -zZR%H1-a1`A_H{k1d5PAXD{Y-YIaeNa26}cEADi=DRZ`W -zU9mZ%U013&8@jGko#zbkK4aUW{|D)L-Gl6(Y_}G9V>`RH+3cU}Qj2%W;{V6BvA;RH -zdhc}Y4DwFWQRamPdY@HWioDMTTeqv7y^}(;DjZ5UjBvPXTZCC4Uj`r!- -zzi(0WaTcUt{PjzfhU=UocaJB*5#~vDgnE)3Az8P16C80%Q&r{gCOJZ*52_6jkH@Ml -zcK7$Xx+XY6yqS)$yzE>{-UOS+=?M4sx8)wU&;3Ggt&@9jS{H9ieR%Zoyx`CDdFJJ< -zeL$-Y3-9dhq-~w3(rEp)qjkTxmPJ+1Z6^afwmVfJc#vW5*MCZ=)H4V*F+s(beS%#@JO{B(#e0m1V{V^-R3*1ofA|X -zHm}ZPxI^VP$gA_5w&$_Q7n!xWX;H$lhXz1`a^ch9s@dF{(L -z=(^%<lbgG=<}XTM?~&H`&_HagSW9M -z(>;0NADK(2&Zkn>x_zfWmFAm@v7W2Q=I!n9%6gTHM3vu&@&Iogb;`Zd_jpW9B`Z~~ -zDJbeg@1EY#skvqLxj*RSCZ^&{Lp -z+a~`pI_nRrtUK$eoX>LxyC&JJCiCi0SKNFZLx=yZu@{}mdO5Fy)f_!TEd^981y(HC -zDwe8LELE*os>YH=74*fdmAWO+Ac}6ze=pCMszrE;R7YE&tBrR`Yfq>nx7<12J1%us -z$JVA!O-aZtoAz*YS>AYyw_}Rewn`O6ZEw#6RgX5AzIkF|?B!`T&n{0{=h$(n(~p&P -zY!%|X&)YFE`e4q)2#fQsivHbIIG}@Gl~oqo%aUEkYjapH(?GZC-_M$Q=;>uKTS_l@ -zb+OlK)5DQITAw1b -z{|wz?bIc~su|B0sda4E&lzV(yBUPEyIyEc>mEP^Gsd~aX-X|QM-S_LbVvDlQ&Df(4 -z^gQ9{Q&c&<@0|QLz|wYrs$AoPT)vQ{I#{GntzajJW1rW$^{C)*L@%~p+AHFed*6FsSpsJv81q&iqvPT%~`td_h4heH~- -z&DU_1)uOiPs^_aR+p32s-PSW5K`JJjC&u9`R})m#I2^iL@D!=W5~;`NJ)fB4^x1uF -zRh+J?LC%NO3iB27Vii$tnX~Gys(QPs7gcvvGfU^4)pm6{tLZvKH@2XRG>TBJ`JVnlqIa68&Wi@IuB}$Dy -zA!>JOOJnDvR;JFY+% -z+6J8|)ibtMB^IiRAxI@6#1s=nv~sViLq+fCu~^ly1vy -z)o@|PZe6mb%!5?q!MZCl<*Z7$nyN(R^seIYTk5MBjzUz9BD_^qH4X8G=>yCJOf}c6 -z3)eh^xyPN2{HN(@GpUFp(!#8&8L{Ic -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 -zb=cqB%=y=vRXb;zQMwxRD)VL{>1lac7eEWO -zMVCH=Oie-swX3w3WwySz{_e5Q{s;a=wDx=k6zmh9g{L85&zg^L# -z6kWLScIldfrDroWYX8Zbd$+kwRU}LGSX%P=6+Nu#kzb`?;ooYtUM^X3 -zuP$kP<^Q2uS!1cxtw54_3}f>@8z^a}GZd^EL&?v7>+Wz%MaRPP$?q?yz4oeY+k7Fe -zZ2=|6bO%sSrdE#m$Ml~Ew^S6Ilgtvir>LY%Melo2@139;3)jwEjtMGCd2PXe|1d&T -zs)2vsXkL%2DB_yWb3Po`!k)WMZP=hEp`Kdi@YXuDW&T7K=wt6!tIULMsoA6U-*TI; -z?x#FEdv2WgVSssbtL|7->(Ya?!+ck*?qW;_C(mxf)%u9aclvgBP=LNCE--yuw!;=( -z7Ja_*a9p8IN~R37yZpCSm15dqcOSA^%RysG&b$`8hWxK0<@U*_}gKGZ!i(G9z|IN@n -z;P07MT}LAH6FU8El)5z!Hv@5!nS|)Jp<3xNolIZgUzKvNZt>Kup&r%ELk$&qfycJ7 -zB9W><{GBYxT%?k@!E8>}n*(m%YW^K0091)wLUme!SW$JQpMZUIH|JQV=U0eT;B-Fh*2?@6(p|!V7Zh2Pil1?|C -zhj|~2td#NsQdj61X*N<@%b*=hXm76y*_k7l~B}?^UM|D4KRrk|%b;37J -za?uZ`-sn(OtBf(-#g-cWB1$&ddRcZRTO%yF=k4z9D$cxQ$MfF4j=U^gz`BflO;kG9 -z&z@^aJ=kWkw#gkmsWi498_vmxI@d-Mq1M~x(pMH?ar}ogVOHLRV-mTmhGO)KKpM{Z#FEEnxu=q;>)LwvHen~Z}D~>ppLHVKiS3& -zE~>Eqtg42Z8P4X4_9=C5LFLL>qPrcr|4|L0Ko^$j5&U1E=v!ThIN0CnTYDSm)_8}N -z5(|;rEd9vO?!K&-%s1-4^If_vE->q-ym2y+t31Y>C2PO`OV+#{O;P2jn>YRKyFIsS -z6sxH^^V-YFG3LOkQ-4L$Iu)go)2&~@;q -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 -z-SzbLwBV+n)4UrkfSquNWl8%$Zd=*HM|a8 -z*z)A9iHTqcD?;t$Wx3qD1r*`YZ$7}i^}s5^Xz{gJa%8c&;u(jdI((_fzEr|bb6&hA -zxNx>7_B4+ckM%uqU*)Ya`|f9fZmGDg^*=a6rA2%P4ZP|*al~$;!RH@SmsBbYhD!bQ -z&H@PbL$5l-Ri}xKqLqS-vm8b#fP}DBWP#*Fwmc{k7Vd+k?R!rGOKgh?jgU!E%bG|b -z7$J1c!4V9#wrKu0e6GutRwE%;x8M>Q%u-l}tBYY5MEFS`01RW?qTsfa(zO)N<}jwM -zFv^QuJUB6Nmmwx^akFNhR(_z<8_a8;;rWeXo5~ahwkd+XIkHuZFgCv6WC6nY+Kt>N -zu41{EN5)WIw&2#dSvwZM(iyoA=}S)QAb -zPt14(0sTt%U7n~~llakdPAKG|Q9A#3Q||p$rS5VMAo0Ca>VauZrS2KbC_P9}6$?Bw3)UIppBCcD#Q=oPkU1kHTJ3 -zo9T}_wekLFf;QA2byaHv{86~lh<4CaSvxeT&HNw~<4%T~Z`(g!v41SFe=M?pXz>qo -zI{hB5Jz#y_ZOa;A`#s3^JID4r)AqZU?e`_N---0wA4&GU5(5Uinm$J9tLK=Lq!U|Ey8ID!=^Gt{zWw4R8cK0> -z&KzLRoDs{+<;+R;%wNe&;*XZz#o7Js*X`tbFxctgTlQthUa&(AL!*Vu}_L9)w0KM(GP&cnTL@Mum@Y -z;b|T4MmySR<>$uoYdJq#*@@)NE6mty(LIKLLU -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 -z1?U@$0#m6#*e`0Z)O7T9u2OR{VhWiQF3G# -zZws9u&0VH0-2>CrwLe}s05*C!bPb*{sWXB#E&H@S&2}e>bFRkp9*G;Ec;Z2qH0Y!0v_(mUQZy#M5Ue -zh2KN{XOre!^0rG$HEyE|>2Gx5Zssv+Ja_WV_moRYRt-jl6Y+$Bz5Q0Z7vwm(eR$D*+{};&rc)>WCLuFZNy?QZ|(^PEPVx|eH -z?uNy$%N|!R{&Ot%?N}~W!e5_E1t^D-@;_eq4lVW?F<~rFzWAD-B$MF*jis}n5u~(E -zmcRuiI0LQyK>rnB6?U>84ZM-n3YQ@59C6OQ(bq0nOoG -z#is9H0`%V1!ngE2#y)gl8DFKu4GheeSmuvp;YwH>?U;WZ!c3=Di>97C8-M9XxbEuk -z!n1sboZ(l_aW5G{!s52*4ywHS9$x(nN$NcDAo~#%S3s-qH2Ye8)9Aor9@+qbpo2T8 -z+2rNC6yeQhS+8ZaBW7h&JWUthX4b#rLXhfzGV1v>vR>{4!9%lvMj3g<7XME8BSph( -zGJw~$K5F2U!WMvAb)l@L3z!V!g -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 -zf92BJ94H%HzP -zM2iJqAa9{lGSzbO)KeFnyBc^~k#P{U-W+pKyNsg{YH7@Zdb`mfn(oUh_TEe#ARM5% -zf+(FutvBGd2fES>7qv34+QsOWCRzR?3KOU3FpJ|##5^Bcr;EsYGxJq0m0`KCdg5to -zwL7u*L#?}7QfE-z;GQ5z9AXtNZ&)}TQ|*}VfJU_ -z@=eKY<50QxA7MW{z4XH!Th!oDu_ZrXCSP=l#XqI)dIC^fsl*AkGp`8R_+wFpX=80U -z$Q-?S0T_@BoRW2tIP6J-C}#?;2kRSVv9xrSE##|&xGP3d`SC7KH130rV2nj27fBM5 -zu^*vO^U^Vn*bxx>bg9^<&LUc5@DZGStTr5lN#SbIGXR6(G2-_88nZdv5%z>)4_Kgg -zIZscU8!DAY1C-S~_T#m0FiX&;Th=fO#w#M~oV7H+qq^qXRLb)9!rH0Npom?{x#?xbHLql5qez> -zya;+~G|^KbMUvw^B10rS)lm)LX*?j+A_yv{0V;DGbwzlVf7_{LTk;+bF?k34!{nFb -zRSsfr^U2<|#ws@xwnw#n%_X@`@9xlO3v%I9m@gzNT-CezLVwGp2*@}q=FfxUzI$Kh -z?uV*@I&}YQ5oGl34(v}8kv`$i`!VT(aow+JF&~IZdl|KMbguv4lsmM0)Y=DgPj5ze -zVy&O0?9jviT|fVMry9(WmFJ^!27R0h%}$Pc1V8zf_p`{hP)R%5VF$5U;d3}d^Wg5W -zw}nx^42n?34sEd%kn)t@Kyirpq!)fG{n;cDzC4^2<@iJs-95t1ZR|=_(mkJ`*c7W+ -zVmtbr_LrYVA?^&;Njgkp61RsMc!}n@VmjRhU*0^e6V{`QetBC$qZGBKSZUi*c-7-Q -z+QI+9YE7rMt-iBY%{iri=GnXGXkFI?ypQ*C6O2-q3CSqfF?C$sgPPhg>&5qv -zG>a17+D+oCNqjYkuh+%bN3wPCwOM>+i?2rURf1)kt%UAQ%8z)T(sQtw(L_*;>_93b -za!nB|3AD1J-uQ1&e18QMddv*axPaYQk?0REGL<&aC}PYJ)p`f_F8FK(aCA|BARp*O -zA3(|eiJ+FPdOuOUMMWrvQrfM8XkEkL(tjcvjkiEJ?K&Yy?f;b!hxEui1%o7lkuRTs -z+bACVR<0|l8)Af(2yfv%c+>{VPnl+pgJm4)m1xp@>`sRx%0(=nM{vxt1t;HimEQL9 -z>1gKX%1LVp`LPKFJ`e>cTR)SzJv1;O{FcmFctO?h!!l$1g&Acs!*gLqUzySA!i<*l -zB4ay%wCfh`oz6|>cBRoeI>F7d%!jrzG{T-8!vByt3q_887R~NZ{u_Q+W{kTqW0=gi -z>B5YwWJc138K=*QjBn0eknum6@$U;W{vtD$UYM~^W@N$Q;f!2_@YUzUdmZaph?i=k -z7tWt9G(Y*-4sX=@7y2rphC!%iu@Yy2>%f;tZx2$rUwR~MT*x*^MAcnkq_WRJLZ&-L -zD%R05-#i8KLAy&BZfLh7%<|j;1&O#w+6_kk3^oSz_T|8(!MX+DBA}gXW;qpyonJM& -zp^Dy}uwD)-EoyZ$LB^4Amq0alQR_{day{EWsY^dqkjBsaY%ldY_-|Rd(}mP)xTL28 -ze&fCXemw{UevZYqeuTo*dk)@g%zxe*6IKxm7V}|jMJRBskt8zDH|M*!STX;3D$om8 -zQ!heGkztEkujG!em?C+6WM}|7cvw_3e+8pMymS19uCVoORHejuC74 -z>Y~=Gn9e&VM&E_Wdh<$RLc@@jENUIVi}+7o#4zu2Hm3x6Z#`l^gV_Qm1fJ?3pUu}_ -zk4bbzs8imRF#FkU)`i5?n&io9u}&bEc9EA{m -zZ+c_h>J4U7HCv8m+wsE`MDm&KVhK;?F)1)#a)d@Q8lD}^L-cbkTGdmz=Rcj7)J$ww -zJTz=3a$?Rq87XaBDi-P?7E~5+p1Q2g?01^z-McZkmoB5GGvZB`BJre3i38$^fRu|` -z`|<{E;tjl-cmGicqj_l${F&}RIEl-#en_APmt#|~AUwv0#G(>;EnXX~m;_0;#LuJ@ -z3~!bpkUyEjOwwiYWs$PJmT=8{|2%IKA9H?tA4TWan4YCK;GEAsX339);GWL<{=*K3 -zZ+NbvGl~x1%LZwe^GF}%<9P*-^iPPQ`15T0hIL>1%MJVIVd||w;P1@y5_f-1T^Pet -z(A&)sI?8BKp5h-{(cSgj-84QU{kgmB_zMU0i>_QE&o!-GbK-caDdR(hmc`W?0oX#~ -z~eG+#qkq@a@^7LG*c^3@C?{&d5Q-VD8g1qRDvi?+2M)HZq -zh(gRQcd3*xxcK=>efm*cUM!1er};9%;^gqkfA7S7+7gC*mR4pBX1tPDV}DCD+MI~c -zk;L>IgA4S3=2*`UJ87_PT!(Iqs_5`vTc*Sm3hp?}Vqx?5KgNN`1(K8Vja|sx9Q~H*AnCUKV&_YHx~2h%fsUL5bgu`R6V;`Y{)ieT<4@iNX);V -z5_>r(0R6h$0(QntOk?&yR*{s)+HJi|*cDp(i^c<8li7n}F&6joTdcUamnK7UIX%Pb -zcBw4=H>)E}bksC}(F=Dp(5Bb7R~r`+>aP60HY%4JZX#MbNy_YzUvB{h<$IFw=78nIeQD?_3psM*WY@oXi@lRw}ft8_%%@_64UF2Wf#P -z22%Opzz>)$Fp)qP9dEXrI)d6FB<&JjO!CZ!O)RiWARm?)f33^+N&+sPI)I87>+qPg -zC{bK0Ljb=!8GoFHzuG4dj^n6Z0p@Nq2CCHH6;x5cq_i+9ONeDwz|Y92EFzNW6#e@< -z2Ru4B!}Dy9Z%>^Dy}|K~DQP5<9;T%5p9v5!SY$9@6ptcwlV+qvocbnsYxSN{H_n8F -zsMyFyMCU(nMCUL1wp^<@JkMoYBWkw{_xA_)DYtAl4A(W8Ow{ -zfIkCu@%c8P#>vNSeXEcjExZ+D@II&S3(w%V0^kQY?wr7l>c&as>c%I_^S@DpSqbb` -zu__zU(OZe+xKr^TN`O9w&WZ{@;o3e_M$|V1ClvdgrY8Yx%v;@{TR*80J -z*xDUQ?dE^eZXx#eZ`bN4{duS~E@Q0KlE1;JFB6U3Wot~a8j~oIHgrk*#ummKqq(k< -zjU`w!9%5^3^-0-Sd=Uq=Z|r7n%un-m$qE1eSilEPUSt7}WwmSYK$bPS61ZT{zgB~_ -zbV}Dtc8pnvq9cq)4_n$~{ijBwl9umBTtXPA%Qw&E2$i_JiEG{nvif4Nr5R778HZY5 -zoS>pF3v86(C!*@8>ADFzoZ-wf?B0h_I$J7^Mfty={1?#1VC9ogC6fjIO(M3~JCDRP -z!giqa6DYl=Md=6ahWn -zI?aXy;wsO>TVRz3-k|PO^ftP+8UF7R=w8CORG5StC2%HQtS)VFG8RM{jPNgYN{hXM -zS?&y#Js$w+Y*B<0k%@33aw9cE*H9P!bBx)gh$E#g{lUp-m7Q>H6^7`10gc&Z`9JBa -zSH-$rMcr1Q@G?$=NesLe54mVTcBT?92y^WrJhmW5KJJBGZF|z9Nu%RIvqh^W@9;f81o8+-B60O!A;|1unE*?5!3&T`dk-t -zd2y}^8VJ^b84uQJbXmx&e;Jp=F4V2iE0_LmsBz2PUmC( -zH9d9X*n#_4&(6^vX+GfD8$z({S?+YtQKQnGe(vPoi1veKaK5D!R>WEygXsJWk)GVC -z_y{88D&2R%ZTlGZq>;yRq}v-y3C>C8%Urk6VQE-83boa(LOq3&-nmOkI1oVx2D;BXwf-Avn -z&Ab-Sv#1&pltMQLVEJthR&|=5ibSv!(!bsiCKbV0&^q2cMd%2_kg*8U8SExljAHo> -z3%i92g_^K2%$>hm4ZVixv>3Mrqu!(X=N#UGpnLQhq~hJYUMle&GYh8k-dzS3=vVUv -z)&I03uKs_6Ov8&JbjK{tc;$RSB1EpXR7Wyk2Q*FZCTC_ow~y6e>dY-B^Mf4yXTz6t -zx}j#Jf1cl<27eQcShrn9g84PQDW7YL`)>XPja -z#tirvlrLN>>*7;ge3OXpFmOn4r}kv~_}zou`CBS44KH#Cc_7wr%lt`l?T(AJlOw_s -zZgBr{3C~Pph`~JtAtvQn<(suOh~bDc5pH>zUJ-XZAqz=i$3~?_@WQn9hacG!`0^)i(`CZ -zK;f?dZMg67Zv{t&h{NWwF!fq4hJklu^BYQt1TLcAl@&tBDDhNQ1QDG1?QY^k7hdhK -zz=+;pJ~}TRLhZ9Bg`@;jfSEBFKJfVE*3zUK#RfS`zhFfxmVlIe6_-5x!S;J^HzjV- -z!YQ|RWB%F)p-~b2MoWob#rwWn_6^Abr7c3aZlVrDuzZ<#ctM}sm+y}A`Ym)!P{ND;0++MRAg7@-NGY{7vbOL4!{`}(4 -zie~;d7JL#5+@GHnOXDE;pitvB`wRdGw7)3o&C*gQ#j`gS^>|%e9%=J|(C~2_hBrMy -z8;@|dIsy!40Q#E)c5^?!g|qo)G>hytn(Bes!fQxrw -z^IxA3S#aR|h4Clpu=NOmZT8a&n!WonR)s%}J@VX75DzUZxr)wZ43LK9P1qCfdE6ex -z2I-dMYMclTW?uD~NJoRaz68FyH~t#&&$-a2>0v2mTJbPP1NiZSwprZ=U|dYL!E}Bh -z#bH~;lLlmw=GTw2?#zq=uCd^k?{$^mJKDY1nFW2o)!1I9Rq-;-mSYcnDuD2{U&4PQ -z?b5x6gxzB|N*F(3QbRRzljR5N7t?*!cZpX_#_4X)R@ygK`X{W!4sZGCL=B8{vG|MK -zSHkR`(B-}u!ern#&;nl_9v4CIgdT)=!t`z6s>N_bsRrCaLM|I)>|Q_F()0NXo)l|F -z<*K!tpvm%5f~8Zb2H`iHfE9o{lt4$o&sXjIT>lT9IPAzM`qoX>Q85?&oeh$?i^Cij -z2;TC{mIeldX{^n14k~+yaQrR&f$d!Y1{3L~3nHlzxlYSsXli2&+rCihzR6cfe5l@_ -zrO{rcSejAWiDPUYlB=kJ&KU6!=DdzN#l!D+5+8e^CK@=6cq=1D8J7?m=pKH<6$|@e -zTnc>t9HzDLv5fqa-XD!Sc;bIY4fgk`Kj!wgM!h*wW~*gUPmwON{xtvGjHvf=19F#> -zq4|~waty|o{cRlRP4x;i4rgI8pR#{*NuRQLo~U`^3v9xe+^QYEtxDC1T!Ct|4!&&( -zRbz4q+p@oaX11a&=Jn7n1=h#-u}k9A61`MT<1^A|qMd2}k=rmsEl=HeM@Ig~1RstO -zbOSO8-QyB=3^A(9iXKasZ|vu>Tj1q`{=jaB@L)uR*4`9{!662k4yiv_pCIh}8BF#9 -zTvThvycD()u-3meyn -zCUKKFXki+Jv6jUnEzH31;8qdeRi9sBgD1iFAhI4)h%^0Wt3tUf#btc(Drq6(Q+1@O15O8@KGo2?-asNyvwIoEw9z$EOCbpaF-KRu(P@7a(e2 -zLtCr|vxWE=wo(+Hm(`68>oWY3;HY4YTs9VYej+t96;H8G81(BXt*r2(>^W)a6X=U!t_q1IoxqPNwN$Wn|=aBI)##q;_0_p!kdTC4CkE(n`7&3~$=KN7I -zt}k)w;cw5zU5U)6T9N(i=-jgJ;P|Hc#~j@h?qZt|+f@I|8tC5Nu=PqA?~RCVN~`Lf -zATN-Jp(d^p=eBFm?-GcU&qJ%+w1XkCyrV)ev-4PNH{MlF8T%histSUs&w}ZK^eOpKgcRw -zgvFkqNv4M&!;m^!{qBh^DQwagKHxtyAM)36NLmWwjpG~F`p?W$1Fecf_;WH+xxKC0 -zTXN{;A8pLbKQgTz>6|l=-|KzGBHp>a(A5qka3|0llY972htyvQK?y1Z?xTh7%o-5m -z`f&!LJ0=NNG?{|=%>Y8@u)YZ7OH?`CIzoH2)`U|}y+-HXVF^Oa=KosqCU%2S#Hu8L -zQ~+YuxeBO??($j;q@qgGZ$J%_50(1A=LOYCzxL_|CY|U6TzgY?{!hz -zlh@=^Vx#B6J;r|oNXq5?B}OXzn>Myrk@NJ#=NZ0N%yUp1J3Y(*>4=EQEbjrm0IybV -z42zLSaE9>M;il>>Ymj6)l6qY>bcU{c_m@Ck_?`21eRPK4<2+HgXz=V^bYxaGm3#4yXml+cjWX+0bcRlX -zP?pL$M?Zx{Mz1nfm(^1>;e5W^5ss3)@)-Rm98mR#(%pxSG!}%>PpIBOgQGT?>;Jr0 -z)UTBFeJpHR$-eCC^!`=&|EOM+@|CCw&V(qmURhs>YS~|jYK32MwQo;|YNcO^YBJ17 -z4!p6{P6mhCOYpjSszY{IO#iQhHn!fMO)`p#scvK9Ba}R;G0}075PD-`9kql1y5e0h -zhb`q&%fOZND*fCUqx-zO`4X`zzzq6rreDeleWtb}nG6NCb3kve6(XEszO6_V<##0AO&o7mw(mzrTEErd!7>uTE^(LD2DyyC3$mJKb;)t~p8mACNf<}r%1JjIDJ{)_4TNm^*x-o%h8oh9E -z1Qu4dE8lqbhSJyM?@(WB5b8rtZ>pb9qoOWZnkudlZ4_+u1@7Q>C}q`B@ifkPv9Q%B_k~t&mlw61}N>rZk1L4;?X2 -z;2>4YQK8qjyzp9<1)G0=B|n9AF;bCZ86pwofiLM|h=bx-X9@{s&o&$&L5utFJ8Is2 -zmBVIwI5F-$1f<}szLH$DWF)LCE(vP(Y;;Fop+OAu^xk(eY{5k`FBQLE$L|i}_kR3t -z8A-#qhR9I!k>2!Y0zqjr7k_s2R2Ot-)fTcRVe3lS?l82tZB5hpzJ%o#P9!tS-EfqwTo|cIG>x2H7Dc -z0}!D3r*4Mx0lraCRFb-$tB5bxH-~46P#l15l8|Bmqy`>MfhHV4qSWw{x!4#rkW0B{ -z=6S(=JWbnNZQjsRNbRbYxhG^Zvk;*F)=zz4+Wl1l_XO%-t#_7owjbN_0gh -z^kLENefTfno^%KmJhD -zFxQP!rv0{YSh8ci^d<;jp%dbjy`GR9A4U^e#)Ap1=2>u;y9qF@!+<&3Yu9N^;bU?H -z26(Cgw=bLdBDBIT1U7IZYq`>_nEn#lHwR3LBj#s%D7=Da_@XeZBnWlFQV3r6-(b7b -zfac79jfqCrsMYmTmNDwJ2^9FqA&?}k -z(aswc_9ED1ZsAH$4P4^jXD{>f8!Z*aiPZSo1JcGE=<07!WDxw$1bn|j-y)Wew8ejx -z5+Z%q`5Z#FYn|}tWjz%6?M>o@Uv(32)2<=-*x8@QW8P|wMp&#-aj2aVdr?LV=LsRo -zj`;(VT7(R1Ig=)KIS+m%hzFs9DL^M%ky@wk1yQDy%XG(4VxlS-C1l^94=}On1xXI! -z%pz~ytRR-sBfQk&7z+k`mOF)?NRzFnMux&Kjo=ukuv@kql?eY5R)NPyu#_Q%We>^R -zg3E*3WKuWg?PaKLImAe@yy18tOFxPN8D%VAB}@SiZVQDj3HWa+a1sTQP+;fUKH?6! -zWKfJ0?&35Gd_Rm^&?v1L=R=4gFgyV2EtCt|+{dgr$#83q0_j3=0E;Vd{8X_MCp -zZ$T*IA13CA8A3D9a>a5vGN%m_fimp#g9sdXcktL)ZL+i-KJ1I!EUvlMkswc3c}!#a -zdSs^#W2of8?*pSjJ%Gj#5kNkN`bk^D%5w*t4lPmN;Xk0T{$mAiPrRWVRQ_lvPmv`X -zma`c#J4UD<42PONDDL3i1w&~0Ec$%~j@{ZQZC))%)R-$H+S}){5S9y~Z{m0SUq?&w -zxdEM%7B&jNDO9(MSaF(V7QwxG5sGPZ1w>ejGa{Y^j(QW<;y@TV02u3#5p4D*u0xty -zTf`s*D1sJwUEWfjNSX{*md?-B5_br!YFTi1A_g*cmqu&_`ox@I5LEoRK*f(!5q)!{ -zFZA7w8wjp6!mD%+6+eV7%xjFpyI{Ajy1OvgOcgBlvqji`?` -zvx(SPStOj(z!{NR(+dEQZhNWDz;Pv3qN*2WC>Rk7z|H>zv>nE)v+W-P3uZ|`mEUv& -zsCwp;w)zBalMh{~82d_=5eWl}06X{)7=10&cFt`qpmU+`JNcIPNnzI$^KgfCbY;S! -zc$=JN?blC9cjQ_eKw<0@kPYG?IBa(!uUewSaM`KY -zh|uG&uN4w|#P5`dT3)fKSc%bSa#EWlxp->UO1}i-VrH6xTeZ8f5NRygK+kIMT7IC= -ztU$r$U*Q5|k6zDvY0jF=?xeYf8vGxXwdlk&Ps}Z$UW7D*nNu(|D^Acb_$Wlp&O>1L -z5_k7g$#*AW&%qnw1mHC2MfP*x-G&L_ -z9N2(AABJ9h7-;?aWzspvSy+h;H%}%=_r-dueXUkC;sWq>po3p~nc}bxjv9mooM~j> -z{2!$g+jk?*H&ZS=S!*mW*9)=5E5dJlD$+in@r9o~9upPvmc5R|rDx*OzNJW*A$<7G -zLc#(hq=^!B7AqS*)f{W*cPKR;rQSYGXAw{Sc9*BZcTG=N4pp6w({D{(6v^ONJ`=dz -zzd~7YWS@dmFi2|XHz$NA_T%(_cntknKkR9C-^JvjRLSA(Z(uDbi)_37T1B|l%~ON_ -zq9)fPRqpu%=>F}kQeD#Mc1$uCGvaJ8Ur;sJbds33|C7NOA7e03I{Zf}ycT5hhaj5i -zHcgJ;f3J@Mn&wCpKuRM3JT&W7u_Cyz}zx-86+-NiN5RdVUKP+kQH}MMsdZ -zmbx={j^g-N=YEc5vVXjfQQ*mw{}(V(gMS4qIT}|mlES8c(bj}t6U&%l!2oK1Fddq8 -zpj|;rRCJJH+lAkyHgV}{{$=g>}FRrE@DVJ>sy+jB@o@@BA}c>8D%Ru -z+x3*L=vydNZyv4Jt2K_oe%cj<*J<4g`)WhgT88Ut&G!5~TG|9pUBd)k93k&iYX&Ky -zyA-MrrV8H`_Vs?P)(oa^bygllO0GO^Fiu -zq}uWiM36ic)k!>#+{+PT*Fq0m|9A-a(6`R_(^D -zUCTh9CHc>ERF}-4T-Uhu3gy0mB6p}&B9f;X7^TQ?MuvmK8R^acS3D!vGHMI{FqY<^ -zx$LThk~>7Ay7cm2q?G(3<+@*_bpAyOOcL6s?24tR`k%#}^?y{n2D6wjslhd_Dk1b( -z)Nrj14Oh7Q8xAgy6K<5QK4(vJ4yKedzexG{7b(Ynk#gi0DQ3Hr&^?NN!hbkPt(pjG -zP>!AW`zXfVZiGuXbzHj7b(Ynk#gi0DW)xj##iMG-yLN_Abnk;*!{^2~g;bNiyZ9EMik7F1b+Y)}_JZ2m} -zXyM@gb&7kHO78rv{}DWV!w{XazBmzT7v+qNkB{2;8mdg{Tr({j@Cc+A8`?# -z5lPUSOVpaqRa@YAWX{jNv;DM72?k#SMC0E?_+j@wbZn?d0>QPb0(IJzcX+nuZ(HE1 -za&;LblU;#2?-6}V#ObMPbaim}3i^3B+*1Od#teVpuW*xElPvmpJXNi^Lm4bPJQ>)^ -z78QUeX4g$nXG&?fV7&e#J%d|W-KP<{>iTEQ<5jxTwLYOIlOs-jpV6DB$F5RoA|B#m -z;dd69BgG^G)-v*Kh`H&pLgjSVyXw8!>0BCZZweHaiTm&2|EOn!M68~@rdChuwMWF0 -zr8%*SdCl!M?wjaub*M{JDBO%2Z(N`MqZ;@l_P2!CIsg77ZG6FFE~e4cz*7!>deVmY -z&p5SP{bv#oZ#c_;#-;W3pGnlZ`_FW!);bkDmdtdaHg-_Kz-P5l{Pzz2TgrcLK -zK}vpuc3Z)~r?jjB?J1XbE&WZ_`q1AL?F#yvrlr&0bgc{h?V%-y%95y_cMF4iE8IB5 -z4pW@A;XYu@6vIW%-{gQtVZbFcV1jo8G2ZJi-Ya;#DaK$iURvS>gN&?agGaSFgACWR -z^!;no4GE=O8FGEiEDpa9C&#EweUqmSlpj9>($3vCF`tl_x`bn^ -z%yK7-ASJ`bXMP(%=#t(pO*>PtaRj+;nJPP-5WkEjMJ@c=q*yk{%Fm3p>vJfU%I -z?cTouE~yDu^5ERJJ7|4;`&%BKxXL -z#M|Xcmcon28h#kDZallI>#X-e8W&&p?Q>2mFep2qi3KX*4B3ESvOKZ@`=Bpzl#@%6mua5BAv6TE9O{A?WDpU4I~1 -z*%WeJVt2vH^Nq)2kkJ@qAa@y(!Ls6xMP_itAs)o3U-Qnn`@nBBJ45VY4?By|AvA!D -zrlX%Vma#+HDtLf{Rp}_UttgdFFRCisBlwZNSSW;5xTmvfSA~#LYV5AJ%m|1GCKKI{ -z=;CF6d{wD?qzLp->Yhalf&b@vMHoT-uweANwlH?Bv|>qIERF=-FBr=Se+mZ?FX}%Q -zU-apEmXI_@*0-lm1-veVwg?@y3b=G6*ga8)*KN&>P}KxH&sMY_$3@qjU$TkC>^>bX$`uOtU`t&mO-x0lm+UQ|OtCV6F1HnC0y(DNiKb8sTTsc -zJOZOwD1i(Aeb^9QSJTl?=st`n4WZ{CJcOQW%nvW|_-D?E>A|b9;d*(RKC@gOjED}@ -z#mo9*E`2b%sBq``o1FTte5lcQqw2qZRD(APWuQFE>#kU5jrB30myv}4lUQRcFjE;7 -zF)KJ;+4<*~#Oq^>bxqT!m+PZMw@@+;^c;W<6GV0MQ0)GtUF??Gdb_I{l?QE1( -z1ncIy@;7@wA|N4SN5u6_BcN#UWoh!MhS;-51X$Rlb@0v2N!I$S8&g@odXFVO -z;wPOutWv4OAwHRtOg!%C-F-I^pwzcdXfRk!X05!;F773KSu~~=FY>LHQ37p;Pqj(- -zJ-Q11iFtx*?JmR7Tslf|c`x_1-lwHgf33yTop3iS+N0khHjad{fcI)GSiIfld(?=a -ztn0KSIX*$s(E&>zk7nu*clIAt^z9ASesKMoWTO}KJ_1|4DG_+*R7!{xO)b8)bG3Gy -zs(I=rGz52g({wH+X$l&XTAP4FF<0!)=K|?*naDTRc#ov4faC!_Xe@lg96!q=R%Y!M -zD8uG2xu?OxfPz%yF?Fl4uTA*e?4jL+dlj0Y2ziF?dKM(A-k-%98izWH5v#nu!L8oP -zbr6=WDRxMSXB_KoCY+2tDnfPru+a-`hEhJ{ft*d!_svN=y%~VQTV}1-IsJ?Ju=C`b -zG1)y4Nn*fye;!dU3_CnFD)%?!>c~2DE_k|iM4mDRgvPiKJI?C}&2~lJTYKWU_Wq-< -zq-_n)j9U6#;7^D#^`{=uf -zE$J00t8Uw(-DnJV`x_=(^%1L^Sefe!UEYHn-D}qIHbN_{)2gyPpUPeb9^lwAHP|x*%WmLr!S+;FM-6XQ+4D~qu2$%3{aM# -z`FoE6bHw36FzT(Ks@fc1i=qaep%h0bBHzlfb(qV|f#br}##(G&aDPVtlyk+~fu0Px0&|7?CDKh5$RlFApU4U8TgH -zmD~i_@gK=*-h|K!8Tw`&mZEg*s5>_yr!V2^)Z0a^8DNPn8@2J%{6%?)Z=xkOZ*qD) -zA=t9Yhr2~^S%>dN{az70peG;VN{X@f@ -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 -zCFexpQfx -zS?zh6y0@2=6IjGo@-Dn$H7E`qk1*_CC8i!u+=J_RQG;TcO?vE`OBg2$thb8@D|SvR -z;c5+IJh9e_4>&#O{{%wsdPQ0AoIrzDp^Kwlrbae3m~;MiBjcsG;6yO!Nwmg`exzb7 -z{bPnDLa3>6H7vM$hxeH~S!zBhzK4^TJQRl8U4OwnGY%Sqz0I(V@+LNdlu>%NoT3ga -zqz;6g{=?7PWIy@pf;uawL0MQz1?s*b+F7imakFss!p!}1F9B`@-^xxxs2H6%pkge_ -zqOXZ6+t}_on`P}~&q*KiBcjgwM&a9^2@Y5(G+kNTo*MF1;6CyQ2gswj75IGaWpZve -zK&@784aL6_GDkj}l=61ke#WCSI}~a%NebY8gYJ}#FytPZ)?V31>bfk+%XHgltL<9N -zd-Fv2K7J}lxisp-N9xo9l -zt^=vaCU(c>evwtK7?><)m>ZnDS76QxDjO`J^`2hw`pz#o)H=7ZtUfv)aWo$gPMXQ_yUyHuu`)hs3uBEP>RQ#An{-jIyOY -z7`Gi&d>_L59(Unhr`A3Pnb<4ylc0()`}6E}>6fC=5&9;JL=ZlmHWPXGa^`2Lx|KBWb~ -z7MD2)G31D{7b)eHxm#5Sk%>w38(WCMo$;N&cAipqxfu@^x}M3w!mww(9bc!P~vX85qm4KKvVB -zo#Y_h*al;-Q0wnkosKTY`si{Hqwh+IEXR5~udAd;Qst4V|L`1)^-hZwzDQO{{PQR{ -z#ph+9qYeWUB8|PebqAYLGS$GRqvE^%^w}Ona5RniCMv7)C&n0`J&YzpA+vs^{4&8U -zwvVj4NSN_k>tTKlgFzuse3;KO)U!Io^C3={tCYp#tt=G7TLFFklGq`U^I{Wlq+Ach -zKl>y^l49eSMBMj>u+@_Bl~+ur^|A`Pt!#eZy%PQC4}C$z8doGpU8BcI(D_W;15uwK -zP8NsUru64pd7$7!?vZDK{85C-p0XJ4Yzcb=(X%`hO}n{0+s`cu!TvNT=Dlng;~^^2 -z749Rxqr)GI{dJ8XC47|jX^pv^yz$VowV!WS`F1J(10v=Wr~v(i8k0JG=0D-EF@eC9 -ztyIim4o0u95o3yIUM*h|A$<&QOSI#;Ux~rYiLu!HV+vI}4bVC?a&ZC+K)1t$jp0;V -z?n!xI`ygw{t~HP4h2Mt5W%fRWeR$Wpb>a?d>{nUlb_qJJ3J8ab%Eo@-z%3zHu{B9; -z>v_E8TDQHXUyCKsiU63|K0*<+lSd$BX$P2S#HBMVjI_Pkp*kfyR3KoSd4M@Y^Upl& -z54jI%HFdv)s%+|&4r>`7*v1pWy!CPnV$ountO@mC+HiD(Kkevjkp=IdbTEojSsZRc -z-Ge$ye_KIat*6>n_Bz1MNUH~Fo4MZ~3J$co<8jSb6ElHZq7!)WVrVeu9uOl`J8Q?Y -zcV+HV%I%kz*{|;(?9qYPD=~j{+O`^d24NOCcLCxbQ*WcgN%`1*SM&zCxK1~*Ny1)< -z3Ht|z+4%@bjVPIR2n-VTFp*xVDH7}xPrn5Gji -zl8*WEH)gE(h&|(f`vmjR61}xI8LqfRuvk99C<~_pq10f1tG@D6Y$s-J -zWyWo+Iq`fo%QOYXLsLH*Sf%;RE})gARc(mxFq(wqYJ*+uLADNhH5eg7jq9klAKq5B -zjOz{FVO2JYCQQ1kpH -z`TF(0(AHXhJQ|a{O%Q=!PVvdlC&ManGDr_Z*SD1?|Ln{1;eS+F1%{m;M}n0Sq*P4FW_TMWHN*Wa|5 -z_zC!Ew>SWNg4B%mn09^j -zPrNdC(>lZZoN@IrzU5;uC2+oUw=@!Y67kcs+T>Yh6ov|WTHX19RjmLOQ#F>FH6CkV -z@d?&R1S7)+n@)$FMB>Js4Q80K!0;?&4yR0ZglaN`Cq5&_QkHf$wAwa*+hv;4PlEy} -z2Q3#9xHcU%9MiAeCbj&G11%W;@YwOYFAuanKxTF`*X!^GkdB+iQ*i=K&7i_J5MaUp -zUw`&TYAcDh1WubJOewKnpfYwIWE?$;hVJEt@S&Qj9oRGtfSxF4{Z)%_Ah-buoYe%T -zgQyWO5FkqU!%c6Zj`bY$R(Y{Xd9I>2ZPs1ZbKy)`NXu?9`~GWiSt~+T-Z{5TjHQgB -zjHiFB@ih=il_hiMv#Il&9%}_8zB_1IH_eWWNAVRP!6ypIG5HWLbyJ}AhtN@AGy6?T -zpOaShKBxvZiGcMLW}+XVi=$we{X-ZbR~QVt!MlX<>JeZL-X<^Fqr2l$_7}fX+!Lwx -zNC^3E?n{(%i^+8G-r%jWm8KkwmrOH}(0X2ELv&@cRaT>vchYKnwd!>OIadZUmGa#o -z*GOx+dQq`SW?$*6b^pS}Ss9jr6DBSb;`aa|41IZqtA -zvFWd|D_@~JSJ``;xI5={Sd(Oy`^R}8#CHIGEDgCp8~*tm^u`F2w=M)5-PrZo@ZtH( -zJ&Vc?L|1X`YEf=!v~$(H_bR^osoVzk(j#gx#x!H0QT3)Rk%j)s@am`+R?NrYiSf>uW#Y= -z602@;4<~%XjxCMCI+JA2-c`0#ay=2`JvoBB1y7X1N2|deSA0Ly{|_h8k%;8F6@&sZ -z{%o_{x|G{c{9kib@tH{TIoohrwS}eF`O~n`wjE+kJ9RVwW>Z_}_<%F|V^d3bd6u~3 -zbLLjNl|T;sdG=YwbEUSYom+&R+w7+)_8p3D6n6iqbwgoe+964ZAxHn=0Mik8F7ehU -z&FDyVxKPI$KYI{$rK^D1&wG-77D=KP&$AXR|_9EeA=7|WaG;B1-|m#)8)hk -zu6(sm3Bv#)EEV3`xXebZXNo1_r%^j@tqx?OqUX7yueuz%;N3Bnn_r`JUg57{|^U|JvNb*d!BFQiww{35&9rGX1P{rZD`( -z8IsL4o@wL=r;(#aUs-7$JU-qC5OHq$kK73Eoapite#<8$FCuHu8Sm+W-TZr!P@}!0 -zp(Sj*q@xx-l=hmnq(^aP^EWX^HyrR7_wfhpQT(9!fg-$Qu%qq)$d?Fw(=WWK&8>#b -zU)_7Z;#WYW3aLP?xhZc_Hnzp$1wQ4Sc!P=HE^S4Ys2#+2bvuI(ST)|Pbss^N&zlS| -z|LG^voT`^nKCq`!J~pRpTg#^oo2N0Ztbfm$37+iSLH|pKLHb0iV1!}{%=iJdxoK^+6WK@RA3|OJU0OGUE>RXu -zK>F!GH$cVw-;fs^8uosl=*h=(8yI9NzT}IT`h3z#fH~HhJD$=OAxJvzMsWY^J!4g8 -zdC%C?d%b7kKtHRcaP86CdnR6Wde0;*Q5DZRu21ouBBVc{F!E|?+v>Gl>(@WFe$8wB -z+M)I9A+A~U&I3-z%$SOd;2^7KjZ7GxOj9+9-Ydm>H!4u*SyLt6;>BCFc>6Yq-!_Z4 -zkHp&+@fH+sHRA0vItFQuf_EjN5A!@)KBhR3TtL`q9n?!V;fdBn*_fHDE52Lc{n3ha -z7o{6GGYSKa*O(D_7y-jdG-A{*Q8rq0>8QOgp4AF2F-y#`%Zvx&+473Ce5tx-t*M=piDEMN>ez$5#vBG -z0cA1dj(@^C9sIiibqxl{;Cs!L~K?9vMv?yP%7XdW`g|Aurx{~C|JBjKtZr= -z1PbECK|RfLTX)6xc~aD*Vmt=ln{OB%Rl$=yjhe8|y(>uHP)Wr-di^J=1!g~)UdRwg0tqD8`67Y_L -z%FZCD?A!*GotwS&cF51JF4VqvYKG -zP`WyblDw5k!8B-iSSZc@U@&zHo`Y%qgIVm~Bj}o7`Ts~vv$+33ljKs$vqP?#G;R0M -z;hP=WcXVIHzWClRU{hCxTmvYhS1bKdSbSXX)w}om=96KycBk@wwRf{Um{lI^G4((- -zUoDBx+Z{ -ze!~}1XK@DJ#w*JLIDO|PGS;ZuQdn2TxTsCFSn}No5h$F~Ao0`@QKSFkXxUqBVNaoFp=6TG#mu22P(LAr2H%I0Th~_OY^X`^;H$?L^L>&&*c$vmf{I_ykE~Ys0 -z3KU;6Ok5@@J~b&q*War6pT{cAvfdgTW|b~l@-eRk>bxmlj&eyL`xPCG8wLUWbeqcV -z)|k|q2>W4^5MwSJ4*etk;Z6h}x8@!YzK%T&U5FPXni2^!IH9ZX7w7wt-})%Nu5Ey} -zxqe>607ts_hZX;$%)>)G{Bnrc(*Xbh{L{FnhA$LFA*Irpo7!A?vZk6ZE*@2ks -zi)6MVn!P_J`?m^_eI!1TeLN<6hs^#@H2dS2>oqle1RlEa9Adi)J8ar}YbCp3I3mC+EZ|kyC%_?3`a^&XH(Nq0IV5W?ghn -zbo#PhCbf+j&fE3pxb -z!4w~~X7=gX+rJ&}oGk3@1a4FOmslASDt^$+MRh*}a$x$rx)f+^m*iGG>=5{BMrv9P -zcm?eiqWpQI7Wj8D)2Jp04qUh(hdR}KQ@o`=S|d42PjA|ZC*mU4v%2o4?*6k0&e`V+ -z#L$A+SOwtucmw@Luiun9Cwm(Hc%V}8^#=5J%o0J_dmGkCPqcp}8=0BieH~hQvb&3(r5DVS -zM!);8F5QdhUph?;1f%*FDw{8j7rv`*{nq77r@!v|wj24vj%=FPVVMVtTYI5@xRGs} -zril}uh=6ItkY_fq;`%f*)J3Ut8m~;|wi_y@(GiMa0Nqin&6 -zHh7%u?m1&s7Q6x`Fig{fpiy+}F=lN5Ns_rR(TYO=NzMmS{YGB8uKVTqk<{L4=7lV02_=FO}KPMYCUv$#$<3Rzk^<+#|Uy;>MW|hTcIYriWGHZTJRvVGk&OF~?YQ?iU`CL^!04g!>>N1z}LA9e& -zuIJVfs-RTQ06|4e#X3*?h~fR1wL)%fDslfZ1}gU};^C1ju@d+?GQn7yWIBMDo1 -z8Io+vf0rQ*=QWxt9bM?~G@fXb9x7O;$oiG{$Y{{h#uech^fQkDe$Au^kQxu4M$fEQ -z6TzVPcS6Uaa|AyM=Sl*mSHyy}K#XF*zcfhYUSrHDwjLwy;6ZEP){yIApx+6!gvJ2+ -z=jq#p=HaxM2SI=MA4O--lIV;;&7xH)MwG}{j69A5>#~G!1c=*)&oy$ubN -zSc?wkCZ6#f7Bq(65>f -zwLwrjeRxr#w2}#$ogbzW)ge=>56;MpwKVW=_li*%!y6bgjSu7+yHCI$$XY(&W=Dg6 -zK$Kaov$)guxX{n|235aBRcj$*N(i-4VzGtYKLj2&XUI5BJE4e|!86CwP4O*bVYjqm -zA4;sjob2tyV=3jkih`y6cf=l%?q8Mn_pPy5oCU*)OCS~@#`umfb`r2QgB5V}zS+(v -z_HN%7pGQZ*fvSDmm5;|epO`ZLQ;TB?ozk=RO>@rrZnkqe{XRiRdb;xdX`|a2^je^6 -zuxG|!Pol5T(PhV_5&0U&Cmz9`Ez^VW!!L~lf2s?IbN8z0^Bar#s!U(;H$VXg6!zBl -zabFtoztpLf|D}A;sj3l3W_{f4?yUhK=BuSDCjU)(f3I6DB^vH`>WtR*58lJ2G^PUT -z&M+({EmR3kkdfjjs&PLwzY%xW^JXaz6^U7ChT$-S*geKnG~aeBi=VZy -zVf&iMWj9=n#Aw@cXonbmp5=eC2)88#aP$u&Z13jM>OiWHN}<`js0EtYq&v87%Kg*+ -zxVGCLAG&vS`omMwVR^|d!4{Lw_bFRlPG>hu-Lqo8%=_^1!VOBq*ZIR?;l%oEe}-qj -z!+R{;T;x`&*9AHvltk`MH7$3C+KI4&!@tWNmt9d!-8xgLUwL|m_n@`fbY3m}U1_^t -zKHV6!ccA~{v>nyL5ukJjx3vI*c1ulxgZ`4)zaIQQXkWl0GsO=pOoy@v0K&T#tm|u_@V$ -z{FVEGvm0fdm?uQ$;IrG~IKUG`X7{tdbl}SZk=X%~ChCgY>)o6pWqe* -zejNG3=to&vp_E5lezSkeG(SSSq;f>hPTC%L6mVZgttP40uvPK#7tDdUq?{e!=?Dc)J7mcW>jxtE~OCoAYg{h8N$u0wgh+FA|QZF|R6 -zXV=!9S_1oK_+r{ky@7pm8pjZg*fw{5mMPBg9?z4GB&|kG;SKCWgnQv{h`kV%I@3)j -zMV~E^n>BQj@GP~Pw!6*|P6!m*Y2E0(Gur*Afp3BI?2uULoF0S?#*Ld; -zJq`;R<9~1D>VqFzEz;>ELZqJ1GsW#Q8tmPBz(*mU(HZa~DqU@ZWC=vqKkqo9aZPo}zJ8`b(p@`s}biWE}BM=vVF*Rms#} -z*1pc(n)$WHT_qHU7#;`#pX{imezc+R2L(o*DA& -zs=cPzkr?QR&SqESex)kf4jM!Dj?5im1i4!k-*QyZ8E@9T*|ou}L~XCgG+judoteUu -zM8?{HpXK&(!C@x3(FMaFaGyn3Clfp-$U^Sgx^D4gfdtzEa4LIkAmo!%(gob=u3ahXbEe@N$?-!54*&C^Ev%zSxnJU5n@mTCqJKmfL9>`aT?pZ3~6k729d5l=7W4SH>6YAI!0ON23+{ -zHiaRt6aW;zMbnRrCb^R{{Tkuea^8fl!lwTuf+P->rRfHwrPq0w>Bl458&zms; -zB3;zBN_l^wy65n29ux5=N~t}SjoU(%R<%c;joS{$*DLM0v>~24r2L0THCVI?!?Q3#@L8YHXS?A5(mYq~ux8FZ8yW -z?-Xdx$MfFIAcl-h)K_rXH|TkMBi+R@25DPoX^Cp;HUBz8=sn`t&P%-4;LC3f4@Tv -zPAX>7;wFwZ&6VTS_H5&1>dyRW1$&oFSK9^(UDy}l0_hG}_z%!JrsHDl!8|PkG(|f) -z^A!Jf8-|CWs_n%vWelP07FH|W!EiT}wq87o!gh%fupSahCL4k)zGpcBgepe}6<5*JMItlT -z#dE^LobVm5M7ETl -zBX^I5uy+vRd){iQWY7GzCG2^!r$s3PX~o`2{l7Owf@BQSiotB-JdLFRNgVv2n~IBIJ76^eb`7+DgY_ctd{B3#c9 -zYQ%i5gZljx!q;q#yIt{xn%OtLSb$=&01Llwj)u!b`1cXCr}o7x-l0;ewR2N+YVShZ -zx67~x@CVK@SauVG5QNwH+0J1^@ANiL{60R2n?RgDVvY8{Bh>+tLjUH3pr}t%s%IXG -zwY5fO1Mv|bEQQXZb_o6{r4O+=5C$6XGo`;Klg3!3eE`^Vj>4+zmG!)+YgyPjK~hu7 -zf`N?dM>{-+;^0Gg0pC^cVx$lpEKZCOOy4;I1CrR~=U}kLjCu~#GqZE67|;%@ -zpt_Nf>V7~K?@<-{O9P_*^o>`M^7eqp3S1$2$DaM_zFZPWybuXyBVNn+vyg|w)njjF -zY2n{%zA45y!$5OPJEU)c2ID03K*7BNLDO3_BAlnqTTo8;iQ215~|!>Nr1bC|9r8e5yA_g%aQ -za23lj3QDP)lI6H_z6`$^S?wY=ioE`am;i{V=eGc{Q^x~y?22y?rvUdWzT5dZg`Zvg -ze2kHEKYkX7x<5bTBnXa7R(u8gigUnx?rx1f?}$l%(-wW6&d+^C8GgQvpVRqREEY}h -zb2dMV<1$Bl8yD?T0Y6_WHX}k?X4mR{>15X?*o|({`J%~}3$FOv!3A6!ArEJ!P@(ch -zLzD1#WgE`&=><#<5b$7H0YLkYv|8#1Z>MkWZjM&+2~LC+RBM|?;P2Tu{TmH8{d8%h -z`d~ql+o&w9Qp)!mlf(-s_I=E-(#vZV={BQSJilI<-qyHPJimeT8^!Z7q{IJT*}mOj -zt&sx&(Bp6P=n#*;(j&HJ=6Cc^Prb1=8pq)Q<^Asr1N&@0p_)l`9K3O#`9751Gq-B> -zFQ0Ctan@&SBM%t+iiASJRxe5>Nv^aIXHgU^`m -zEqR}e{W2WRw?iu8TTIDwC*&vcOBJdPDT~Jv>dB8c@wMVhrNb>hA^KjN6f57Fc58KN{rvrCHYpad=!xSqN`A~jT5%PY9@{z-5WLl^iBUe8yNO!OnC|F#Vo8@ -z5Vi?ccLgYss|2<4B2at93P{BQm*PSqFw~A&7hAs+sD)-cFd6|iM&LA|ZsA%<5X5|# -z!7cq!ey|I(1OE}WXL~h~rB6g}jnR)1VYK$xCM!^%4g%smKCDJKhne^ml`@07;29wA -zL-BlOrSTay-g&Qis2xdQ&ZCrSbum3n2yQYw_OhHpWopF{!%*n3o2N@K~vF -z%(}b$wQ75|DKz -z$@Xs@;k;Mz-!BdaS9YimZjf1aITC615Bk_Y6cTB~;o)`2JO+ng{bc5eb6R6YG8;7?`C^N-?@N39>?nVge7dX<4|CP;1X7A@PC33YyzXF}I_DtE-JS -zXjB_;C>WnK$@$xWv&L8_#9b}{kAb^N2+VpY3ku`KMBQuBRybCOIUWPl0v#JDOF{1g -zG#>o3O6R{*yib-=r*-z&^;juH<$>X@HhUER=YqR-Wp57@gMW<|I+~k`OLK_;h@4N| -z(dp%Pa;Fao|D+{e>cFC}Wk;uYA4dz@#8~|mtQ+KV-pd$ZVHHX}QbO(akOg}}ib>S0 -z(Jjmbiwkf7x{@lJ9K9TYkdb(2no8%-l1OWco?I!^A>-X9xucD2ddkPhH}K7czYCG? -z#v?F5>1W19XF_S;9b$6OWTrhbX?}>G0)tAVTV-Qc3y*WM2;D?T$#i0a9sB%GqC3Ul -z@Nh&*@4hr^J(Op50OM^}+w$AuDw~i^)O)l#Gh&BDyr-jLMjsEP@98#puuo5s# -zMFRZb`%(XT7zpcrxuqOZDNXS;3Y7|{=~$7V+-X(s!;ej6+dWsL+FM&y`$kN)o?)!W -zk%scAk@9WvR2?WT=~Gyu_Y9~M*oC(SIspPm9kO8S&={oCWB<^f4PB0hQ_eqn%?Xa@}s -ziSl5UX;<89ReUdDYWC{)AL7^%l;Xdpi64j2W2Yu@D&R~Y{7bEPE6i>E1M@#a%u_6* -zK6ZZ6koogqvFDAZ27$f&yOhP#fgn~29aES7)Q{}u3A_fnJ1clQGa;E_RLHBW$B2bv@;7o194K(1zkwkxka5Egit*Prvv^3lJK@Fb -z4FN!Pv+3Ln{O>RqV~S!IIHFGSQx%^UCdFcjW(X6;H(wBhzWq*on%sO22vy74O&!>3727i=|I -ze)`e5t)2jX{aWJ%7hu-`sVUuf&H{XlPj7A%yXo{^6Do$dAb3t@?|Upj#(M7nuoWj6 -z!)V>14}thh;67^SABJo)xYBt{PpyQ|-IJ}-hwX~<-n*NT&t^HYcLNL%9Vf6xo^0a|TEKQ(=>g!|i -zo69*u?Wx~MP#EmtXCX>8_Q~>IQTfR8w=#*`!^&5qR59*?MrhZITk7C!=Obt#9RHX7 -z>|>@N@L-Ag>A)H2|Jr$S(PBf~(RtS$#AA~<6yOz1(yx)_uCVh041;wRbn8>%;eB+jviKxrlE -z6V?50iw?HlWR5;j&UX?yXc7_A$G5@8M7jYjjmwD}o{$}}i -zuxRockFXoc(za@KU=jikgR(zQnK*2y%0 -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 -zZ<7XlnKaaF3Ds# -zgvPR{<3;Au`r9IPtV^4a6u7fQLYOwv-e;&w@%N{^fy$yj7g-{d(9#MiU-n%~srtyN -zAjh3~YvA&Xmwh%PTxJXS>PxgAc%mfGzkmoxCi)R>7NVH*^#s2)Ri7)&+8ioITj*M!*V*_Rb -zqfH&_ZH!Y(yp6=K=Xe|A)oZ+s3G74|-*3YCse3muTp?kAJ|p(!{@9oCu`feoU;5L_ -z0JBRuvP+l225oDSnS5pR1O4Kd=Y*K&hKb-V@W5_lEQx=R#okZMRn4mE;(ye-`fzgLT|>t{5kezLF~)pu`km$ -z#H{KhddY23e1(mzR<$Jhfu0xh+&$*m8S~sJ=GhVRY>9dPeLb4uRlV#~IIR1K2RJ>! -zPOoiGiLGwCmgT+o)r;3^Mcn7C`#p*TJ2i(5v=YcT3xY!|NHuWzAk31Dq>$gjD2}K_T}Z+muJ?+tna*aqDydb -z6tlilqaWzwW1fe_JiB6^d&fLy#XP6SJg2UU?AqLuxbN&J<+W9iT?$QL9>Aeh=kduZJI8(Y5H`5{6~qH^yz{(*YD?Kgxdw_=b4p58$2CQQ$(v*kV8jb -z;L$wIourfxjBH~Btz+)ZNIAwNEy#WlOzR&u;pJQOsURym%zP0<@EjVtll1z-JAP1} -zHo>9|j;K-INQ8~C@i!q^y#;|?CP;I*>rQ|sIftPhWQ&r0*_{OG)aGj3*IxR+8R~;3 -zLp@VEHGTh>*efp*sbjo#jOP@T0gYe+B&M{z(97PPME8x<->@X3g_om7W{QL88GTg -z)(~*(DgN#1Marg`rL@{CSh9a03DZa8m{$3nX_Z+QG32OShycpnG4t}^Xp{U-#{}-U -zE~c#F-wp6ue{m~X#|3v%{Q-T8a!=vLkZGM8kt%4Nfh9BxMrVnG=BDG~K+ftT>4>kg -z;B5 -z6z!_x2r`98H5|-InqznTOT-+TP4|Aj7B{%`Q3;=4M130nmU4klu9BBY%u}alhfNag -zcsZ-x%uzNCFU=j{OjlDm58Rvn$B$WBo?f@hR2ZlhrN1FYt9y)mQQrIcCo<%8mz?Q> -zX=0e}_XFZ~n`#+mkvG=4)YrNfO#AaqgG!;Oo31RrCl2x_Uqu{WKBp65yy#-9&@iPT -z2WN%#H>efwuZe5r)kV6MoeWirOAD|FaCzhnTUFH?wyAe}!*NU0!QQZ4z116zSG#({ -zgikwAcLgrJVnI>F$q6BbFUra3Jvfsxt-JA`GApD}&)ubF28 -zNK{9|KlV(7nw3|AOq70f4HS!GBDT3YNPO%)%!v^8>WfjTzMgB~T~slvU0`&Hf0ue? -z?vB})6IePKOtM`FGX6uY==T#tV9df@7S4BXbzEhg4OU@Y -zjzqQ!pQ}J=@K(ln*1k+!b$$SLIW2|@c)#EE@RpW -z2G1T6JnwrzB6WWw?i$>J#VVnCmguh%wl(aM$XJArd(`1pgSs@r>8$I(k{PGmCxv?6 -zs&HgOz4;+;kv}M#29)MjyT3BGPMJvGBFRyy-hnP-DF%*fwRHyFFLe-|?pI{8xp~-l -zoiI$@e6&!ITdgeq4qM3oBJUzSUAXY1_t6rGtHPJQ5Q7QjMopvYM`>_@Vnq_ -z{{=>4K&$jWcQFMpcTx9^1x7f$w&Vr&u4b>>9~|$@%WYH>0yA-v@)DS$4M^bpVYQt& -z)ED1rD(f00&8<-34^st%{*Bhg`1pieNTajCK7Yd8`R53G1}B-iEZna~px~!}j|O2p -zgajRHR7*$Jcme*WE~CUEJ$g+>X^%`bkMfO7$d%CP-v(~{=7N(`C(+TZln=@&8|(-S -z&!ZzQLh3F2;WXcQgv{t7FQWEef2BT%Fb}O{J6ns`i5PXS6x|zy?v?0FRHVlsdqC?= -zlvh`Vdt&#cl7KO@0rM%8O`U@BYax>@L|zO|G9E(wXTA&Z*SfDfPqllm;xnZ9*9f%~ -zy>34I3X4*!-EW)o_YW#v_mZivHZptH=!Uv+;CQKufTM;e<~1J)jv1N&5Qu!iGZdtPHHFF6x{11;#F~Mr#aah; -zq*7=Ppr%1dd~Y_~u@+6>o>nVNVSC#=r?;|Qz#go4fjvNFX#4cd#6Ihjs3Os>t`~Bv -z>Q(;G-2CM*ETfm_X^ikvq1O;YUAK_suNxmsriFYkBG~S;f=<%HB)Dx6@?q)(HBgL3 -ztEkcED+JJIaIe_^bX@>I@MtIIFRpHFZw-HOG=JI`!?U+z{%QlNvjDPO_Q#RRHks@f -zPdlO2vp=y?r&GU#u!wd@t7b<(kFScEKf>_1n$51L>&^Uu@LJ~cSa=Fugo+h*Aw*02 -z$Xo0IM?1u|+`_e}f7JHE96+n4k{$dN!7kK*l>_biQ!+bUzk9ydWHoG?J_Qss^J3G^yzX=+;a?7nk48 -zo^j$O;#_kOA5!_vC_k!I`PlkX8fE=Svi|ibf87Pk7ntSS$nvXDKGb}n^3%=oZDskD -zC|?s>Uiep`Pu2iHc@&B{iedF)6wlzRCGxBP<}VTc=1>=$)&WSCjTD51dIx~Z9q-+o -zG_HCrhfW{iOu?IR*BvqU!PFmG(9JI*{?Q$xTc*7M|G%0&n)hw#;4=+)L6?6(lDwAOY(_-tRp-|be -zD7%!(*6q?Dhu(?K_=ZJd51QrnA${5~#+^Umd9rx^4bLOQa|51BV%s%^*eir8S{xed -zDhem#`HEptr;3rnGo;-q3N#Gm!s&R1{jTU$2KS2l%l-Ots2u$Rl+p`jtA@r@94O4f -zY+f1DiMPxzAPpOelqEx>mjL#_pe&FVhlP4Ew>~}6dYU;W*CTxlrPnQ`xBhq=h_}@d -z|C#@{^?C|lrktn8)0)p&uP0FUry-H`nu_-?hn#o4n3~i-9ui%&cZWn5?TsPPMf>xR -z^Q^;BLFr9L3y%(oE*jf!#VE|yG)32I;E?Eg-8SSx>*XAB_Ih1BC -zgM-h7@4TkydQ}WQ|9ZVMICi~W863M_Vn3E4WB%ZnDK*`MiTp*#zx%@ZFCxF+h4WuS -zewPd9uRy+4_@DU)o==sUWf=`b^-E&P?-c$>KEU&q|3mrZqWl^>KmUIy|A;7Gf#*N| -z_ww6#{G$ABJm-jK29V6iw+{aHEdRa^6GW`yn|(a~LI1VApLqO(E;yfukpIDj^SO`D -zUO4|Z9{+{&Pa*$~3+MCvWe*a&4bRv9_wk7J7v(K4WBddE59>dW%O|4zmj7Np8D*9a -zykLJXMgIH?=XXZ_-2bJ*W3XqmC -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 -z8+xg&;X+Sy*O;gJ$$!S+pDqDX(J;!Xj?3 -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 -zEUE#BQ8*im<;AzllHKQePPziw$fH^}d}mPp -zs-le!qH%R%cr3exzip!CcRj9{NNE(mYls83$eV*J!{Dbic-glfNkrTGV$@Bvq$ -zVwUvd>AOgJO!`akN*T;1^z0i{W-`oT{Q_6CZZTHfhiv?H_}wffZrXNrerH@a;x=!i -z`*6IwB_7u1sQ2aQ<>|-W=Pox^{R*xNK1bwABt`38m3nsaZD$u0#6ufHvwe&&Q5vh7 -zP&0LIq;H97hb~l|1^vVe$p%tNPC=rUm64`o->?`|beBvy@|2-(PwOULu1`^QY0m+| -zg%PA553bL1O`h6GclaEJ!QP*h4EF|u@8!1E*48t7)oGp -z&bu>xSH`FK*lz8a{l57od`u{AoA=O4e5~>0`yWSs6gllh6F#k|T#7UN`ollBwN0xs -z{guRwbegBgyT*jdINXQzo~=dRD$@dR$d|ac7*vOHDdKsyImupR>q -zKPf3FKnCy4;MSc``l7^Aw@t~xy=CzJ6ule4@+O6^qu68LL5*f84yrOO=2`3Ki(cie -zHocFLzi9e9f@-QHK*47^X{`@!KNHVtt)bZZP5RSnjBchk!!Q_EAHK&U)$YA< -zDBWA7m?rWqho6VCpt1=y5x#>tfW##)X~KOI`{|6!d7cJf7of~xIXo!)6A#c%AEKvL -z?jdx93)v37@>2C2UYzZQRpQy@GzM-}$Hx_(UGhz?XP_QV8P|=4dWd&ljCcB#LCK!l -ziX#eYR*Q8bmUDl4ZTfNFQW~0S7MlM-G6ds#Udw}_h^u)+_TXwTwN)3rpVyfCOscRd%Te|;+#NcL(II-*2G&DX2D^TuhHpXWL#f#dVdM@F9 -z622wf+=@)4Bht5q(=R#nGyv(crXvV3#;Ugf?VZj-Ki?}{Z*w9Jz2-gm+6N~y$BEEX -zy^NZZ+5(rV?bX$@RlZw!#N=t3aMJg*VW{_{5&=sI-%O%vjd6ADsG6~A6u+*8G_5Hj -z>7-A-lG8MZ$ywv;gYPl0<}|LhvQMynQ;51AH&*S(RQn=zP2Z|kB95OrY|7Kh<0f2O -zy^m9b=mhD=) -zyCy^}vhfjn=b&KzSKh#=6)*-hCP9R#7*T_$t>|^YrJ)?bI7!2^VgJM_F~>l=(8lTb -zYKhS1#EI{l7-FpYF`6P7si(V~-B=T`d%#@Y%)G3H@p?>_uqRAB@w`$S2f9-c%`iSRAKJyX;x!Z8L%jPh@4SkRDQ^~uAYl?BZnGm -zZm4Q<{)mroCjH_+c?wr58@@IuvymCaZO@iVVBTEqf1kAap?WxPi}H^jz^TkT48Q)y -z=HUHvRo2$FN7o4pNBUd2V#Hnab|tQz?(%j+QOBDk30X?z#A<9F$U^tkez*JsdHG)v -z6ah&`H;!XS)Zd>5rI4C!;Q}vS -zs5PMhlP!kus{TRQSfFbP$*X|oIDJarH+Th*E^_7Z#1)#6>*EO`H-`{+l6jmY1gtjU -zBPsqT`vNw^ -zVrRk3-FgH%O*w?%qN!fr{2J<~qwX{f)ng6Or|$7RK>&LX0ABMDh{7h;c@TIFJs8*DiuSG?x>wo&0 -z9!lGbtANv=L;^`~0_#VSuoRweIz(#&FJEA$AIAj~ewp5eGve1^n^tW?^`@{K+r!r< -ziF!V-UXg$m1`(%$hdjpBZ-^X`8~D~;s|UU%8T;R17}r@<{DTHL)zc>5h-?|{1VZVGsKEKAi`hG0H_BNiwV`ul7T}-|Ol(LXH>`IAUBr-*gZwHCrZ^MkHEUYMx}~D3m!E3S<&H2|Mz%eb)~Pa@+U;-c*bd+|ABh0 -z3L~#J9Z};X4wCejBw^%pDDp4jj{Td+pYEbt8W#ECVB{}SkAujGg+cp&o%2rNIp@@G -z#Z|<>h87`td_jFjhS(lSZ!*^GOh3&@MEY@PLhORP58WIe))f|0SD?OrMAO$#9S-&N -z&GJ~7GoA>o<>a&X+14^s!Xvw=al1>hk_Ik>MB;vq0rV_W$KPd)wc`soNKJ{ -zb2=YT(%WDjq|{+mSt*6J6CPHiAv=`X$$QLy{~=ULu}Pa!R?1oH+z-oq{c7e -zFj37k8n>qp@fQQcK<4MsE~qPGj+L|z`U}(&%tfd$IXKLDX!GNsTeF){4 -zf9+SKD5J{st0w7pRL`>-&)MV&WcZ@SbJACs@%g4UPN7>hLAi&5`FHgjWvuF{3r?P^ -zui%~GC!JVl&F49W0)j7Dp=-q77UTrlbq#e6mNl!bQ+)WMy@v9|jMFFJ6O5-J -z8NEKZ!dcZ>sOkZd(1hbc@w^;*+qT& -zYYfh~gTI6s_ryt3(o>t>wifx5Rc*XOkXji$%jC7v@yUM8=3^oCK9}H^x|1P~bNj%< -zeq5aU6L*2+ScRT%f$F)m5eGY6iK&P6Xg5OGCF3rXLFq<;G5lO8={$*~80y3H8}!`B -zPZ-~?T)L44ZQxJA?nypM-X#Xy5()Qp*GKzeuTk_c%`_^50Ks`km7<{-olrJLrq_-N -zzfZidmKWh_H8xuEbVJ`a*EI3lJHho0fA4{G+NZcya0$zwB1k1QT|-kUUj*NQ?z(75 -z{+EG1!(I5~g=R_Vt$UNoREsOLU3xkM+Z|8>+Yy{6-fDwKE7+en{~MbAb4?v@DeX<5dn$scyNbds~(EuCk|H*6k+ -zar1Tc%I*|%3{L=cb0g;lO^v#YSgu#T+~A#fd8B(obo%l1+Mu@;yz{vC{~~tAXj6A% -z74EXoBc&5BH=s-n1Jm2w^^v}T(Ox+QRVYr30Y`T{c6K?$rS&wCXZLW=H1afsduEeo -zTDa$(Z2FdG!z4457O-pcBu$4Dh%nU -z=vbA-(7>2d1re?aML4p3gx6t&^ttZSV1&5_o`#aw+t49O8lB!>lqu67YTbS%$~!0$ -zw^VMzl?Up}n7k3k2Q5&!mCk*To3`RsUA9tsfS>p|K8jLl)gaRpOLDLtR* -zb2B|EjHK}>k5Uy1^W9k>6c2b#dwU|X+}XV`cGTnb4H1l6R=Aex)pMmqNWQZEiDwQG -zmq$ubdUiSA51lXP(FPW;qHjlrzHQsx))uG^KW_*0iYS=4fO`Wcaar9k+UKq!+Ty!g -zH?4=B6Gnc&Vvx>%B~~Tj2KI;V_j2`$;?QtsZzItkC;`6)0r?w~MmxV=U@q%}`@?Ty -zCgeT}C5+^*k;*kGm9pUK$DCan_=d6n6%=luukg^?si{a`PM`s^#pxX?D$i)7I}RgF -zJ&bPD^N4#?;4{G0PuyBkCc@mRzN9Og2Ix-s9@b@`ZsyUZ0pmKmDs(z$6BmUToR}ZJyE=o|5^tdi`I!6-YaCMuA)>xy@*2xcN>*cXkwG|JM2DI4VYrv8(PlsFmlIOT{ -zr>Ci+EAA59_R!_9adz%|iyyJW1wM{@8!DHqD!Vq7PiZdW1|!@F6AkBy$?jI;2VDn2vG -z(>K=Kt5f5g-U;J0PVtE-GpzE@YDEyi|7Mq -z_Mz>uC=?jRcsEt;nl{pO8-KZk57=fUEpX*bW6k}#+<|K70DPzhGY>As@L`r=uKX3R -zVQ7NnX4D~-n{jAdCs$Ti`LwYnB3qJw%8qg#aM$Zy&**?Fzb1H)MvPAt`%+hy#NQJ+ -zjgbVt$FIA>e0y28HaPPywWh46#3fhTjZ;Z>l(4EK65o!SLZ}7v?d~VT2=C1oLI2(%{so(YFnP4Q -zRWGOTIC^H^g711U4ABh+yNxSr$p#Lysq1me3lML;R0W)g2X?L`Wr*TkTWHhkB~ -zXYG8*H8FVv^Nma%0Rv1&BGA1oxE&IF#CJJZn#YLu2Xm~b~~s^1VEZ8@&mIu9Nqg5ogRhR#ug8;0nZ>p56L -z8ykk`ySf`9ID+#KYCg;uX-YJ{sPK~miQZPIyu75wq#xZau+VbzQw@2rKs}MPk5;3} -zm#A9?g7W9llFx9}I^5s_Bw53XK=zXkr8nVQ*pSaW_5GLNCa8EVZ)J5zLB~^ -zzP#8GYPvdn8QIawUxw8d%a;ce+GdC&&p0*qT<{FQjALgZ;h$Q>eGlJYAQPml5U4zm -z1?Z#NMJOfP#}rC=G^DH^LQ?akYiPc!Rjq;Me_W(#DOou28BS+*dQGtWi`R~F9 -z4ts`}tuX$Qu7}1bJ=gGawi0fBla}jCX`KpO`FtG7oL4)mn`Gy_qIZj~(N)pLocXSb -z)+l-OU7Wvi^=Hlp!sdspONsHjTgf5L?`d6wA%l7Q^4!GG<&A+l|5bQ+j$$y@Tt9@0 -zFs+AfU@%g71&?Rq;Xotee|Jj754_D|R=Esp{Cd7;92)_Qrbz#O?b!u|SmV%9I^%SF -zQPMRrqAkkkDZ)th`Kx|a+2RK16!*6Y^%Z_Aq}+T6&#Dg6`=7vUQ1XEVn)`mrfRH|- -z=GAHZU}}gz#?z3Acp4I$Tze^zrPK0tPMv#WcVkW6nSF8fbh0m8e~Nma-$XZ+dW1Ma -zv9sfCps8|p8^5fd(SQqTV|A^2V-I6ZZAX0`q%s#3oZ~u3#2W(x8YzPnGJ0RMXREWj -z_XJ)tR8UC@qC+6Whwno|okpVM{-RF4)qPPf_f02eV1x+~{^0M04dgNaN -zuctS`0!1S)>9K0)6uSG?T~uNWy-XiV7u>sqME#J_-gL`M9D9vap1>=q1|Zk>1?hX% -z&}itv#_D?a*E-&xF+Zfu2%ql6yo8V6=J$Jr^)Fm6u^6ssNWBEMr59hzQ2*?PdjTk% -z^6ZkYHLf3&n6beb9f%>@7U0)9)7hvKu#}?qScuYn=v}z%?Ups%cCB{ElOxk#aODV^j4bzcrQidC{t~FL6`|le9%!&JO7y15y -z89iPwR!wFkCz1!@)!f^;d?*p+Lp@PGbOp(WIwPw5DE*G4-+SrzPW%P@0p!XAs+4g; -z&dTUfDW_(Pt~AJr@EZx?62NHrTKJ8TW8pVez6^f5%aOi2yTF&uhEdcZ9>5a)Nw>gn##`VSC!D|dMi{6Q -zBnJnBQOPxBb(yr!+l6*m_Taji>q%DiRrSCN-@aj{?zHrL5yv+4I<-CUavUWd!=-V- -zJNs7!{zUvdq@2}xlHS{ya&o0F*Pvdt6+2!Bf$oQ{?O}S54xZ)qzai3U|DLS-hh)gp -z02E}RCTM5RW|VOY{RA?QsLSZ8UZSxoU9eTk!v@IG*Qm0XeY|ECg3cs=B8 -z{7DSFn$iQWmg9waV-?<3_GjbG%}sczUFqkc)5P+8nvr3AaI}{Zts63^_e5vi8SSl? -zuSN<>_xK2E}kSEGL~m;Pp>b!#WaMWCN}J{IlxX+5q+WFT%!;cy!v7;f#F#O{_^&4}d~! -zqh~Om7kVf+d+^Dp9!5_zmqdgr%(H_ON%KoJsL%$|93d#EKMoRX?$_3l-%xte5O0$I -zH7G0e@%o5P$R -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 -zU4Huxn>&YEdrAWM8;BE_nBHQ991G -zYBi={WO$&_n}QkPdCH=(Xmrbf;z40yqH%g>el$Lj2J{9x{MJu*0?%T){gHH%0LZ*? -z`TZ?fyo(#B&<(ro-o3tiTinNEAg5`h^7I7CD(`~kJsN=`U9P|pPYmfAN!2rI!Wx7O -zOH7eB(>uuEd$0xfiYN)I$%K10#^n=ExQ}abkRJ!)SM3jnnTwE(PPfPDjhZJ%HEG7mFn{!M6~D$P#?!K2F{ki*b2I -z@XI6Y_rHW}CF+b-h=P%fH1+X4*J50L56gN{eEp`V4XUR;P$v&So+G`(4Za6X;F1fF -zTLkjBXRv7QA8|jV50q{wU`F|#^8?BWNK3^UiNRi|Fv({>5v=G~h*kNE0U~x=O^LYS -z1+907D8x8C$_wB4p7uBQ)$sbw&jEwv-2=@}-N5^+!tr&RioDO^j7gNtX=u(ohc|Wt -zU;47yhQkOcvuU5NV8%bt5%Wk3+|T|78tR(W_U()VKyb -z&wd;*t?e+O9|0qJS%aHnx(QR&n)~^gHm;UZ!DH2pxNgE-E -zImiTeo_|JuW#gFnBpptk(>qrzJWSp%`BX3UYR!1U>E=&z*1=w -zKcEOph1y*F^!ZI~29vv0H|d>eUG5zk_*+94224DixkR(dZB&eor -zAQUEgp&UooL{mQ)PW`=GR^8wU+<)encMB?mKi4U#&eNnA=8T4Btr$+ay7Nd3#x?wN -zwU4OETO~DlxcjGE%9uFzHCl6?b~Ifwz*Hx4nnCKd^MrzK9@j!OuD~a>A4T`{y8QqZ -z{N{-xsHa~eKf!uKsfAi!9qT_CC@ac$8j$jOzd*W6#Gg(mX;_VV=LlC0?gcXWTJ>QP -z!7kqb>~i2*>L2Q1HiH%gsbL3ND27diPLwK$oe}VE_U;?sEqHuai8M= -zqRp%q146EmDzED$N~k%oNw?sV_Ic~P`~2^<;zeQRt(PlS^kU(s|GfL5wnhlV$*o*k -z)xd*(!NaPztJ9sxn{#lx_UiC941HTiBKJl$i)sakNaStW!qLIC9o{-BTA+b?I*M#Z -z<2!RbsGm>;Q{ApKKrOF+Zk>4FMXluEMa;mIj_;`x{l$v5pp>9}74W*n2g87ZyH_&2 -z6blpLM~JrXOrx$5&%=$nJ7c%ejeCi%ObDdw5iL5}pB#W&mbc=TC7z6%Dfhtr%FEp? -zo#oDV1F~~0{T9;i;jMEFgmj(R6n2}dqP3TAc&jtTRdEq4 -z7o8?o#Rafja9-!CI1iTd&MRCM=fHB#+0|8X7A$Awnxy^SeS`d~F7WoQLm6CmZ{w&A -z)h~6Z{ykLrh+a3!+gRV>@pN^LqAO&soYX3e=F9e7RGtCRq_V&?-d@;BD``N)t=ETM -z7}4l=NZ-}`NL#pkRh)ODmX+x#fLIUe6Y9=SBO>g3zbmr;t}FyJ%`_-J&kpAF&bMj$oB -zAr^cxV|3VbGi7FIJjK#{Q!A%&>DH~Pr2Y!Tx10^5{bAddl-_DgZ{;9$j!QrNTN7OP -zcQZBTSMk6%jkD1-rn}=DHJy?4@-fU$n}3A54H0Lo>4tPFGe%BSr?u~J_hfUhu3Ly> -zl=&$tOv+f(DIPz`)j2;?+uFN1@VWQ&itXxt9q~8o(tg@p{7}X*}`!3y~WBOr6gY#ruIU)yTb-2P2gs(HV8m-ImmtvG2LgQ18j!dgWf^ -zjj$3Tb=$NRr+Yk-HeJ+NuRgtrb{h7nZq0cu_58mSJpYe$63>ABIZ_!B<89Gx$!Hum -zKzS~m8Y~~)?9rcLgr>ukNM^KCPK^=0)iMuyu*VFp9*8A-Ue^lqz -zw#oI^+`%{CW}m=>cgcE1k4z+g1zQv6VS8 -zqgZN1sgWxSmU2s3p{1-~LdURjv)x=Oydhih -zzv0ab)-~u|QdVT^&!lIWL`7nw5(*z?w>| -zjHQU~k-}1(Wlxpa#+RkANz7`qm8-oKhe&^xE!)jyjuO$0?Zp9vYgrx7KI!TlhnVIf!Q$3`b(18 -zT2fqA3e_o+h_loi^>JEUPiPs&o#qr&1UOyia^o8*{Kns2j~6iC>G -zp`ozSk}<&UEK89~Ac=x878r|BVc(~7%P5iE$J%2j|6bJX^3j`Hikw!fM7=_bOLbp3 -z0m=z+P`prO;rY1rUwxn4;bY1cc8t=JXM)+$#Agw8?6An9dW$3r_DRt?PdiH>1X~fD -zN#SKF5#N@ZQ48=D>j5``gy~bF~;_0Hi~mJWpp#W!BWS6Jde`Yf5% -zIxCRIbAkudNCFZn2DUaY5395*-yvfGq*8Oi7^n_jGAnfJ5H-_&H(FSnkh4FH{u6ai -zi=)6?ZV6R|qg|apuKnim|LmJALFeois2V$!%>v`kX2nUz24t^LvOtcp56BiGuk8t5 -zD6YhIap4SF1`Y1O#>WvUSPdxfI9mZH7~!!6;{rmI1AK&pO^mgr@;XvHgv3kZOJKwj -zpCQEqh!4vLeoK~r`)wM27bUnz9$*$hrRE6|pO4H|>jbD2EDVe)?7ti%*qsHZX|>2Q -zw!MgkS7Bm&W_%J3G;^5*wE`t_z#InNIq^xU(#SDpXnp9&p=caZJka|1WCS^BSTH21 -z;K)pim(18eKsT{|ArsIVFu!Ks0lY8vbq9Q&6Q7<6i0W*W6Mxr;`%?P#>zk319)CxF -zYJ0*@amW*Z#*MK6X&D1FA}1baXJBnoD;(B%NuE#+{Do|(kb9wU2R7j;3HWo>9U4a(Phjw9 -z;3pJP+3vKM3n5eJl_`2}LO*MvN)A{q%n)Ir?ZWej@A>`k5#f|OGb}tyV!-940=Yom -zq{JZ!ZWQP$bZ;2^c1wYidKKl>;($pQhCrbd`YH$NU!4mQ)OcYWkF?3q)dd|us^Q2C -z%h!x|7#sfP|BR{lowx=G|6BeK(>k@dqu*8S+=g08|R@B@b9jPW(M*~)^WjESMe -zXqCX6WiSgCvV;P5a}Mj3!xD1XEjcVDhh=Byu>Sq~=dhb{*yA~DBK)7oZn}x(_()q -zcA4GCTM?QJmv{6FEq9{@TZNhtIV`d{3hX82XhoiwFAdp^h%0zqcB7Rd;`E8#2uu24 -zh!c3QB3Qwe$(Ca1KSXk2(W=&c(8FrZw^#uJhXZp?3QNVgguPmzWAR|z0!D&K)0pvK -z7JzxFNXO1txKZs|zyCiQ8C6LoC)^Ex)w -z#Z3Ur(n?6Pikm4O9lH`tBN&%k#|}eSx|`c;A$-sjJ=d$Uw3ICof1^<58qhn8fp<^)s5AM>j3IF8qx6CVhbYb7ljL@@kFay9yU>KN2 -zy`H@RrW{NRm^3iMQDLzT{290bHUd0>5KPeuJxiReXC^RznyvpYavuJtYiItGzX#{) -z8SXAT3@~9f&j)VV{gz=6)(On@VB*1C4dz-fUB^BH0}?>lGw@qzDM&2=CaB!$7?WCV -z4_eJu8LXwYaTZ~<+6wbiOT-r(5ymX{Dz}vjEVS`JD{zLX4s=Mu!L1Ihza!+2(Kdm3%QIrp@JkY9UO=J?Y -zn`MHDm>{qg1g!;DiCI&DiO#}&oZVIc -z(N2IK^fYEQsw*)V5|#^AIoMy#h0xDI6;cc)8h7MA>EJuj~W$7iz_{&0Gkyom+O?-ZBKTQB+FpAf~) -zEh(s8xMkLEzz8h<=EU*IS<+F5vvl4wURxAfx^|Z<5k{lgb9xDQyv~-syX2Ju>mdb# -zY)*M*q3ca$6L=Q9VBNNG@dr@XvmBdP>onOuyWHlkOl&Q8zEx5ny{S0h(>>?qENP)z -zavYXdN3r;I=Kb>L1xHSveJQQ#EhbMz(Mr_j*;*|A%awtdKmAO$78ajB%ly>mOXBNfx6|_Z8k@7SwoYE&!rp};TX<|| -zQIU5lH70bC^{^h^$XXAqJ{AwW6Yf4hRjfW#Ag}nQx`i!0K6zWH_L_czX4rGSa$&)b -zj(O(F8rQTbwR^1_*^H-N8votSSp}YP8`)a-D-{wZm~Wd=I5qLBlWc7Oyyl^;zR>ms -zG}&UPh)OI#eL~^utR6DpDlKswSS@i6%TMxbth1%B*^ecb+unI=HWc(sseA6c*X-`% -z*V%G;fdm;mGj)g6y^(!$;uGnIsjX0Bg-&3+3+B4w3yxYo$I6ouArXvm>6g}$@|lip -z(D-W>LSBK;ENzi;mJ4 -zfVi#Q`SQ%kQz;CxVs*Q)q0HC`A>EDGTT&3?`}ZeI4HWIS&gPv2dNk(k*k=_brOs06 -z!iri%f+P>Do(C;*EPp}4M)q1&W$nB9w!+zmYoHaV!M#!J{Rxh3KNftyZ^IYWQy`mD -zaftA)jQN~V8BFw3elKql`eyh?torczoz`CW1f5%(s{R@hF`EP -zAsWcg*VTnnv61&e=QuY9#^@}^{>sLWYtPO3n-qXP4C$_hnr+xU@7$bC6vt%iY>36- -zF8;akW8VH0^OnW4ioDYbT=h%*YZL2Fvac}5`L-HK_*YK>e@Jub0_FP)D;f$)X6|rH -zHD{=4;a`$qUBE7l~_cl3*0PKjC%W!9LlxWZ`1$`lm!e=1i@gQU+A*O=T*z%O1-n -zw)kDD-uy2of4p9zDmFXUAJ}nafhWu5iC*cNV+~3IAH^h5pB}w^7F~FvEZ=kpY*+6VzELutVnJFLq3J;aG2arQBTX -z`mDVC*xsKP!ju5B+|u&7V-B*T4)3c)<`V15OzA~v+7({=9I|~Yt�-%!R2TVG1_X -zCN^t#$*Z+MHG6$lV83_@XzH3W%eWPbfTn_#rjfObBwX=pF+(G>1||4 -z=AZ}Gej*{Vm=lzP@D*g~heF%?|&krxLLYj={;IZg3REXG--zZ(kU1o-j2X`lg`RhM6tzRtr3%WiR}2Y2=GhiP(4_^Q)~RwfZXlg;*#T&lcWNF(c3?cmn`Ph5>6o~pQdkW7i0Z=YA!FgR7q}WG0lQ+*)WZzILuKB -zQJJ{Vzjg`rTGdN-B++f?Adb9kkt=?b^w{SxSa*Cjb_plmoHdBQ@k@v0bE3LmVz9Fo#cn$}e4F5b4JV2<5c -zF3*EuNrM6YV5~MiwwB|u9(LwfI32rOUz9;K1iTUNx=8;;_&?H|w -zIacodc@0t}c^Yz$5OLE_=7LJ7mt#8}Nd153Z`(XQOI`%)YcPkwejLmhFoyYhW&{%l -zrZ<>uFhjvS1f~?sL@=*{`2fs6z8x -zr@=%l(6ej6+zw_qn5V!j1)Kw5CV~AWFbl!_9n2;$`@#GIrt=$+CYW2m3<5I(%xEwZ -zz{~-20lr@Xa2uF!z({ZD*(rdRE!49-u>T2QA20*J`~^%Q7#WNkj1SD~U_Jm-4!BzZ -z9s=_Vm=-Xd|JG4<5d(hlf8%kb1Iz|95==3eNnl<8vlz@uFgw9~4dyHu{hLq@FgJop -z1~VVhyB**ffPVov7K|JH!F&v66`0S!d;{S}0R99f8p>*T8_H1Pc#5|88LSQ%t)Q8@ -zeq-w5j7w^{m%6sb-7dzLy$n}W^g{t+(aQ=-%N=yqg$0+eEV!sXxZ%TNYX|v(SQ=ak&p82@VAbkqr|9o}eE`S0zSF6{w)a0kdK;E3=h@k(rPd -zF(E5rC~aV>(1}|Lm@1Fr7CQ$H0#vhhi;Sj>kz|3P=!L2B7v>maWkJCT3kp>j7rk&l -zyXvR*BZu0JP#y#aox`5ymn75HzM^sEx#a!vR+fa^8!P4Za=VQBC;M0Ke0uCjP;?}qS85Nh1x0bZkV7Xr-Jd|v>tSmQ?Bf!AyBQvlwmabE{8QG?$DV45bp6kzU@ -zklP9{Q-f~Y=CBsI}2cu#*I&~S~czr -zfKO}O_y+ZOjr%r$6E*HW*shxV3;^iSgyRN=qH*^JI7{Qs0r-l>eJj8P8n+AJB2D@F -z0{lP|j*q*4qDem=V5tV*jN?z^z6Rh5jr&@FYc=0vKia5qqpq>-8hnKR)P$pQgM%73 -zYKie{+{oCS)VT3<`8kanRp3Ot7jmPDxM++yglKe%u8 -zs0JSo@fT>q@gDnFO*mc}aA?Al06wE}djL+>xba%g3!3lK08ZDqC4jRv_;&$(RTF+U -zz`ttT_&VkkO?{zqs~0tH+@xEq!5<9peNFs%0GDapg8*Lpeh7ak!1bE&Apo~(+>Zm? -zt%?6JfCn^ge0OfPCO`Og_p2KBodCbp;6DuTm?nO_{_(TMeI@o!jT>JYj(9)h?gsEO -zjXM|MHJb7y1I(HgPM@!TKScjgciK&w@2>{fOY^-E;BA_4eA@L6jT@g-yj$bOdm9gE -z-1h+-t%+|qLX8{m!Hm(kQ8&la8uw&??~4A;fWAD7{Y?}9RDf=c`x)#Hn(v1Jd|Bg0 -zy-xEr?mq*3OXEfbK<{bXsBQl58aKYC{SQrgj{;nw34a9O290|(z-=0QhiopUBa_ae -zB4BQ-m(OQ!Rlm&?gv#5j`hy+w*$(s|3-}zE&)(b2-b3emZ|`7DfcG<7K%qYa`tkYf -zIH98j(BDJLdv6~HO8_ka*8IvFU(Cnf?ezQke75x0i;LKa(~H>B6JYrjEx&-}Bw9{_ -zY&K$;W_%wtBSvg0`b}u$@HPVX*v) -zDPbZQ|04E9^(pp+0%pM}wjJ!-!M+{rpM(8#upg-Xx`n-W@T)l1gti4}JAhuB(F=Xh -za-eq08AAK^4B(-C0of01`8%P0`*+ra)&*pRIM)L5eu{G~pzg;w!D};mp$}RxPC^rL -z5+aY2PDA)fgV3wzaCV6B?|GH&pt -ze7V5=_m^$Q12)LS8J279YjN=ZnM!)%dzhj6!gTBozts#_9XWM#`Xfq|u?hgo;WZGxrc9%fyJ -z@Sk=MEB{o#Gd)O}k4tv;VGsf=0pRzsde1T{C -zBDVc}!N=_U51uceTb}>nV|JGNo(12t-1jW_E^tE;p-E;hVxNUvGtoKoV;0~c0pUf# -zY=IYlKbyhY{modaXS0`bzT#zo^Mri?z(vCT4!{qD{bPVjg?%}|HNsvCuwK|30Dda$ -zp99=2?0W$o5cb0WzZLdofIkZRFBoSHUpKUXy;j&;!M;)04am2Pm2QGg8iLkeD3}L;3vYq9N=nUuLZbK*tY`Qv5e2XUjS?p_9Fnl6ZRhf{w(Zg -z0A3Jw9kfa38g9R&2Hzv&_E>=3g}o=h8%5hC0qiC0eF0_)`v8E0h5gR}?-TY2fFo*n -zJwF6+w6L22T55QC#{w)9{!asR3VQ{>86pp_0{l?Kc?#-jmH74?*w+a=gEG|#djr62 -z!u~nH-NL>PV3V+a1@Ie@Rx`k#g#8r2bHd&Ru+wsGj{+DY?A-ufC+rfyn}q!qfa$`1 -z8^FxvJgqwb<_h~zfPWVD`v8tu&iSWD06r%C^8uQKy$E25uv-Dn5OzDj3Bvw7z)E4C -z0&u#p&jt8bVSgLo`yy{&0_?Pc``2Ll!v3+wzD$F&2J9O|JevS+74{tf|0(SI03Hzb -zBLKe!~W(Ci)QDctDvCA^^vz7-N1hB#IX=~Kams1659D3KCM*mx9^uxI80Edt}3hkTx0ip!A_>8$+C -zNz%O!3>(Jis#OPHe(enX$=M4J2K91StVO*_&E*az*;6XYC6-{VNC6`;yfk99$d9k@sDH|dJdlyaIAn%fJnnWgM~TD -z1`8{B|5*wKWd&)_`A~)s6TwKfun+K2=7uy7We?6ODL~4jOzrzNN}G6xIFqlFSE2Ee4iw?Hsn4B`G|r=)U{JX -zxY4zIy`uY#xK6-Y@+6qkV9tWM0HzI01gy~vU?Ra>0_HL>mxGDboZD2-bM^!yfr-s%!6Pa1(OdZqFT?2 -z0hWQWgLxKAB`QP(GZV~QF!RB@2?p1dAAzX>vj)sYFrR_h1!g~(Yas2z0FQzB70d-N -zdWgR>7$cZ&V0wZ{0@G5(O&Zt-fGLAK-w*JSYJITZT_P$pTEI&IUMB2DfH7cDKG -z^+W+57w{$lF9*CU!CWD}MHx_v2t)Y~%3OZ$JhDZy(G6lVkcC3YA@Ljjp2-Q0_!oWg -z&N4?ynaysQAejM}<TuZqT!|s>A6k -zf647pW|q%zPj|@fxGd9@Lff43d1Wu#UN89TtXIn8Di&J)_UfC}bG@F_f@du6*k1$6 -zX?c3~8@I-}J}i#&EE@As!6y~}SQ0n(-4EV+EzY{w`M%@tt5(ln;ah22lfS;C&{6EL -zZm6j7*yG-QYn|IW{rx!ews&pH>;S_7cxpMS8JM+{X77EPrqL -z=347Ub3^^^)W*7hZrN9UC^dha<<)O&-GJK!)^-#Pd^6fRoR%+>G -zc0zV;?cJ-`T9RMDe^Yv=-kN$_YM~>&SH82vT9_i+EtXy-xAwa&g^&sy&Rzv}xg>SO -ze;bD;2xDPTL(;$zQt#CC+nLVAGZ;e|eCK~4gJu8I8Pr|QVme1eUKg1Vc_r>Vws$Y0 -z0^oT>o$mZ)m%^`32;6o5CuLzw)HXF+Cp~tEh)Z;Fz2b5njVmth)$7r?xH!EIl7m3( -zB@s75V2-{M_rd-WajQVrcLvYO|HXWkh4P6VF`}z3m^JK>5m)GfnN4*}D3#6m0A)Le -zV^rH1vttZPEu2sWC>+XmmRelqOcishImF;5iPQR8xIfo!uoAOQ}>7T75XcnvAA38Rt2Oneru(P{@0%&y3}}ak -z#-hQ)p@pW;`OvOdjDSyR@Ni6_>G2!sJ}vMt-!8yGb1*xECkZ$~gZJcmJsB;%R_$(q -zhjq&E+(0cqZ_^&{1r1&#;`|QYOB%cwz(Mm{>CP2pMLayOfab884;E^V1)BIy0S=m& -zcJZNEq`|{88ECry2Hpo6JUk0QXD7OKtiOMV^a*c|p3EC}bi`Z1!uL24?}DblYS@PM -zcuo9nfcmG_Wn(+M3cwqr@ldV*Uu)+cCs$SF`(2fUG)aIa4+02d%WyxSgKc-`Jy)b5 -z4+%ulf$&m>)74d{x{Fj-Rq9mb0V=Jcz=+s)L|}Z~s3?MQXuXIy*TDt>QDJPoh!_%X -zi#R&yTzdo+F);J{t+mcMyNY=K8a|q;@7eq8$J%SJwf5;cd+%?{_mBItNt^t9&$Z>- -zhkV_KD38BYndRl{cslETe~9v8or?dP_!-9SR44Dvy)~QKgTvd(8(%QX?K<(*lXe?o^h;vQ(2)%JK<|DPe2_L2XOIS5~al%K-=L-ohl+W4s$E=ZBSHg>xpNQF0 -zY~f?tcxf9S+s4PW@$qf^nl?V6jZbVD=h^Px|6@TL^L>$6zI=OYuq~Z-F_vEj@}phr -zNcbpuKcq9^PIr^j{%gpw#PK-Qlkbny7rQ(0Iq20l$>RS%^*_o_ul}FlbAea?zqoX~ -zGZ^m|+Ss7c>DqIH10p% -z?*9nOyFQ-B^W3NSyCm?ejPjS*UKsmqR{3G@WnOtx;GP?t`>owSP5zMjX7caBQ{a<~ -z=dtTII(aXQd>puTqncduN#N-pr{$jt9z=a(8RfqMkKd?k6y{$6?uV0^w)SoScikja -z2ww!A0dF+EocX=>^LKyiJidzMf6TdGSb5j6eykNfWA}dy-1#ZzK5Tp&cn|mt%l~Dz -zA5LnJjwfAMV -zZ!g++w5A``O2+!I#bG2lI&8CS9Xy%wLH -zOET`t#U_7nS8vAcweq{c)$!xO`bkn -zh%aMnGH$)KC&&DMo#7F7!oyxHLVGgG`kwUc2fm!@@s;?}Kai34@Oc0A;K3*LH?BUU3icm0grg;Q>=eWCb1{a$Pe4~y?v(t -zhV8vD9q&JaC&01(&VioIfMfg63GRfEz0CM8z!R5eKAdrnSb7K^9LdOg>f{D^3Veg{ -z)l4sC+^shL;|yuGr}uvnyz7C~zI>kTyIJ4M$l%|5z>NoDf4JC9f=~9^|0A~VNsS%J -z2j;Zu%g@-JJ2Q#D_%-|M@$bMrUldQL^93PRKRC88M;ylYK{Mi~WWIo>_h#fhOp!mh -z6He#NvHZaUUrOcI2c7`GDV`6!A3PMxoB97CBk%Ewyuo|G(Ih@rU4m*q2UCe-V6} -zmp%u2^97HOWyt$<#+`k<$satqFCG8ag9l#BxD_^DZvyW@|GQ)V3%>OMeb0&g{qMa0 -z=Cu81fXDxc@wfZegC}0f$Zwd*=Yppnh~=@^Z6UvumVYt$@dsl4UF`k_-09Vy2S4cD -zUjp}g=~eJIyzyv)YhLAnNxud%wD3Z*Ehkx_VPal{-wtUz|ZbW?dz{N9=Gdz_PqZE_W$!(-)EHn)YiTX -zIyUi|toxAle;&C11l`wxyr@Ip6Q5;#EO`8cY+`Ru0Z)SWnf+M-?szI~Uq86h<8#0Z -zJieeq*SeoD4mxz-lfcR!2G92LSL8(@-PeWbyE=5=iI~Sabl;KKUS8Ls?_IAqzOh5! -z%Z}TBQ-|)u@>Szcu)I@rUjy_7MpGic -ze10~uw`YSl?T_d05_b`J@B)2aEAa#CyFlNoC)e7_+YPS0BkO)(>DPeA_s8=G@d3-b -zO!uJ>{{$Y}AJ5k%?so7b_?O0C0q^qezmMg6{2lO!$3JBG9v=Yr2l_09^}PVT)vNCn -zrVr{q9U@OI;fHkJ2J#8u$uR3aZ`?hvwZE&t(+Bjy2Fp8>`46Pyc`o=tk1qi~;&GAZ -zgFT#ex)faOwzrl4&NhC38;`U8pT_oRiTfm&2hYd;{f@T$Ujg$3+$6pN&v^XL%)e9j -zb&&X&?c1r(-pD@(^Q86pR{kqso(aCtcqtNi-1Je#Jz$=|e45>VF8BqnzRSTcdRzwc -z5aoD%b}g8v?9Q|D_JDZ`?$O3PuD8dl|A+Hi`@5g%`>p)!68CHHV2AEAlg&aOz^8iY -zSqN@$cACBbJaw4v`$Jv?KF!O25_mGF`}#1w4?KbO<>|&}@&4InPr>J~e3zDg9(Yfr -z_MiL?a1Y|y*Bj?}zteqJ$iqy(BP07lk?Y{q`_2BNJ&XhTv538VuBKlD9-nLW5&S`> -zW4*bY{vf;9eH1*sL+3lwzYOLX0&)B9r6Qf7@ih6HOg~)rbs>M7{U6kQsmPDByn0sS -zQ}ENwzd7yS&%t9`^w~A}|FQhdI$z0upnNv#J}%@}Sl;FOH%Ic~Bhdb_tb5$}BtAm( -z#^X&#q|e7P*?<3!)!@mZ?u)|w>%j+~O7jnZYj4wixR`!1xbx_&d%`&2{a*bI@Khu1 -z&(+{DtOt%WzLxDf-24rA9DKt=aea&3$B%GwCPO@)pJskf-|k|6g0#Me!2@ULzA_?T -zaM!%7Jf|ifVEf;#`=W?E$q!jPkNRE$PkZe>>`0V1NB5~B9|7(;U!R4Oj|X=m7~h#u -z{%_#v3w2*A@+zhumX80K;3?>9ZkF-}@Ufmgo_C~^b0^~dZ3Rz2-W#p_zX5l3X5G&% -zJ*?2&!qRi1YYiyHy?&^ -z;xgTLj`@#0O3(C&<tKXH)krBYy_m1^pj1-b=nJ>;BpJ -z9`L~F8TYk?%J;K><4)IG;Qzz?A93zau|Bi?UVr`-T!TM;+T{BZ^S>vR&pi0eS|hb5 -zOTZJuS$WP${!8%WmW=o#ktew8Kqj#ttH=j4vQHcNEzIB4eg4QB!8|`D*1yfnAEx6s -z2=4U8w*($PDyz>EkRCDppsk0&?*h+Ul}+^bBjBk^?RfBP2BN43uk-r1h2?qn -z<6_o#wZ=E(0(k5hi=R;5D0tv}-4~1LyV>4GYTw@v9)G*;%S8S#xN{(#-#3$&>b{QT -z|H<|p%p~*Uc5uHp-V@;CJ$v_c=7)a1EB23UkLOPxV|xZQo+1BV@C)AfJ_lasmH!*| -z@3*Nv{5|WRmFnZm;7PRa3pU;v%(EHzgL^G~5qOWMzg^%-^f#8rsSEi$O82#r`2ZgG -z#&aF-_vYh;;M&}@Kkrz`=YbXu~e&$9h!?>sB-i{O(zeY}VHpHJu8H^EPO?fEvi7G;zEJ_^XX -zr9TUvJ~FF+PhtE5-tNUOudqKCW##WaB5w$4#;b2JcoOmO0&DMIfcJapr+~*`-~QIh -ze-pR{`|y3^H?zFA+xicD4tQ#N#`Rl$mxHJ0+j<0C1dl%y&-cYH0{_yh@7*l_m2^J7 -zm*vCX#rA%j<=w&`D49J0cX{&p3V32xx?cF-;Kg40{mk#ppU1#^ym;a%@F40t%lJ8P -zkEcHedH?2Y;(uquP)@%m_2=_xIA_gD>gxpel(KHF_2+nSEtkgAr-0w=weK|WY>!ug -zr#$(*h3Q`T8(7}%tp5E4}W*e*o@6|2|>m -zKM6kg)3pE3@cwnFe|?Vfy)45JQtb`vKRS(vUuJpUdf-U--2u;Dp9mg5T=&Hldk!A- -z>|q~xj~73$0sk)kdp3CBnDqAoTrU;DGgxn&Z}I$g@R%o`_cDEf?sLfW8(9CMtcxuF -zt*k$j`rFSP&)4yLZJ_JudUq5KPkN3|{ -z{qr;6&N=CPd5-ddJ-x>C>5uIH_N+dyrhi=OT!*Kh9pJ7r?0FQ@j{@%r^!Y3Kbxilx -zPj3W|VQ>$`{t`TMXX?jMSdr -zPx*N3;U6=7k^J#f@*iM%i?T`ke+3@*;-}{+&q5}N4>NF_HBUb~$ez9&Mc$Iie<}DH -zPajVPPaKx!f5WjHzl{9yMD!m#wl0nL)_})7`JD}(_U6l0`-uzpX=Nx889!=#jq$z4 -zw-^s+lcjQ`s5f9<&R_fQKF)%}yDKW_QIZ+xlc|C#Y3OMk)m -zLzX_*elm2i@o~l+Uq0jet2RE}xZBFR(D+AZDwm9ZYUN#N+-dx`##`+Ej~j0=-fR2; -zf;|QJszL=2*hWwKH~2x -z7S5XIj<%n4-Q)B(J#RFQ^?$7~f0rTSWxU+dhfiqjZ{>tmdA!#+o^O8#o?J33$$yKb -zUu5Zb7=PCI8^+6wA2UA5csefM`v1J~0^>O+wzl_J<9NQm!TZf(7ykbi<9NPb+?HNE -zG5s$3!XJwB2jboN|B`nicw$H}JX);;Q6pDx@JI1cqggDX_#jxjb@Tbbri~YD4Fb@* -z7CL8b0zBDTc9`p4v9hn%)$q}~23ZQ#V7Ocz%9R88$$F4$?sD=|_Mp%l9o-#Qu>QPt -zY56g1IRDJItxt%R#oyCX^GT`y6)#^z`QC1xHXVfxEkAPQTm)&jN*FcD;f}D(^EVp1 -zYoV*wxJh0hM>;#)kk82lN;4ni>h;`iJzTqRMKfvyrAnbx59Q=bIbu9=L%Aq~lzRFg -zyJn>k)Wc#}uZQ)BXUqq3t|to!^i28CVZaN4oZEsbgQ4B{SFbg4!-j>htfyY@++J(c -z@h=*iE9j+qSZL-$ua;7U`}`#(^3?1;zO)eK13CVj2X*6np_*^<m6gwW@c8N>J)kg$qY(&>@J%?!o14!En90Gr)js_e;aT)<$wr -z8Fn8XX;f=4K4BOqOR<>Z6pwT}zYPkbbu}w3$S%fTn?n#nxm?RN8eyG!3K>G30~y|O -z35J5bMc={-U-pT*m#Hp*_xgeZm8t*vY3M? -zw*%rT@#1oANS~Iz99bGWOHn8$MU0}jrlbPeU`VZdIqxJu8Mif~+;GTC+JQbb*gC$v -zutxq}Elpm7$=R!Q%GG6ZRc~A_-TK87Tnh(sYOhAQm-C^%$tynA5nfK -zsu>A)^_8noMNADEGFZB5RmQ6Za{(=Y>Y~0nz6NTK3rc#PvYee4P%rdbsUpUM+qWVE -zEJVPg!(15(1&aer3`ihnZQ)Z61Vh!Mz4C95-c;5pRf~-Pr((5c{(v78nH)uigb+q0 -zzlx#@w>QyBSjea`Jk%`m11>PV9^_G(OmNM>Ll7t;=@N6t6O+a(lED}aN0CFmia8WR -z#{Fj@F*YKgf0Qdi?5EldUed40Io2qHnNS374r0?+$(Ngjkh|$d=HsnTv<|ggsjlDb -zVzpV%hio(5fO#R@hblxQg`wg2nr_r<)vz217wDpLk>AcZId*PIyFAineLS<{!sC(J!6@5-O -z_{I00)$#W{)VN&c`I&)uorJ{Y>OR5&?Xth8a1acfzkci1OM?v;p0{@E#?9vi0ZayL -z&!H1muKqI#%X(O9V}y~A>^WQxcnVnTHBpyI;RQkhU%CbEmGY0$m0`} -zakQw-!xzMV$plHJkt(uDFff~d$cix?9h?i+U3%V`Z`-&wo*Ocin1xeM>_%f)oFwGQ -z^8~Gecyem_HAYIgLM|GW3CI9WR3R2ZZb&8#B^Rc{6X=18+RwxWScxNua|62a3eEv+gOKP*SfVr+HQo9jM5NZxgsLu -zAy`rjPPm;ih|MW_<?kF{2^xr^(9OwEQ>QQ<44d46ilz1D{RM$N$R1MA{ -z4Wg*8L}G~p(pio1ibho*v6SRX7jl-P=<@ruzJW>gO(Q7Z=3I^>B3e4X)7T!UCP)>=(kCPpb~7?&PgAz{dh -z)JmC)(C%tMj%t1N2K)7}T&=|b5s7n4)kj8vtrwFj;>xE1j_4ZC-0X#op!)S(eYXfsWDj2h -zMX5w(`hoPw0PB~ACdsfTEfx16OC$~pgds<*woY9>?P#B7i5;P9$PKZL^sag&Z@rI3 -zJ$9UdoY87#M#P!Ks%G4q+!}(`d9Z=n2RyGr)HqNlw_Y{7CDwqNr2|<#>2;t=g8N%weup!g}&VsZ~+pyfoOcF-cq} -z6ja?5y0nW9ge(3ipQ~taQm$6FHEZVKsYWairHe@6;`k&3iYA7(?a&Ha#GCID@eU=f -zpX;n@#DTU`i)lGSUFOw;WZIT0vI0k=xPBQe$|^}8T5uhY5F0Z}DwkfzK|jmkx`*{v -zb~ApH6;OQ}<%T6qNy@M5df(<2m0#;kXSv8${F`nT!iicfnxT(!^s}Xvt5xIo>5q0=W2W_&Ahc0BEY -zOnP}BDpEpMTH?rL#Kcas>pGYes>ZW9aV0_WbVeMDxJs@|18NAG$ti_lRN3+y`yz5< -z{l#K#h|?8ng%2saTHtg?F7E$=zVi@b79fw#Y|)wod$E0t6~J08%@(JjQHFR6q* -zt)>>HM1~Wi$|H~wDYLWUVX>gn0H;{wS<#%Qd^pK9a@f%IYdV)=FDYU&r%v-<3-d4s -z`TqX5ZrXU(+Muty$I&gcT;MVd#<=ZLex%-V7u3(^0G4cb4MrDAv@;ZYo+fj7RL||? -z>cB6h*R9p4X<46>h=b31+p8U|wNwl1Txqn_3=dO-qP65ImSLn@u0%4;(@TA9@vdB; -z#>Q(C8e6OGY`K^I(Z7(()0VXKUgpv$jcU6ni|w6~5X`>-v2ZEqU#f@gSE5D%UZ(8| -zwAsHB4>Z@h{`DP)keW=&7BRLrlj_nc`ey3|bPoS(yMhIse}#{-u4o;?fT0@HL`-TO -ztJ*_#Av(0K*1Q$H20X7)+;)9wwkmfJ3`O>&yQMUpg{@<7sNrmz82Y$?ie1~?Qm@Qg -zU)6DM`y9d~)qzo&U}f*8Y9OXsidr!DuMAuDRGJfoZC%d4y4m!it+O?h=QF{^%|W|> -z_^_rmtHxg#kypvOt#@OwYL2~0Z*v`tpET3 - -diff --git a/plugins/amxxpc_osx b/plugins/amxxpc_osx -new file mode 100644 -index 0000000000000000000000000000000000000000..d0cd8f805779a3a8b07c4480cce87b226b331637 -GIT binary patch -literal 66960 -zc%1CLdwf*YwKzU!W=JMs;0!WC)KSJdwTVGYB-RW;n~+Qsh$OsyFBr^mw -zPfjLeXLA5sDz>F)Z@u^Hz4caXDG5p;lf)#T#RQaxcm1av -zOS9V^w>_Gx8vGbk*Zp956BGvHMA|E@D?t7a>c4a~K^%U@Td=qRbf*A0`uzO69xVu<#>E7sGu}UPh)@8EN@xAsGSH -zpl%r?y+Rm~1Gty2D_I&!%gFjBl~n)wJXlepsMacH=?EC6fJB067!1^>y9QvCEdF~i -zCIgI(_&W>+w&Qz)ZCUJGeEqgG1B^WU{kv@$t`kFH=+3KDT~Jx~$=`$VL|NI8_)r+# -zU#V1jIUEXu8&YS<%4eQgx#D^-KKg3V%v=w~ppD9&IcK&lV`hFxj#kW!Ngu0{bPIWLpR26& -zzLMon+$XE!Z88nN`s1GGR$fVRHrS7v+pfG|v8d#BkBSB%L^B(iC)59T%xv>S+FxQ50I|hwI9m#m`Kcaosv9cf{~I -zXyMAHBq~)Hk69Z*F0a8)oE%3v{p<6u&%ZwZ`uywjug||e|N8vD_<2f2{w$mg2F-J$TEn1FLEn9?hy1Ylc -z2&s@Z+|dJh*%m!*aCEbf?ymi1F}=0oma8ru$-kwSWZZHU@J@z; -zv7MRONCxtRBw2#pB$8%k3+;vl3x5O%QdI?jp!VEGa2KUkk_>2mP33z)tBTZF8X%*2 -z0#d%w@-l=krp48`Qt4}!S0Li3t;9A=mfBDm5m9k>O=YC6+U%gVXot`nA^v#OqpHl3EQ`!z6;x>Phr -z4~;R#9dcjfH*Ll=n^DY<>nHh^$#GqY2O!hXnPFk`OZbgtt#?`ypkZbZPJ+;)NxZlp -zrzfP9pQIwa(0iu0ldW!b$hxs`295NU;! -zl0QmCE{iibPwym;_f|1O%?YPlE*%&1)m$*!66<;ws4yu_@oO;#P|f0us|ct%Iwju{ -zeiG6hA^O?ic{2z<*j}MUC-j;tKKG?V -z87OTa86PDR=SS1UA99|{lRTf@D&~*pgflIdJ{0GV=b$&CUd9L=SA#$tBHh{#6}K}* -zA@S4})0q)_l{MOCjJFv`x{2n*2%f9)IR-M@LegW%Y_ss3PURW{g3*gL&jVhPuIo%^ -z3p8{ptjRl5c<%=-r0KC2+syzk+mb|y -z3F(-<6y%Vg;y2;^Nz^_pWR0qw9rmH-AMNUO72AP6Yd(Pog%dA$OkDU -zmV}CAe+hSu>Zgb$(K`R23V}+0pd5SeiaLuJ>n``baBkYGRA~Fu!T%)nG93us;&A`KH;?*bN9Y -znBVW?U;j+3cu3n>XITV57eBLBRN&u!h6L@va#cN7@GMUjZ9nvy~yfrVI2f!(ycP%mTBth{p2!UC}fr -zmfB!^`Prp@$cS;b@SA=KH4=m3e2d9HF2ug)KsR(n^ZPIIuV3O02^9~hRL-Y5VDQ1w -z$b_9l%+xxBO6VtAnlVbnd1Z6v9S0)_{@%6)M=q^-g=-c5n$k;(7t@RfRA6wm=(%j( -z%(_Pun4d+gZ?H_rSPB_-YlS6-ce~Jpvv$B3k>!d`Y!TYC*|_RWhEjv{%Kk;R#o|7| -z*VSVSz}INL1p?5|tJv6&gTAwjj+1;AHYmH64mvK6F~{YHWCERGjGtj3nI`&djL>;C -z{#gU5vXIOeQe_sZz|2R`G#$y*0bQ{|l^)~k^aO1Dx>!;bOER@|oz@+6j-!to{NouG -z*-wE4YUNJRS;n{%=#-&l!S;4-0&1b!980H`jRc7;{&yYhGtj=dio>CEA8_W-C`au& -z^jXp+^49_R$u;YM{QH3_16UV5I8-{i+7Q25Pwt1f5jYKTWBh6ZNkEH>v6%SPMsoiG -zaG;pKM-BY`SK;H@*yqOo+=Bnk$?S|m^~iUDTr2AKbAX$b`*Kj -zEh0N)20Di8`*cO$x4g~t-N5uc89?R@BaV1rpwti6Cw()~{cz}I2#Eda2(&_nf -z64%)ilwk1tAB(1|EdVMm@Uu%-ti7NJ$H8e8Ga`W6D@d)D<2>k=!iXM&6yG5-?&Py! -zNlw#38u7RfR5yq#fkW;Cz$@cg>W|(J`d!^TUJ`8~vBJ{;zGSu~*`*WOr%ReXXX7Bh -zE%9mQ8{@Z`W?H^IzZY%1A%2_N!|^+WxPOY@W&m}={QfN+$?vW7pW*k%jf4D7h);LRh|yQLZo!5)9~dExh(<{o{N^>le!C(MzM&kQ -z`^dzLg91rpQ>x(t$su6shw?*`Ph(od^ih>ji7k834EkfHM^ulZX?nkgrX|IvCCI!; -zJOH|{BWlvs<`~LPNq)(V_6Ro5%(ui&*H#-k)T&Ol=fjMve-Svn7J#hh_b-g5c0Dam -z@JF+7c>=X3F-4U{ZuM2&&+mVSf88f$JfP+NhMb}}_W`wy|0>%kut;-~0lT_f!~vV@R9FKZ$GW -zxxx^{HrgVf;iDmv+yVXnfd3Jxy_M0_rl&5}UI@DqU0 -zxpmRd>nwvKOAwtk^v1eTw@WNpV3D&e=ENZBbujrszKQe-53BYgk9b=z?X>9n_ZHVf>eX`W2B}0ZLuz`9c&xSN?hLBi;@!|5CHvA9#sxM?T^Q%e_u6k^eYlSz;(YR7{E$enP1?$nSR70gc2{hO?G -z=m=n~{y^0w!5b*J_>DoHsdAJ=5Dc|R4jC;4+bZdXNyJ=d%foq -zwY7_%(d~Z-etz7_a;wFeL4I3@?kI2Tav!LQAzkEx(msCQByy|Js!S?lRhzsG*4&cuY;Li@=&ko?v4&cuY;Li@=&yN1t?vvFg2OYI7 -zlDy}$ZnXeZXcc`Nd#m$eXR4DI>r37Od|(NEzvY;furx=Ze4o{U;rIn7Ti%PE2EI<@ -z!MaEkJ{o<3^;Q=t*H(?GnbqV`t!nI3nF!t@A-{r>^SQ|Rk= -zO@)@l(o7>keeqv^9|I>QpzOZ?;m -zob7%_{>Rz{eI^S*GU)s!M9RPJw5;X&srLR*;znWs)mW9X0KCzv$Yxx1^*@P#Qs!Vk -zOs$M;#)+H%hor=kgiBYTL~Hw9JP0D6yzNh5`1}vhIeDN?4C31)|Msh$nGAeqMtm^XS}o97jt!Bcw4mOJ(g(H3{B9Wh{Ba*8N*9M$?#wy{W_4Z4}3%&a+LIUTy7&%5p9Dpnr~qJnQfM9z&0M|3f9&No%J(*<1hNzV$Z6SJPR*u -zf(S~iPwN~n^r>AF9SG0?5G7$q(7|Kr<6Qbih&9ML>>+89sBa`k2UJOC_3<0q0V}8z -zFT925hp1E|5>t5OG}q1A(*+g0{KklW<|M94NrOs#SV`7qplv872~sGW;qoR&p%w)& -zn(EPSVmFREn3zAHg9CYE$WbNtD7nC}$axXv6`#URDF) -zZPpTMj8`HwlJlY*#F?p9PxZ~RPE}73a}gtqPj3hBWCq_CeHmsMIL7!?m(jGa5h2?E -zLqhdLrkqgGRH0Oa4y07<>4SMh`teGSy~L -zn=CVoMlvDCSAbGg#9vhuAruXhqogL0Vs^4l%t&VZg+aAY<%*Q^gibAJO0`x=j~+~r -zOISf~!W3u8;Y*i=FTEyw={4a?mxV7~8NPH?_|jG3OIMC8O?n%8jw~JMI}j-ejZ_R+ -zB~~azT_NSnuz1Oc5}%E*^o9KE2M25&>31J?#(^7M2>tNL&n{g7hY*)Tdg9(Ay%4}I -z#jIczcHg_h454^%))#XL)U_YMxP#6QNjHKDf{Te0=t&5{*RVQA?CT7HQN -zMUEyOzI2flUZ)M-N&2v-yDvIxNcYf;UT)Cn#0>^XPrPKTl!QA6^P&cWiGx9=g8Wtw -zzxzN)wM+8{gGyO21H-+53~a{;2ZHp1J69;JMJQGgW-td4M5k86GDaAtFd2$VMGn@U -z!Kr5LWqg)K*B(&eKK0=EhwYXVk4i;_%hfQWvG>RXpaPC)BTM{gn8aHS2%m7n3%(Gp -z_O@_|KM9w(JzV0BaEUL4OZ?@KMC5x)B)_$V-`z5t`6&~_r<2}bM(8j#0~sIGhVhez -zB}y^~YDdd;gV~{AW-&0~+^u1WG8nxK2K;>bAZrJV0+PQn_itdnasKzH#oEmac8C%m -zv^k6XO-zcl9^$vRr8r?y^-^cu72X{S+18`{2J_#Tmy?ao5|)7S{4YCor)q*6@77?U -z9$vWeHMnHXF)FB^H5AMzUrS(4z%Ps~IvDg*xO)?0{dP7tao)Rv1P76m)>dIKiV8 -zTCNJcn(8lQgrAYGaD5Q;<3Sh-aEk9f;EZ5ak7GD-0+42832FJ{kwP}ot}~D>p&xzn -z$u3;$OdxslN!FrfJZkUz`FYl6NHc>)CIKHg&m3{+9p(CAmTI{9MnBc}7?ejrl714v -znJF0ZRm5&!`vCSBMv>h}R+>e9Jfkbyq8B9tt7F`qZVArQxm#T0z_t&W!`?0Q>WK&B -zknPg5n)ZCMu+V=qn@`xK`Gh@&boq`27{!n{UrLmlwm%?I2HHo?qa(|_sa0f_fw{!9 -zVwj6G%SfI=;zkf=v;-ezgaPMA64vUv2Z=(i1FIpJP0|Xbsg6WNnoNaNqHY-PNVm@{ -zlLvh!D}+SmimoEFB_d}_M9wynr-8_O$OmlW$b^UB5c}+G_W>7=s^Le)kjd-QW59K% -zOdROJP{MG<-S?|6Wx6Eclc_^>wAv%|Rq -zE^wyl+!w1%Wo$5mCBUhah1&?ly`(pK1#A!+P^Z1l390VvwE|U|3#!_*#kFqXe -zjEDX>XiPDK`P|Y#Db2dWcbwqL5xy_L -z_t)_K0_Vx_dlP)`gzr@NJ`CTS2)6&FW2@(BY-fJUU|c^ep3UO8zFc83(0OQKjBI^$ -zqUKRluo!E3OjU&Y;<}ssx3igf;z?_{xjM#uajnr>ZmH677ZO{@5r1UjNtR7+VP_d| -zizg2?Q)fL`rGZwn0|JBR6@+s-z+?cg>wY?+7G?@T)tW>+6{TGPj>YM#)EJR?p!PDZ -z?3KnlwxoK_=%iBRU;A%MY}tb+H~cr@lC58d=M(blwW&b%C0riItvsP!w_w&|^+)uHh-b)t0(nokrU52I2pw8c|2a!)J8}j0B^ylEx|7Z^VlF4V -ztr7mLvG$bq*!_1W2Eovp0iG!_$oOk)&?nREeOf!D>#WC0&-vA)(|Syt7362U=RU9& -zcLmnzmLtdem|w|HNca9G6pM?+HYd0J-e_oT)YV9f}z{()5?Bq-R= -zKc!;ll|($Y2PpplC_BKYu{L~&nE>%&goyNLrTBLsF0^QnLo1(RYrPc`!J4PBtqmc> -zTzg8kCiR;_QvWKY@>u5s2s=76Myb|9)vZb)$avx@xg9)=9?*_$kmpMY%HyDPN;p|w -z9LBZcm`0$xA;U6JZci)%DTrXCquv!3=A?Q5eK3wE(Y&t6fjI7ndu=+Eir8wvbBOx&{n#$$aSQcxNV=5LqCdV!;!`MWrlY7sy*pqVXD2r{7V_huPDaYPi -zHqhB2_8N=X<=74u+a|}hu-GvE(`-wApIX`>v?OPc6i(rJn6S{h_0@Q!{Kq1sd9N4|aC)vsDRBZj_ -zL*Sc%>RdR)PLZQyok}$LF2Y6VU}|TwymvQ1^rsHCwWbFEh7bx6IPRx;n;>61-YSAubE+adsol)+;BFzFdk*4`}g_ASV2-7!Rtm_i5c1 -zUHWEDHE@U#4~mH!c046@#BDkMHrRLCi}5(d;Q5@!Je;5C8phE)J$Xb&^K|49EmeVw -z(zXT3H-b1U{O$;LT%-bQ1aSMT2G2q&(*p0!YIZbIiAJ!fUWs19-N{UY67_OOr4jf1 -zw_Xt$XLvJM~s-kp<;UH -zFO`nwVqWi3IZv-+VrdhCL8qF#h87(-V#HP*T8cuz!vSlj!Gu*`ImLaT>K-b;KOkx! -z1fV1kcN`{OF_%tQyZH33xI>rN0aNb^sN11^Q02b^AvG?=p+p-wMWxin)F+UhUggw{ -z(q5&n7m78zpOm^9mGs){TOu86$M7)-@8taI1Y9hE4%!y-K9S^qa?<-h!{gG~CNq^z -zv1LGalrUIA`|dV?F7$HJQVdYoHpIV-kvF@s5*`sA04E}Mhju`mrh2m^aIR58d(471 -z&{~#y_z5VYVq)L)i(ibiMeUI9*z%9yJN`sCd{2bniw}b@e;7UoB6I+r2}3YW7>1F( -z*x(3@F|c?L<6A!;iSf+hP=00po!&ei6Z*~}br9<$6TVg@CWC*s2!>}=RXb6k# -zrVwl=e>M`EcJWYt-Z;LPu=xIM(ICF3!{FPx2=OudCMygK8Q_KEM9~6Wz)Yi9Ums@O -ze*@L5y{-t!fGNlx2tjuF#gWLqw+KycnEv$-^|zZB-B^G72E9MDP~uw@PJo8+&ap5= -z_ro-&5b~w-THglWg6rbDxFAIHw~fT-UGNR~!fO2&3nYBed=r!yg3uj;aCR7kS_*a3X#=?}s8??oZX9|qsHqJIG2jv@u$zTx;D -z2*G#dr(yJ8!8gnwibdDLebV`zLG1Vnt^5)g!x{@!t;bzaBp`b>3Qo`b0i2sj7@WU{ -z{4E9K&ww(I+H|DV^O=Ef3eX}0t<(!wIM;pr?nrTC0uL~_z(au`kZAXa*#@3#t-UNo -zdpu_hQLUuMX9o%IL3-RlzHXWt&-WS1W|1DCePXCT4IsG=?!0}r>u=&dgk0OtAZ7Ny -zxw;?=$dkivo!)jDP&@ -z`H>vITOY}t=icFWJ0sQH$6OD0f;-Re&X3e^7q}iw)pAFrlu=4bgpv}er0A5CC?zFY -zNg1uA=#`W)Qp)_uvD^{v1ZMGo_`J|!cxWdOP7d*jaos-d}EkfPxZ -zvba``kCNjNay(Lw>*RQp9FLacqvg0>j*pS!W2JaG&mH0dLZ?A!3jj^T!*5u{$Rr-; -z&0*!eUl#CRhqgT=+JW*uk85ID*@;t0`iWLQ$H-UE$8j=1&hxLo6Hc|LP4DpzN))JtDI;s%y{(P5me6-}~7A-}JNfJ@RM8e?AUwMA7i` -z%u@RjTWF3RUsx-^iA@3E(p~CyALi@Ql^59;$mfGEdNh0;&cpcKxA41r6Hj@(x~X;h -zUIf@_vs|C}Zh{I^p#%5wyFa4acf7b9qTBbqi0coXo-fDN{`IN`QyzX1W+NVN%+&4m -zSas@ST7LHxes?FWt7lc}q$;NdtJFzV{4rDOcCadGx^Is~|Lw6DzC9M>x5pCm?Xj4? -zEf&FJ7FtgWmnZQX9`A=~`DM+T8Cy_R$NAk?>E3+|%-$UgOq<6)w)Rs7X73#e=Dqb2 -z7_HEH6>5{-at|&wlV0~>=k2n7gjI{rE_H|416+}}8JXW_!-*Wt(a{3E7vFIa+I5nK -z4%5%tb0%)!MunfA#`Bd2X-)hlpwxX955}p8EkIp5_eJm-@kRsjTtDloFM6EnhOW96 -z-hBZ8bh-nOY!;e7XDbQBsa(u6*<>wIF%@b`N*vO2ivF8&fj&fACNU-WQJ -z_0$xhP21yhA8-Z8UN@T2RH4`GYD;X{0`-|$h1&SLAL}@8{k!!Mi&P)@m3UwnJrcd{ -z7Ks`O-YtXquMU9ox?5c5$zBoBvc|QOz^j~VEa~yzGgvNOT&}-d$`(0C+IJ -z=QHalcbgW!3)3qD;Fm9^d<(Qy7@Yoa=`q8*8P#SuSNU={=OBKo;!pNg`Vwy -zM6&Hd5ax>7ai^s`%IX)SjT4un6fQhoX9U -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 -z5pKGjouH-VMr#Le53m$s83>u~=XX5PMX -z4bv9h{d@G#QBB8znmvfG_&|iO+c&5{)Se6q1U%9Gukgh6{EhJ8e{LVahiKCc@F8c~ -z4f7!ad+JJc=n|kbY58~Nmd(d512o!`xh^`dB<>&^|1$>2WM^)^A3`QtFNxAcx7`4x -zzqWoerF=84E8rxBuloc&WOl*9F=Vf_6fduiPPaVWq6g&C|#k>%10{haH&h~+q7@joX|{80rz -zybug_+GFuJi0{w^c051y1W4$(>HW<_+*i}MQm(tWeg6A$SB|;f68De+_RW|Z7+|k` -z|HcMbzV44IwhF~GObuaugxuFDE -zR0kVp=4z1w392*Cnq0f#-_|TA*_u -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 -zGe>N*^Sd`j(?nLH0jFkuTrdxoO9$u=lhcX -zlyjQqctK(DY7p@`E~WA#Uc^glpexhOlIXXgI23;e`c%{QCY)d6S`-A?9@xh?>pvWI -z!9lhS^!|8P05o9Ekfjvp{+pQw%rk~gKk2q%-Tx)2Ck4=CLI1(dB%lAv2@pnBD$j0_ -z^LaEw{$HKi&beFU_n?E({N~rBrtnQ0a4iqdPO#cXPRq@TYUP`nTBF&)2bp;Gck^)p -ztB2q8ob*!Z;8uq*WK$&cJ>gLLsp})`Z%wQTHfVw&z+SXt{7$hQ=iThpX4}~zU5i}t -zjZ!PLwqKvtj_c8y@xMhYJ8ObuY}~-ajEg6`HlUa#dPpFIqEI^GZH$nFe}s?`R0L#U -zAC<&i+t$w(nU0Wd#Qt$qo3fMDHF+)_u52-f0W4t6vIEJJ{|X -z>Ei1Qc+#f#GQK-t9=cyI){Gw={(jkJ?EE47t5SJ(#wI>TN9!5_4-Ls@_c0py*KO>d -z9oWSs>{`$v`796rQ)So{jl<3t;!P?!%{0eIa`xhp+MIS=ZRbf&SEubbn~B*zl73F( -zk62TQQpP*$ZS1dv#G+ -zZ1&7!&wTbQWY78RxrjZNvgb1PEMd=8?CE6Bwd`5Jo;B=Q$DR%Bxsg4$u;*6xe33o3 -zv**j~`3if!%AT*W=T7$A1QuPAdaUg2E6*jYTy{N1u>Rk~DW>iw!!OBSvwUB1HU2v@IU`HH8Z!m26Js(HmF -zP@ou7oy&^NX*q@FoRv$>g#gYhLo0=1iBpoNB;GqUApuaVT35RK$z@J+?2+ -z%8D?v*nIB~%qvUH_ujj#xMUU5Q&wDTcDPDP%yKb+aqkaQQobs$w79Iyym-Yr^V7xa -zu=J9Zz=##D;wi`lSIJWIij_`t$;u_b8`iRwF6Szj)6B3(tEMb2dq$O3R#yDX6UZ7l -zv&^+*NpbPg;-yfc^ofyhLSP_&VrACKoQ-2}L1?Ne(D*`C`4cKzX(=?xS-NidiYJlC -z^3vr1My?OVS^ne@$w&pBSiWL$>AGlD#>y2)EQqnVbj9Klb1?&VuNm=T`++M;T?{QR -zEpwVzEiNkq*)EMn{ZZvgteb}V6m@Uf^cAjW9yXg7mn?sB#WTe#oS;GGC)PQO%gies -zj7v)wI~N1vpJbVfS1e_Tpkzy)#`=rR(nsdQ;sO3GS-G?r^3#75f8V`DW=7xQB~Ekk -z3dq2wJ64tsVP5RgV#i`viSwa*;|BFV>fR;OS1f*}_+bWa6=;hYqo@=>_7laWDdyrS -zPfjr>-v7Y;4C1`yE0(S-FEeK^2Fc%>s2cW(x;JChV&^iT7id|&1{$}#w0MbgW$8LI -zrbGVH1gSkMK-tzk^Tf)M1=*~^l$l(iH>Bw~iaFpPamQlwJ06xvV{T4W7bQz}u`?AelNqo`2w -zeV>`*&fVv}@6Ye?`+WcS{&8RT{p|g^mUEqJKgXGw>o_XVj^B?}$M*Ns8~!e9?07}m -z@zhc7NF?|kf5#wb12~qNA2j8k&#&}P$8Y$LgQ>+qXOlZA_>W>N%8!V(zYozD -zYkDVa%+Y$y%Z~&x*r;ER{N`9?47RugcsOc^1yDOi%mpeyCeo%dR0WStC6W`#fmS`wM<0KCUvY#Vu2KoGFdNMXX9lVL?bS0B~7RDP)7f)}B -z1G;8VJjg-oY3V78>PvuC>yJt=8mo)*_xy|YSq)h`kpfr$mYAB}dq0}W7Ms-$-V``J -zq$Ya9#2|w5q+TaE~| -zZqyF?Bb4f)&SIK`ON5^jv^fc#(C$Qc82tzVLSWJ^B%sb#UlL4YF@K^rx~RZ%uPCd6 -z)?xl)dsrAkzZ=yD>9C5S0{sTZez?`fNx(lA3snvRk2u&%=uLPE{DbZ;coR*Q4*zg2 -zB*XpDMv3yw0UPjKAMcs6o?rIRojG>O)pJvZ!&v$`#}vgAJzUpHdV^Msy%;#r)siG_ -zbeFXvBrlX%rsPe$XjPmePqFA{v0PUJuhPjr?aGKlZQaY?4Zn0ZEoz&3e5^HmZ!&pF -zb(WiB@C;$@eH}5%*ao+>i_GNUu$6oE3nxqT6EP3<13V<7VQu>t-d@gEn}_MQ=(jQK -zoIA$Z;#S0#F`HGiiJY9jt-Y?SM{B11)+=(SqMuE_ZX;)V@4l_gH*d*zNp42^Ov6k& -zo(SNZs*0uxSBXC?*n9rmy+-bgijtHPx^*lk813@AI37uivF9BRp~&$Xxmev4#oym5 -z<8(JpyVsw|s|Qyu){-p6^J4tuu{^JpMR%DphO1JQ+Db;R)-eZeoI$u_vRD&^lDP)U -zI9(6RY;|WzB0I+8Y#c_WOx@fFc(O>RJn`6Wgz)*pIVSSK44m-&DVC#_54pcQ>dGaW -zj1}{}EvY;ea-#G{zvxSXp-eabWJv32qEXv-D}4U0=cYxQeUb9?A^Ea4?Tr2%9p^f? -zx<72b_I;|o)pd-t{YRI_M!gfxx0_1ryM1IBbY6?nE7=*b-KY!Ue7VJo(d33U-C7Ub=;wP4>7&O%vrn~LJw -z*d1O)s5_q3aCPU*vUUw- -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 -zl72a<@@kXM!=g9KmM4w8po!gpH)sD;K -z>k4b5j9Csj4pdNZ$8jAcRqZ=ocDjC63g{o$%i~~`YPrm0Rz72NX)4dG*YvGzPpS|0 -z-_CsOyq(3{Pm=Qdndjl#=lF$qWxf|*(@bd+I=*(aarw4bpR2dT9_7~Q2eWA0QB2$a -zBu1#nS)Hv3Ii62aHId`6d!IBkvG3UNq}N-Uk4F*<2R6U7HjZu7T&ENe$us=+Re;qV -z&dv{7E>)(}SEi*W9;PN4NXf6ZHnvO|`bsf8oWSzs@u5tu7eduP+;=ynZjvq*kFFI; -zOiep1wRV~Q+`SMnZMrkDQ#{{B4YIacExl-^nI(QVPE?`w+m(~9js8oyv!31>WIkLO -zVgG=s#WU?dv7pGvzLM;zE&cpP$KKR54}^u1xa8^&x)}sKxXR60|JWtZXZ>Rayir<7 -z*Oz39PTYL!k5Ch*kHRY5dv~oZCY>}Q?>5)MH -zO;X({?n3wpO}Y3FRtf9P?R5$jn5Q}Vvv#ex*ZArB`~EXOPnO8)ISXDir}JFg1zwxxVnmp5Y?XSa9w=w=10&Ec%EnIj%bD_QPGa=KsNTy$+vtKxp-4@SB5 -zhJrhGf4MX1zgjVoHzg{tQaV|*D@kl;-Bh4#jzM)bZmuQ6N!wNAK;pL`H7Vny#8lhQ -zpTu7?E_2&uAKLLHrkU{O-Q7OBJu$2`Dq}^#U3!R1`Kt1!w+j6yV)r`8<7e7eGo-j) -zsJLFi+<6~YrR-67+l-Zk|H5u>(fReyGk7Bp7W)o9=6=@2b0(|umXsdvGF5T^j4(f^ -zN1Z&lVEdmrjougQe4eiUbj?yfQD{6{?e<*50bX6EkGuRGPJVhGEveHxsy*#!8YDNf -zaYcf5cb=qKRr`f^V~=JEPG8YwCvZ(HV0-}%APMZm;BK; -zn!@L0dpba1aN~1XQ2VO1tYO{ZC-B*z&Fn4zE}`c_b)nX9uZ%Nj_J=O`9t< -zrD~5tabZ8RFTFm`FTt*yrtD!V5|b(56j|fdt+Anxvca&l_3XqE2G(;UC3y!8In!6j -z<_Q~Uv}~8z=kfi)*PgNK@y@0zvvV7QpL6)0#g{sLVq)w==YIgReBwtg{D$+aruUfL -zA1?EBor)cE$k>$PcrKl*=Y(QVZ^^ZR7h@}uTDnfK-ZhdA%?qh`QzFA0S0x%RTFm3< -znk)8svee5UqEfqWd3W0(_m{)(rrL^3!&{F%UP4aZ>*$tMJx7=cjw05*Uy8Fac3>iR -z&2n#bh-TsZqV6H~#E8Um;Dx>R@Kt9o?=AGh%{v*|^jkQO&1J9^xos-Sn%$P4OztVG -zYrj=KqovqMex=)QpsaY`CF!a$mS;3V9*Q^KJ9oaM -zB7=J!T}g@^;|Z2W99{W&>|+vgl#t_AE=Iif@uD~HI>~JH@70dO^>{HQw}_RGzu=Mb -z$~$(F>2A@=)T-f((ULZ$K<2uu+{nzvMAodBL9S$>!>*iVEbd!n;vLCJBMvq=H#gHM -z5i*`|j40pvnSksjGoAY&jLSH9lx6Dv7w(6a#N4h&e8poXrz%U{{wO^WLU<|K&)+R$ -zc)B%Y@_U;RaaTUxYIBk4^Yn7Wx2;TmXh(mB_SVjG9oL#4y0^AZecw(RbKU6C_2ahl -z3B7Lnk|rGn86PEj(bqTFjO<==hSZrbdTm)tr+uT6orkB6LoCwLrD%;9F*A4_~x}- -zc>6+M?Q%=N9flrBexF`}@K+A(d}kfiBRJh%HG*BOvxd1E*%MgjFS8*zYY#D}_TFy`T31tX&Xj#u3tu0_VRFJdh@eQ*#Bg!^Z-wHu(k8c9St+3{gjx> -z@fpG5%I)^KF)!NN(?_o~CxohY);u)s|GcNU%=y#xa!Y5;BBqxH`N}&xIi<;%hQYrB4YpLXZN^ZcQP_cf%2^Q;-d2UxvCnoi$yf}87SYpcj -zG$DtCcbjh&AUEo!u?+=waJGEh%@A&`Mqf~q=`4wFvKRPfNYdY>;Stc2)9kvVtKGU+ -ztDoITrBi((yFACNuPmijKfm#?e9`<^Ma5^4r}t{2%nB0ZB?{B8-)mB4eAdB~VBTlB -zUcAe>s=z5&_91>piLHw;ofJj-Y$1E4$^(v=E7pwt!ZLK@)R)IC6IRexR3;pimN9$a -zNUmi#6fmW`*E%!OSUd6YlddS1=9)6Y+40e+S5sZ}w~CB8igH4CrG(4G98VT$+)=}4 -zYStyr6FBABiXYcLBb(DVT+j%ls -zq)l71|Cu#c%DD)MtEW@>UuEX&iB)C?;6IHHULT!odh?(!T%x-+pJ;2Fb3;cj^&Q2n -zVV%F{97#>VEk{hsdYqk^bpxM>s(Zhl^5i31=KK$y=3Y~7MENqQ$!}K`YVMvCiT8_R -zPTMG$TK=6YBKqE%?7pBa`QxfSlR@*YqXw1QwZez2`lPl@1Q|1q5khrpjAf4Zn2S6* -z%O8b{<|@;=Enl~nnh{cVZCJB6A}A5;0l -zWg=Pg$#n)2H=E4(-+m9(TR%h$aFNpt`l>8pP%O$S?90F>wP~kW`R6?b(FH-oK2Q75 -zafLS{lRtmX)l|J`iVtb1Pum(Er968fp1CZq+&nNVlc=U1p1gB)ayA=l(QF-0PW=hH -zaa&`(DKeLPm*z9y8m`lm)_mLFYKzm|Cwt!S4A2fsQtr@?kr`piK#FS1g(D)ow4;{0 -zSeNbJ9x$40P44RAmoZ+!p&V+rR#@he1|ssZG#TMb3s*2Zl|zU-Q)Jfsa;jF~;rNv0 -zcunTnuU&~Ra+u4PRq1Dsi*0ilKWl&E_)~Qc<@Ng}28vOb1 -zuxpaInl69xwQzRLHTj5m=k=*+lEbw*C3AhLGwqWNn;S>x4u)mBm7mYIp36^V)wmg< -zdU%6~MD8YL{!c5U^c0yD0(=ZS2MbNzn!W_z@l0u5O$S0J-|G`=Zj%k-J^akl#2`stSa9ORQ*d>bMmh6rA|a?HYg=X%z0Bk38-;Zp^s?upwp||$IP15 -z%T!94#RuwsS1=z3u}_FKz8;4cc@?5|lyD*D2=>GP8%-;(Ef^CYkH_!!0WZ?Rsw^ryVI -zKuJunVDRuR)m?f6YOxzS)a%Z~Y-XP>)zta8MI$nTeM|M`JzMEah{^{9tyC@@qHOAZ -zpuABi8>e7d6(N7_MS)_g+gl}G+)D|!*KupIV>8!|EBus{*F&j7LRuoBg4S2ubMPUyeX;O6);m%c?8+6o*8S-Bd+-bIQ_l|hKAmcuVAG<|Z>y507&+JNmnW6XaLb5*7 -z#2sC&-CuQ%O5E3erl_OEZRNAga71eRsneq7pIl5Vl<1r-{mM1=7PqsSO;?}Zv-w7u -zNyyS6)5_2n)~fwB-#deaXHp(+o3_dEn?%M8KG%dFo`~2g`AN@` -zcZyZ}?3a4!^l#DUX1^NGKkEv#weP&AV%h!UBv+5dE44naFXjCOsi$6kS=G|3vh#I^ -z8%Jk*w$pgqc<0?0GWkcE2-g^z)1E7}j(EDZNG!LlJ@Av~;ia={A9YKGJ{Hn4tg+nN -z@Zj8*@Aq4eUajUGJy*Z$PS(@d+SDg?2Orh3^L}d3VfK9%>AtA|=JBeCx -z?mq&~NN;*oe!_yxxkN3FQ3 -z!dB#t9O>Mb -zZt>l^{b)_*rz1kwmEOr+^Rw{JDAv?Yn_mC$%I58p=^=ABu2v>pE_&$GRLHdK&0Vd` -z%HpHXPUb)B;V9tFQ_nNxCgh$XT9kFHcDcuIU{_-Hm8mrTl0tc3RAGh4KzNn)f$qxW -zjUUkYUsCQ&yute96kpMukFkU#OO?I}#Wikry_Y*wOKS_)jUQq$j-pfyICkKU<94)H -zm3(&Xd^yk`pk(F1v)5#qW$I{#{Ol}G>e6kuroH+PRzGomoO#>Nn`Qg6=M>3vw-0;D -z@Cxy3UMv27T&O8!dE@BXt3I*YavzD^VhPr-OH;g~Ar$juKbyL9QT}nHNzO!-l=R+? -z__!r9QM? -zEiW~cVrhKXkn;8M7nXzM&4&B+I-!;LTm6EgIlxC-Of!(f`p=`=61C8SQbjcNh9> -zp>26E$BQ{W%q_v((%&5aZ%*JhC-|HDy?y^%d;ec}2H1coUEQVkO6K3?!X5?6u1o70xyBBKm~9Jm;;tT4VK_okp!>_V9mgqfo%ob -z3RVfM64(N;1z>%^`hcATI|-H@EIZg!U{8VF33eygda(6irNK&ry$SXvSU0e4VBdj# -z2UZxYFxZP=FM{0WRt2mI*kZ87U<1Ggfc*yc -z8(40z++btD#)35lYYes#Y$I4XuySDUfV~5j0+s@H9PBvQm0(wbO$D0@)()&4*nY76 -zU^T&Nf~^8u1@^Pb+kppwIFJrF0Iv}AbwP}9PDbiT76KT6r2q#Y0?+|`02{Cz -zU;+dHE?@Yf&Wsk-|O*vxtSJ~YoTl?tQc$<>=+yvoXD@QY5rbUCM*vQtZqVBo#e5) -z*kg65#tshq|B(UQ%^)nytW0c->u*l`p5vF?h=L2{95V=axIsZF9(cVPim`D`wgdsLpbE2o?0vj -zyA}j%2_S6pQV22ui(#4^^szj`Vy}QO%PS(dCPfHWMCeVF5T>||2xHSm@NYyItqBK8GeM^@%7mGF*hc*|_b}q3)i+ -zl-tCJT5{%#b8sG>h4Qb%&dG9Mem)l(p24AYe*SOH`FCv~fwh4zVSc{qKg%q(a6H;p -zI%wZI%+Ejnt*tzpanIGIReT4lOtOV?hR&`FXd$XfO2GX|y~L -z@A?<{E`|EDkp4Oj{V}l(=~upgsz1c#{!JYERtE;xzmAK5IIF*iL&ruM#NC28%HNC) -zgl8a@1wcEjcM|#w7zRcskw3XC@Y|QbTmu4u2p|r)1Y`k)KsC?+bOOV`1n>i3DTOux -z#DEQeDxd?H05*UN;0uHSr-5YP8juT=15bc9U;uazOao|nbq0Y~2+~vp=K^$w5oF64 -zj76yP3iJo+knG_ojPJL!I;=owVW?a8j%LxN09}*W3=t$<1?CY@2Mht<0B#uQ;(#V# -z2_ysDY6!9lkOOo9OMna<0uq6nzyqKIm;~52BZwZ53bX>Ou!af)n*cL_0?Yy?TM%SF -z-~zQAb!-H@XUXaU9mxS>M? -z0a-v7umOC4C?E;A2IK(`fL7o&@C86$54{IC0we&pfLfpl=mFjX-vByoxPAlTfGnT} -z>;wpa7Z3u(12=$H;4{Fy4dxvn59k8c00oEu&I38X1E3%H2GDJXJ_CdSc|Zd&1WW+} -z5C9wl3}69e*F}({z#zb@2mJ#K>BE=-egJH6VOdy%NNzNG+rdK(U(jLjA5Dv)_bfP6qlylP -zFwis|4m1y{*H$Bl3cylPkoQwKnee{_I`geWYO8C1E -z(}kdAG2H}O9n%9VY0pbhJptMb)AC{nf?vo7v>T?w)*?vYLOAGS3wj-ZY0vcta(Urg -zpl@RukwTCPOpAeTSjZD}@4~Ut@b~dTo}j-klnpdH_Pkai&-LwGp6G} -zM`Ah+bjCt@(6yMJ06l_fdn*KCWW>$|S`yP*`w&DI)48A>F)d~dZH4JL(CMJL(7MA! -zD8RH9OoVDoqt7;)FpWOL=)*Mn9OC_gPJl7IP=<3*9wscGLjXwW7gQkHp -zU8@FAjegd1A3^S*X_#ow3(FStD+H;-(xA@`J1~ttFMN$@^jYF(Oy`20$29spk%O70 -zFM$@s^wM_-vI^7a^F=vSb0A2`1cGQ|x&gEarUyXVVR{NQ1=XAg!tx10VlXW~3H^m? -zE~xJ$?VUoX?gaf5H2Uou^to*drqSoO-Izw7;f{c&N8gnT|Ieb~=)BtxVJtMAW((!U -zwEY1DS&QlFy9lCyX&%s9Fzs24AUiRwWrrYpFr5oy3BM5Th`uYFrYAfR -zH+dk)#sz&8`UTbKIDxTY&Pr=H^!c|fmPQQfNXB$7j4@wSbJCuNhhpJr5FUr=FwmDV -zZ35SwbXMx;d+0}WNC8cwH9#IN()CnL{iG6UU8K8dX{a9yzFL%iZjt6;`=wVc(z1)R -z4%@FX>}LCwr~M-Bvq*<5(#IC*=tcVMB7I?zzPd=~FVdxpbk!pLXp!z%qz4x1(M5V< -zk)B?p(GQRpG}9u@wMYvr(km8e$wgXrkyc)$(R+Y10J>oSx*sPjb4U_^e&&XLu86)t -z7QHt>x57LE8gJ2d)9=`)1L%QK283M@$N(;qKC7u3+DH8-;GDNX2Z^;PxPhvu`)m< -z7W*N&i64PXa`=^;=Kqy^v7eTFFW&o4$-)1pdx*{?A7A1^zSJ80Y6KHMAD3TB+uIu-w9x)!itn!&Ghc6Xzqf@`EcWUK -z5*_}C_;dF_fDXD5oB{MQRvJ9Xhe+LM@Q?CqJ34wV6czf-2WwwA1@z7zsTR)YjweB& -zowb^e3nhR$qWn>>f+E^5dL%Lt?N*YBi32rs;~pZO8fxg_OEDpvDB%fY6BRobG>0l;rN1~kuErf0$^n?!tqd~j>oW*tp-9HuV_h`j`j8>x>v?X;-{N4W|fr0|n -zT0lD}DeAiZRSJ2kr6nN!a~2B9y1xII1tjqK`vhnfs=6+JTMue9{_l_9?gG)7tN^qE)e@ -z|2md>FxGfz+c|hUC@I=GP~2gGCfXr(P9!qfj<#JQVuyVn9#(LQH_`Ez-wE&IyC{~7 -zriB&OndsvSlhfA$?N(oJI}&weM*p=VkSXYbfQHgCTO8sBL5la>906`Q7R5+ml`rEhL5d$5Fp1zQnKqksl -z8-S+KYZA;&JL=YrwKXl}ud9Nt0(Av5Qv0=Kuib7dZEt4>%%bB8Vkpk& -zW|E-YU7#XF2R|4K3kAoczlNY*x@lrzg#AZ=^2T3%`AaGOlG`YL9*)>J{cX7Z=0&r@ -z#^fIYI~wz$zv%eGqq`^qy>n2s`;+&V&jjy{clY__B~tHXe)+vg?!QjBhv-A}{j+Z; -zk?8qH2zojEwRPsAPy?*xun==Uk6)QW4Y8l1z>x9qCwWt#hn$JNiwAEoc0~=gBYJzg -z`#|}E$s_`{V={L0gofP~TVBq^bay6>-@gNvITy2> temp.txt -+ $pc $sourcefile -ocompiled/$amxxfile >> temp.txt - echo "done" - done - - less temp.txt - rm temp.txt -diff --git a/plugins/include/amxmodx.inc b/plugins/include/amxmodx.inc ---- a/plugins/include/amxmodx.inc -+++ b/plugins/include/amxmodx.inc -@@ -197,16 +197,19 @@ native is_user_connecting(index); - native is_user_alive(index); - - /* Returns 1 or 0. */ - native is_dedicated_server(); - - /* Returns 1 or 0. */ - native is_linux_server(); - -+/* Returns 1 or 0 */ -+native is_mac_server(); -+ - /* Returns 1 or 0. */ - native is_jit_enabled(); - - /* Returns AMXX's version string of the current gameserver */ - native get_amxx_verstring(buffer[], length); - - /* If player is not attacked function returns 0, in other - * case returns index of attacking player. On second and third -diff --git a/plugins/include/fakemeta.inc b/plugins/include/fakemeta.inc ---- a/plugins/include/fakemeta.inc -+++ b/plugins/include/fakemeta.inc -@@ -94,41 +94,42 @@ native pev_serial(entindex); - * Example: - * new model[128] - * new ptr = pev(id, pev_viewmodel) - * global_get(glb_pStringBase, ptr, model, 127) - */ - native global_get(_value, any:...); - - /* Returns an integer from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ --native get_pdata_int(_index,_Offset,_linuxdiff=5); -+native get_pdata_int(_index,_Offset,_linuxdiff=5,_macdiff=5); - - /* Sets an integer from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ --native set_pdata_int(_index,_Offset,_Value,_linuxdiff=5); -+native set_pdata_int(_index,_Offset,_Value,_linuxdiff=5,_macdiff=5); - - /* Returns a float from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ --native Float:get_pdata_float(_index,_Offset,_linuxdiff=5); -+native Float:get_pdata_float(_index,_Offset,_linuxdiff=5,_macdiff=5); - - /* Sets a float from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ --native set_pdata_float(_index,_Offset,Float:_Value,_linuxdiff=5); -+native set_pdata_float(_index,_Offset,Float:_Value,_linuxdiff=5,_macdiff=5); - - /** - * Tries to retrieve an edict (entity encapsulation) pointer from an entity's private data. - * - * This function is byte-addressable. Unlike get_pdata_int() which searches in byte increments of 4, - * get_pdata_end searches in increments of 1. - * - * @param _index Entity index. - * @param _offset Offset to search. -- * @param _linuxdiff Linux difference. -+ * @param _linuxdiff Linux difference. -+ * @param _macdiff Mac OS X difference. - * @return -2 if an invalid entity was found. - * -1 if an empty entity was found. - * Otherwise, an entity index is returned. - */ --native get_pdata_ent(_index, _offset, _linuxdiff=20); -+native get_pdata_ent(_index, _offset, _linuxdiff=20, _macdiff=20); - - /* Registers a forward. - * Returns an id you can pass to unregister_forward - */ - native register_forward(_forwardType,const _function[],_post=0); - - /* Unregisters a forward. - * The registerId must be from register_forward, and -@@ -212,27 +213,29 @@ native set_es(es_handle, EntityState:mem - // Use 0 for uc_handle to specify the global usercmd handle - native get_uc(uc_handle, UserCmd:member, {Float,_}:...); - native set_uc(uc_handle, UserCmd:member, {Float,_}:...); - - //NOTE that for the string offsets below, on AMD64, a byref (char **) offset is NOT the same as an int offset - //In fact it's QWORD aligned rather than DWORD aligned, so the offset will be exactly half. - //Gets a string from a private offset. If byref is false, the string is treated as static rather than dynamic. - //linux value is what to add to the offset for linux servers. -+//mac value is what to add to the offset for os x servers. - //this cannot use a default value due to older version using an awkward default value. --native get_pdata_string(entity, offset, dest[], maxlength, byref=1, linux); -+native get_pdata_string(entity, offset, dest[], maxlength, byref=1, linux, mac=cellmin); - - //Sets a string in a private offset. - //realloc = -1 - nonbyref copy (static - //realloc = 0 - copy byref, no realloc *(char **) - //realloc = 1 - reallocate new string with free+malloc - //realloc = 2 - reallocate new string with delete[]+new[] - //linux value is what to add to the offset for linux servers. -+//mac value iswhat to add to the offset for os x servers. - //this cannot use a default value due to older version using an awkward default value. --native set_pdata_string(entity, offset, const source[], realloc=2, linux); -+native set_pdata_string(entity, offset, const source[], realloc=2, linux, mac=cellmin); - - // Copies the given infoBuffer pointer into out[] - // An infoBuffer pointer is returned by EngFunc_GetInfoKeyBuffer - native copy_infokey_buffer(infoBuffer, out[], maxlen); - - - /** - * Looks up the sequence for the entity. -diff --git a/plugins/include/hamsandwich.inc b/plugins/include/hamsandwich.inc ---- a/plugins/include/hamsandwich.inc -+++ b/plugins/include/hamsandwich.inc -@@ -310,46 +310,49 @@ native bool:IsHamValid(Ham:function); - * This requires the mod to have the pev and base fields set in hamdata.ini. - * Note this dereferences memory! Improper use of this will crash the server. - * This will return an index of the corresponding cbase field in private data. - * Returns -1 on a null entry. - * - * @param id The entity to examine the private data. - * @param offset The windows offset of the data. - * @param linuxdiff The linux difference of the data. -+ * @param macdiff The mac os x difference of the data. - * @return The index of the corresponding pdata field. -1 for none set. - */ --native get_pdata_cbase(id, offset, linuxdiff=5); -+native get_pdata_cbase(id, offset, linuxdiff=5, macdiff=5); - - /** - * This is used to compliment fakemeta's {get,set}_pdata_{int,float,string}. - * This requires the mod to have the pev and base fields set in hamdata.ini. - * This will set the corresponding cbase field in private data with the index. - * Pass -1 to null the entry. - * - * @param id The entity to examine the private data. - * @param offset The windows offset of the data. - * @param value The index to store, -1 for invalid - * @param linuxdiff The linux difference of the data. -+ * @param macdiff The mac os x difference of the data. - */ --native set_pdata_cbase(id, offset, value, linuxdiff=5); -+native set_pdata_cbase(id, offset, value, linuxdiff=5, macdiff=5); - - /** - * This is similar to the get_pdata_cbase, however it does not dereference memory. - * This is many times slower than get_pdata_cbase, and this should only be used - * for testing and finding of offsets, not actual release quality plugins. - * This will return an index of the corresponding cbase field in private data. - * Returns -1 on a null entry. -2 on an invalid entry. - * - * @param id Entry to examine the private data. - * @param offset The windows offset of the data. - * @param linuxdiff The linux difference of the data. -+ * @param macdiff The mac os x difference of the data. - * @return The index of the corresponding pdata field, -1 for null, -2 for invalid. - */ --native get_pdata_cbase_safe(id, offset, linuxdiff=5); -+native get_pdata_cbase_safe(id, offset, linuxdiff=5, macdiff=5); - - - - - // This is the callback from the module, this handles any fatal errors. - // This will in turn call the "HamFilter(Ham:id, HamError:err, const reason[])" public, if it exists. - // Return PLUGIN_HANDLED from within the HamFilter to stop the plugin from failing. - // Any other return value will fail the plugin.