From ec736a70bfe3ad4bd5ff6e44bf0eef4363887f45 Mon Sep 17 00:00:00 2001 From: ratawar Date: Sun, 19 Apr 2020 11:58:12 -0300 Subject: [PATCH 01/15] cleaned code, improved STEAMID regex --- profilestatus.smx | Bin 16415 -> 16338 bytes profilestatus.sp | 18 ++++++------------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/profilestatus.smx b/profilestatus.smx index b317e2843e1b765d23228aed9670ca7a5458cb74..b525c25b17a0341739befec5982cecf183d0f71b 100644 GIT binary patch literal 16338 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 ak{e}gILn4*{BJ2{l60nC5oItuuKqu4j+uV| literal 16415 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 qByi)B4BWZ~EcS5zEh*RMkZ~92OufsT`E Date: Mon, 20 Apr 2020 20:39:54 -0300 Subject: [PATCH 02/15] v1.1 --- profilestatus.smx | Bin 16338 -> 16046 bytes profilestatus.sp | 192 ++++++++++++++++++---------------------------- 2 files changed, 75 insertions(+), 117 deletions(-) diff --git a/profilestatus.smx b/profilestatus.smx index b525c25b17a0341739befec5982cecf183d0f71b..9ce5d5a251c629b3c818883734035a83b667a7b0 100644 GIT binary patch literal 16046 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 ak{e}gILn4*{BJ2{l60nC5oItuuKqu4j+uV| diff --git a/profilestatus.sp b/profilestatus.sp index ef93136..a48b1e1 100644 --- a/profilestatus.sp +++ b/profilestatus.sp @@ -1,12 +1,13 @@ #include #include #include +#include #include #pragma semicolon 1 #pragma newdecls required -#define PLUGIN_VERSION "1.0" +#define PLUGIN_VERSION "1.1" public Plugin myinfo = { @@ -21,7 +22,7 @@ public Plugin myinfo = ConVar g_cvEnabled, g_cvApiKey, g_cvMinHours, g_cvWhitelist; Regex r_Numbers, r_ApiKey, r_SteamID; -Database g_Database = null; +Database g_Database; public void OnPluginStart() { @@ -38,9 +39,7 @@ public void OnPluginStart() r_ApiKey = CompileRegex("^[0-9A-Z]*$"); r_SteamID = CompileRegex("^7656119[0-9]{10}$"); - RegAdminCmd("sm_ps_add", Command_AddWhitelist, ADMFLAG_GENERIC, "Add a STEAMID manually to the whitelist."); - RegAdminCmd("sm_ps_remove", Command_RemoveWhitelist, ADMFLAG_GENERIC, "Remove a STEAMID from the whitelist."); - RegAdminCmd("sm_ps_check", Command_CheckWhitelist, ADMFLAG_GENERIC, "Manually check if a STEAMID is whitelisted."); + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Testing"); LoadTranslations("profilestatus.phrases"); @@ -51,10 +50,10 @@ public void OnMapStart() { if (!g_cvEnabled.BoolValue) SetFailState("[PS] Plugin disabled!"); - + if (!IsAPIKeyCorrect()) SetFailState("[PS] Please set your Steam API Key properly!"); - + if (!AreCvarsNumeric()) SetFailState("[PS] Please configure all cvars properly!"); @@ -232,154 +231,113 @@ public void SQL_WriteWhitelistQuery(Database db, DBResultSet results, const char PrintToServer("[PS] Player %s successfully whitelisted!", auth); } -public Action Command_CheckWhitelist(int client, int args) { +public Action Command_Generic(int client, int args) { - char arg1[40]; + char arg1[30], arg2[30]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); - if (!GetCmdArg(1, arg1, sizeof(arg1))) { - CReplyToCommand(client, "%t", "Command Check Usage"); + if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")){ + CReplyToCommand(client, "%t", "Command Generic Usage"); return Plugin_Handled; } - if (!MatchRegex(r_SteamID, arg1)){ + if (!MatchRegex(r_SteamID, arg2)) { CReplyToCommand(client, "%t", "Invalid STEAMID"); return Plugin_Handled; } - - DataPack pack = new DataPack(); - - pack.WriteCell(client); - pack.WriteString(arg1); - - char CheckQuery[512]; - g_Database.Format(CheckQuery, sizeof(CheckQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg1); - g_Database.Query(SQL_CheckQuery, CheckQuery, pack); + Command(arg1, arg2, client); return Plugin_Handled; } -public void SQL_CheckQuery(Database db, DBResultSet results, const char[] error, DataPack pack) { +public void Command(char[] arg1, char[] arg2, int client) { - pack.Reset(); - int client = pack.ReadCell(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); - delete pack; + char query[256]; - if (db == null || results == null) - { - LogError("[PS] Error while issuing check command on %s! %s", auth, error); - PrintToServer("[PS] Error while issuing check command on %s! %s", auth, error); - CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", auth, error); - return; - } + if (StrEqual(arg1, "add")) + Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); + if (StrEqual(arg1, "remove")) + Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); + if (StrEqual(arg1, "check")) + Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); - if (!results.RowCount) { - CPrintToChat(client, "%t", "Check Not Whitelisted", auth); - return; - } - - CPrintToChat(client, "%t", "Check Whitelisted", auth); -} - -public Action Command_RemoveWhitelist(int client, int args) { - - char arg1[40]; - - if (!GetCmdArg(1, arg1, sizeof(arg1))) { - CReplyToCommand(client, "%t", "Command Remove Usage"); - return Plugin_Handled; - } - - if (!MatchRegex(r_SteamID, arg1)){ - CReplyToCommand(client, "%t", "Invalid STEAMID"); - return Plugin_Handled; - } - DataPack pack = new DataPack(); pack.WriteCell(client); pack.WriteString(arg1); + pack.WriteString(arg2); - char RemoveQuery[512]; + g_Database.Query(SQL_CommandQuery, query, pack); - g_Database.Format(RemoveQuery, sizeof(RemoveQuery), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg1); - g_Database.Query(SQL_RemoveQuery, RemoveQuery, pack); - return Plugin_Handled; } -public void SQL_RemoveQuery(Database db, DBResultSet results, const char[] error, DataPack pack) { +public void SQL_CommandQuery(Database db, DBResultSet results, const char[] error, DataPack pack) { pack.Reset(); int client = pack.ReadCell(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); + char arg1[30], arg2[30]; + pack.ReadString(arg1, sizeof(arg1)); + pack.ReadString(arg2, sizeof(arg2)); delete pack; - if (db == null || results == null) - { - LogError("[PS] Error while issuing remove command on %s! %s", auth, error); - PrintToServer("[PS] Error while issuing remove command on %s! %s", auth, error); - CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", auth, error); + if (StrEqual(arg1, "add")) { + + if (db == null) { + + LogError("[PS] Error while issuing add command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); + return; + } + + if (results == null) { + CPrintToChat(client, "%t", "Nothing Added", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Added", arg2); return; } - if (!results.AffectedRows){ - CPrintToChat(client, "%t", "Nothing Removed", auth); - return; - } + if (StrEqual(arg1, "remove")) { - CPrintToChat(client, "%t", "Successfully Removed", auth); -} - -public Action Command_AddWhitelist(int client, int args) { - - char arg1[40]; - - if (!GetCmdArg(1, arg1, sizeof(arg1))) { - CReplyToCommand(client, "%t", "Command Add Usage"); - return Plugin_Handled; - } - - if (!MatchRegex(r_SteamID, arg1)){ - CReplyToCommand(client, "%t", "Invalid STEAMID"); - return Plugin_Handled; - } + if (db == null || results == null) + { + LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); + return; + } - DataPack pack = new DataPack(); - - pack.WriteCell(client); - pack.WriteString(arg1); - - char AddQuery[512]; - - g_Database.Format(AddQuery, sizeof(AddQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg1); - g_Database.Query(SQL_Add_Query, AddQuery, pack); - return Plugin_Handled; -} - -public void SQL_Add_Query(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - int client = pack.ReadCell(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); - delete pack; - - if (db == null) - { - LogError("[PS] Error while issuing add command on %s! %s", auth, error); - PrintToServer("[PS] Error while issuing add command on %s! %s", auth, error); - CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", auth, error); + if (!results.AffectedRows) { + CPrintToChat(client, "%t", "Nothing Removed", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Removed", arg2); return; } - if (results == null) { - CPrintToChat(client, "%t", "Nothing Added", auth); + if (StrEqual(arg1, "check")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing check command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); + return; + } + + if (!results.RowCount) { + CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); + return; + } + + CPrintToChat(client, "%t", "Check Whitelisted", arg2); return; } - - CPrintToChat(client, "%t", "Successfully Added", auth); + } /* Credits to alphaearth for the following GetPlayerHours() snippet. From e05618849419b6baece0dd48216d15a9e40c680c Mon Sep 17 00:00:00 2001 From: ratawar Date: Tue, 21 Apr 2020 01:05:30 -0300 Subject: [PATCH 03/15] Create profile-status-updater.txt --- profile-status-updater.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 profile-status-updater.txt diff --git a/profile-status-updater.txt b/profile-status-updater.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/profile-status-updater.txt @@ -0,0 +1 @@ + From cd984f64f351d005f7927fac27f96e4e44304545 Mon Sep 17 00:00:00 2001 From: ratawar Date: Tue, 21 Apr 2020 01:05:45 -0300 Subject: [PATCH 04/15] Rename profile-status-updater.txt to profilestatus-updater.txt --- profile-status-updater.txt => profilestatus-updater.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename profile-status-updater.txt => profilestatus-updater.txt (100%) diff --git a/profile-status-updater.txt b/profilestatus-updater.txt similarity index 100% rename from profile-status-updater.txt rename to profilestatus-updater.txt From 43e367a3618fab2c8a279b600df64c3943e6b90b Mon Sep 17 00:00:00 2001 From: ratawar Date: Tue, 21 Apr 2020 01:06:40 -0300 Subject: [PATCH 05/15] Update profilestatus-updater.txt --- profilestatus-updater.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/profilestatus-updater.txt b/profilestatus-updater.txt index 8b13789..79ac6c7 100644 --- a/profilestatus-updater.txt +++ b/profilestatus-updater.txt @@ -1 +1,2 @@ +aaaaaaaaaaaaaaaaa From 0e6cad37e5c626fca17b016a0c7c4a52d7e8d6a9 Mon Sep 17 00:00:00 2001 From: ratawar Date: Tue, 21 Apr 2020 01:13:00 -0300 Subject: [PATCH 06/15] Update profilestatus-updater.txt --- profilestatus-updater.txt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/profilestatus-updater.txt b/profilestatus-updater.txt index 79ac6c7..37911b6 100644 --- a/profilestatus-updater.txt +++ b/profilestatus-updater.txt @@ -1,2 +1,18 @@ +"Updater" +{ + "Information" + { + "Version" + { + "Latest" "1.0" + } -aaaaaaaaaaaaaaaaa + "Notes" "Changes in 0.0.2:" + "Notes" "- Fixed issue with GameRules_SetProp on plugin load" + } + + "Files" + { + "Plugin" "Path_SM/plugins/testcenter.smx" + } +} From b341428dbaf101dfc4980c1c2a7cb7755a784586 Mon Sep 17 00:00:00 2001 From: ratawar Date: Tue, 21 Apr 2020 01:18:35 -0300 Subject: [PATCH 07/15] Update profilestatus-updater.txt --- profilestatus-updater.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profilestatus-updater.txt b/profilestatus-updater.txt index 37911b6..678ffe9 100644 --- a/profilestatus-updater.txt +++ b/profilestatus-updater.txt @@ -4,7 +4,7 @@ { "Version" { - "Latest" "1.0" + "Latest" "1.1" } "Notes" "Changes in 0.0.2:" From 358466b560d08354937b258bf399a05cc9872941 Mon Sep 17 00:00:00 2001 From: ratawar Date: Fri, 24 Apr 2020 00:41:05 -0300 Subject: [PATCH 08/15] v1.1.1 --- profilestatus.phrases.txt | 29 ++++------------ profilestatus.smx | Bin 16046 -> 16047 bytes profilestatus.sp | 69 +++++++++++++++++++------------------- 3 files changed, 41 insertions(+), 57 deletions(-) diff --git a/profilestatus.phrases.txt b/profilestatus.phrases.txt index 4390fb7..48b592d 100644 --- a/profilestatus.phrases.txt +++ b/profilestatus.phrases.txt @@ -15,28 +15,7 @@ "es" "¡Error al intentar obtener tus horas de juego! Asegúrate de que sean públicas" "pt" "Erro ao tentar obter suas horas de jogo! Verifique que elas sejam públicas" } - - "Command Check Usage" - { - "en" "{green}[PS]{default} Usage: sm_ps_check " - "es" "{green}[PS]{default} Uso: sm_ps_check " - "pt" "{green}[PS]{default} Uso: sm_ps_check " - } - - "Command Remove Usage" - { - "en" "{green}[PS]{default} Usage: sm_ps_remove " - "es" "{green}[PS]{default} Uso: sm_ps_remove " - "pt" "{green}[PS]{default} Uso: sm_ps_remove " - } - - "Command Add Usage" - { - "en" "{green}[PS]{default} Usage: sm_ps_add " - "es" "{green}[PS]{default} Uso: sm_ps_add " - "pt" "{green}[PS]{default} Uso: sm_ps_add " - } - + "Invalid STEAMID" { "en" "{green}[PS]{default} Invalid STEAMID!" @@ -101,4 +80,10 @@ "pt" "{green}[PS]{default} ID {gray}{1} {default}já estava na whitelist!" } + "Command Generic Usage" + { + "en" "{green}[PS]{default} Usage: sm_ps " + "es" "{green}[PS]{default} Uso: sm_ps " + "pt" "{green}[PS]{default} Uso: sm_ps " + } } \ No newline at end of file diff --git a/profilestatus.smx b/profilestatus.smx index 9ce5d5a251c629b3c818883734035a83b667a7b0..488d329aa21e094a4cc2a74959a3d92382f0c623 100644 GIT binary patch literal 16047 zcmYkjWmsEXum%dnix&#T-3rBB3luNz?(Xi=;1Zz4io3hJ6)hBkI|O%kO>Vw(&w1|6 zleO2o*UXxkHM8ga5s{WwQGW*yUn>d+H_`_OhmQ&m2e%Cy|Goa3myF@ykYTvP6b>$# z91acxhLu9#;3#3Tk1*`?0}k#hY=(*8YG9Zaw$1>xIYVK2R7To#@_#8Ul>NqhJ!PK%~7yn z3&ZiS8D<*p0fyOOb1rN!tyBp|1SQY@Bh)Tc5pT`b@)GZXY>EC&&pX~a6s~W%0sps z>Q6)r9FDJjs)fivDm2^zOoT4-3Evus_m{F3nyaM2FBS@Y#ozAifp+7R0~ zbU7CRwTn%5ALRI-w?DLl{<2bWTKgbEu92XaOgi$t31wi#TlA?5)w_R%Tal!fFQk{s zLYoN!o67u~$^x4*q?ZR|mxN@OQAGm>0-J$YkDMs4b|?Xr2tBLtxgLENo_!Q9ePU-J z!Nc&u|KNlFzz2`Pi*1L9U4-=RhJbDbZ_^Mq4no-6`)a-Vy!kg@$Sym{E>TD?BgrmD z$SzAsFAK3AW3e7j<8B`%Py*5sdZyvQXCcahn-7AU*swP&7NJdJkG=%{%@NW|YAz8` zFud_;2+Ufm;Qv`8yNo2glp+1kAe-POh<{TC7BcCjnVw(34}_jkc;o&5^!Wrgg-9>g zu^#IXf?5%RauFbT2#`bsNE8C34FOVw0BJ%9nu8BshR@C1n=;0Flt&3DMCh4?r*Qx8 zlww;U{~Zf<-3fuM94L8D4g8mkfNq4KSOn425b#cj*x~=A0hWUm_~1$S;J+|aXY3b3 zo6KaFK&(e4lz++TFrt$RbEvrq%hlieQDcg5COFy~TH z1s3itSFx|Wc#$!XgPp6HTlXrrtoue?cNU$x{4ZP7Ija7 zMEfnAUUsgOMGPc9_x7De&7eF?#+9%?M3#o7&#oU&*TL{?g{;2IoU?y^h|0|CmiqI( zJte;{6lLyzU{UIw*FupzzXsN4XJ@o%?if4Aj@zyj$j)2q5gVP^>-8Kk>*P46fFrHE_d|)R`5YpCz^dx$%W(Fq zcx51Q#9)4rdFtHPfFaPJdFh$E;P^h-jwX!C-ukAh<%VfPd0#QvRK)q#zQa#xfqvL0 zqr$Q8#3SXLM$fMsd&)RlyM)48$&p`ootpJ!LUDZt$TvF0@^PaWxTu>k`9s(s+v>YG zIfWdTQ=?&glH0#Pq;f~g!^)GR#mZsX1JVMnlkWC$G zMCRk$7LiuqtrvgBz_rJHMYOwS&+!g(GbhO2lA6U4JLNv9Vm(1c7xeGT;@T5M4KkJ^0fVonkbM)&iCOEX@E6K>PaQ)y`dw(Y+py!_S z3aJ82NrIGf+ktAy4cdfksI$A~2psKjyw9kfs_$&veOzA zWS1dbP@6*wRO$>r%qY#{*|!=!o_d{ormh*kJAXf_;frR~=-?uB5Z_AqpOaLB-6Eg+y%E`Tw!(3sE^MF>j<}`^tak8eS&0Vc{@909j zjaYYW$?AR>o866Ev|eS(5#*zJkeZM{5aonpfKN~ox zo#F3_7xt170$ula5T$*cfU{O0njw^jwdEPk^XoI=>>OYA+ZD%MKn14?_=EoQtR047 z<;qcP2B~8pb`MJ6TDGomJGcx={LqtH;C-0HG_$WcdectYa`T=$5W2lR$B}&0*V#jU zWn=zV2mSB_xwIwIZo+(NhKaY^alNqCoLtlWm&$cJD6Qk6xHht@BFMjH`V{T%)J(}P zyJpcL&Acc2HqA}Vm(O7$w((f!!{}Ok`kKo1!VcDoqCBs+~|vbzVFEEeA;J|17B%)B#=X+ zef}V==YzbX2b@;I1$WEPJBIQpVh#+OZyL9y2tCA}CskdCk=6}m%(tu1I~F2`hkOY= zdY?VM8o1B|rwtc#nSbt>`6c$Do%OKd1{4EGKOe3IA+4M1bhhWy{E;X05TFoc)#}W9 zxlZe4(KDR!ga!7aK8Vm`wHM;}(_@}BAzFm>Fx3gnc;8tLhPYlep?9c%RF1J;+m*Q! z+6SCNK(CcP8%XOrATd@Wk6Bh`lA$Q{4os5NF%fz`k2Hg+x3`Dz(HtJ0_3`aIMi=pi z@>f^YU4YXoQpS$qRJa6{>e;WF4aIg8f>{JZ=*}};d-S~{ zHF%P&hmcoEMYCFxprhWmn!_-D{_%;&PlS;MQ`sW^TEaU3Cv&%M{{51mG}h>Y^|_1O z;h|X8!vJGHsVpyX@0i`qDuoVr*28nsUiG;4JbgjPN7rej^;}4Yyx@9Ca_<#7^(xYO z{Z!kiw|MJm<-xan^p45Nv~Tt39g#zV?G!>h6gzIUUY|SOY7KGjSPwS>&UmIz0p~#U z9XDkk`KQh<{oBqw|LR@KpB~~5AC7<`PS+$)G5nhVCr}Rh_7U^?l0e}$5v*bXH;S(R zkk-f9dRdg(i%49>A9f#;wzJSXdY{K#UHg&N-(W?wB=i7@9^ftevhE(gB*eTU^iV!u zrHe6~(QMCq`TMu902VtVu<(no(*lLXyNMksEk%yx1E-CZosuB4grx(( z`Er`y5Iiig{d{MD^F1IKU&e3>I4DY|)Rwn;buhmTtLNei1x_I>znh9PDXfP|Z-IrQ zSt2~^G}?jMyPbKl6S-_L2246@cqWr{M7X*xA+3uI8{xvj z5%Gt3x~?IuSep9cUZM^GEA6TJOAnlC3j4^UXsPn^~b_WnGT~tgxPVxykLK>Nx1or2xjl`qR1VDk7@gR&31q!GO=} zo+7F{X^P1ISm{6l=q`-1f8Ar;pS=*Y3ACfwm%lRrdk+LXntHaK;Pi*O3rr}kv|E_7 zP4b_ZX8DU$PIf;#SpSF_iy523NAXUB(_|#1>O)_&t!42-vg~Hnxt&Uh_wz#P7lN;%eW9xG+tO$ z&+Nr&O}lz8Jv{AtNvs*-ZYZ-egz=Z3#n#DBkgCC~WkKT#?m^7088?l&-tAgf8b!OD zGR2FoT$&qR9W?IhM|~p`D@57j$KP$wKUa!!#obg_P&lc+%nzskI=s8 zTlBcMix%U>)E0Eiusu{nA4Ss3v1vSaCp%%ky|bOUn9S{f@Qe9p1dYrTfs-x*=#R6r z7RR#FAYBAwOD{s73r&7;-oM3h+PT|PBQOujHfE|;Xm zcHzKKN;Ex_)l}>%NRwMRW?z-*)AF`0d{U*>(RhKReRE^Ea#P*norSS-%-tmYhgzfT&hbv;lFX2@LSyl3dLWr9b398y+#%4@}H z`sa0jZf-nPvJQyz3X7+xRu=J(ZF42R4+uQ=T{@14zL5G(w>08rP=nvh0FO!8HV|*)<{RY!PSb8MZ4=> zUQLJ)vHG5VTH_ni0{wACl_qAA)tKCp zrYMtdl231EgikC`l&FR4Sz2^nPxJ?Ur4d=o;_(ySNY4hydRQGKLhc~%m_VcFf9Tk@ zl3FV+wCp?lw&K6xmrj_ewy5#^Y*W1L+`v_Oq0tkY(jE1B(e$^qMp=48zE=76spfGq z+Upl9;rh*&Zm#Rp`CQ$M?Aq3!;?{@JGV`4aM&@zF(=zSvp=E+xxu*W5rUq|&Wmk4J zy&4(Bt3s50Hd>X!s`9 zESoZAmM^6{R^%r2Ppn7pe9I@T4mN!|Jg?#JP7CzxX&k#9tOaBJ1;6JU7oc(1wjZWhAFJK3XY!z9H&n}tWy~*ikdbj9!Rs~_-M_f5k zZ3sOZE|at;Es-d-430rZ9HYJMXe?SvR#2lz1nFCOG)FL+1wn81Naqe=1L#?fVP=s6 zt`_}+0s70xAAs=kuB99JYAU>*7LD{n=UE4qu~HY)XKyYg z1M_vZU-{2w%@eJuPCa7zr!jAKRm)&oSm)b$mX%yrZdj7VaZ{-8t*kZ|tqZ&%2A2Fy zS8dcSU-XOT?lcympTRID+nqS$UqPeL15wNBe$Nbj>M4ic_<7|YW4Ry`Ieby zqEMk2(pC;_Ejotc>1VCp`s88e@AyMP~y!tS{1+ zHt33~VhDR%MF)hY?k?D|X-+L7v1~hhWRJE3$AS(G9JWxJ14Rc~>+~it6BvnoFYdSJ zeEAgSFOnzHM4Ns;$VAQ=xmsoTm(48uG6>BszWrG(_XKw@{ZZER-igoYW<9Yu_`8&w zU4AX^otxTY+^HNYEq3C)a`qzf+@9s2Lo*?YLZa1sVgn7Fv@al?u+~298<7Gg#Kt77 zaX&;EPMza6ijg#~bCg{CG|n1iuoxt9Yzfm|HEzAQX;%~~nK^e&Unpl|t>{@gnIb$4 z4K$oQV(S{YHNT+j?y_%S*7T-0YFPifOG$woL;>vVLeWJYQy3qYAD2(lt||LqnWDfv zmZp`giKDvg=$)*&p^E0Nu~IM5DLDkuCIs#r6HOOV-WoUF2RO2~(;q5h4Tqk|y=&W7 zYeMqIh}aenCoG`HDT~Fzc%=EUuR=`}hq#kR6m^cF^fh*6W8zAMQ-=f?F>&d_X%lwx z{N_rtwm|`82v4zc=O$f(G;|sY{``w6;9F90O~U+W z&8s0$(Sw>f-@0A#tk;2fAla=jR5%>HZ{j?&T|0M7C#2Mn7GutBKocHV0^g@ zQ>z~XEGnceyO}$l(=OaKe+)da)HQ!iw@Hm$#rO@%1+4-&W+eOjGE~^V`(j9|X!*1M z)!eMJlOodM{4!ASp7Y<3yH0Z!M&))hdrS$xtw@XRzzwF6`YI?sp6)M z7+h6jCSNlCY|{t(u-h~ZJ)2N(U7%+;nyVc9jLpWxEckE}t@AGF+j-6+u3gKMOl~TU z5D6dihia2qUsmm4Y~Ors;z;7gx7Un2@Y7Sjb9s zj`$_r7`AB@2#lhCeaX?YRv1)s!8>+{HhAwOk^Ketd%t3tdxh-r+YW6;dEgweCgo> zV}aYuEGtl`^_yjd_kt_-hmC35nA6)xNqA#re*8Gvzl}a)Le&*DlwAVK{NDJ4>5^GdU zWN&Y8Ncj^FPh!g4%ph&SU;jpAULyQ3sSRe&3Q)Q0Bu@iTsf&D~jq~N}I`It|K{>wz z`vp%_KP0dFy#%(F0mxPMM9P{wr&%9rz*7sGm8(--`PFZt#_C0U_*4S}gz?hmJ&sq0 z_a;ReEhIr2?Kzvg$CiB>p1t<6*XD#^IK_;gF+(x=?bxBYh!%lzyH=HfT=44~7#CN9UW*<GtYU(S1^N8qPrU>JCXBGHNUA6O4u=SPwLz-vG zRa@{<00H*#mdUs9)`yqYNDZHmBA#Ej<1XB!D?}P$oa7HOQ@=^ikFb&WNlW$K(OZ~v zvf|#7NV$+Y7Jhad*4%6InTnc~cNj6@PG&y@ilQNg*6T1*ucB@Z-kYY|Q*u+fCndV& zyRKL_*}IHVNGsgWP&?}j)4t@cWDEX~sz_UiiKf+VHJOiSXK}+n>!;I9p_7zAS6gdh(`}k*ww+FD z=_k_+1?suJ0nYF1GV3d=Bq?tMSa)|M4Xgw5E&~4~7zXGIV{q|6-z!~IunS#?w6d87 zk`4^rqDhzR-p@P^}` z_$Si_hGp5e>-&9Js;2eg%Gv}zXb2;p440wrupAxmD~S08P~u0~tV>+UHZUmp=|$lE z-SW|hPyb<~oFIn#>y4j1>lFL0?)2NM&>KZmL!O$>nAx}LxH3XHA>?q<2MKnJ!M9Z$ zE%RKe@tl6&f68h_e>>usgK!o`IJXJ-qDEc^f-02b{)h)F2RqaeKHQA}uEYfn%InF| zZ#o1C)<3cjH&4&FioN(H($tGN9G>}jEIDIrgo)vxqC7?CmwtfA_E9d}eGJEYqh%$< zdcaDYOf$^@vX3OjZ$$sJj4G;G_2@1+Y5Ep6627sT5vBHOro>Q}_fC&m4uifB z0YVFO?IuH^8U6=wk)3o5{n?RUX)Uol2^4Mc@R!`m16`L7y~#mYgAKSNktP0y zC48r{@*SBGD&^cn?+~WH7I1&~&Ps-g<$yk{VE$IG8OqFD@!6@D z>;+|H|GjHOQ0bv|GTS#f$Q-W)pv2W~Kz~4${A=`&nonGriCtc}`ZJ7+#|y;dr-d<< z48?e}h%^vKQznQTTfVq-^fV>U`(HKk>hWR(E0gMxOY(|4NwLVriuOqfQ$1#dA|D(Y znam55B@__)vlRsHesOzJAyH@QU3KO-H2vs@uSD5)i8t#j1eHO{2vt?jr?{Ww^4}+I zayn-M%MxB_``?z8)qgpYprt3o)#aQecLuA(2;6G;_@wwiyX!ceQy25b*q5`TdV+_p zS5wo{z^oKvDn|DvxUCDaT-QgX-Rs2_Mj+>-jJ!#3q-rmm=OXs)R5 z`V>P)C#p{P6f=KAr?63atVK9-y|hRr^>*G*xwm$L9bO(zhfrg?I}kRk<+HR%Gm8{3 z-Ifq%>p?{Ij-EWOm5-Zm&hydfzS?%RPBdH-yg!VrS5o%Aw(BTjP*FOYWU5EBpy*gu zfbQrz+%M4LYNT93hckUyg~N&r?AQTZaAz6vAXe9^f-jEEX16pkf94FENiU+7B}|rg zGS~4#L{O9CZkG34QyR!1FjKI7>M+%&{iLJd$5-!Rt*fj1G^1H0uC6y5=qF)pPsM83dGnQ-j!laW(M3ZB1{W2$t`SZ}kxL3jqxH_{jwE+KPJ#l5Ag!@+; zud{>A!$)u;Wq;O`HtqQ#lbVN?-n_N&*kGsfz*%gL9Il~1#m{sJFAM`!9d+bAy&)Tv z=9gXl*zQslY)>Ac3=NXMcY*#gk`sOz=|4e2j@X53e#Fd0GzRhbl{pt4aryChD_qI4 z7zN@-`L!|}-|ha{On~{ie^m!1&LO^Y`-NO%c)@+wXTvta`J2*^18Q#T5wtW!^m{bn z>g$QZNCU0-N&#eKX0)D?LK5AfMOtO7Q6r#b1-%DLk6A9Zm$mBoZ&>>|mgr(tj#$~o z%Z0|pV}N8g$sNsI&x|H{kh1yGz{PdY_`n4Yv@#M@zIM9je|vFtErR(N!Mj2CR+0va zd(BMi6_`u!Kk({F><5oLyCMg(?FXg@$UyeLizWe_@phD+jjgYrOu*a_WW@vSAaBzP zZqWySz$RC<#yxisp|=--i1ViNZ0ej^CeH0o!{uK?7uwtUjq4|2kBI&ABw=lig8e{= zfW%G4>0sa{*Bm7qURRrR6f|ejQ6qZ-?7}fQy<2uu%rBW3hy(_L^IcN3bq-V)x3U=< zTFX)Eqi38;!J)US3cU!oFD!4O%DvV{52SBKdEke`2b$+@rCzXwJLKlb8}H4j&=~XW z&#iw}kn+?8_R)jpb6`>sG&0Eg@In2#TdMbzNMd*PLi$;A%K76P@zJ6}ulVy>K6vEt zLF!pVD705I{Nn4@%Xf3GM}1kTTm7E{VDR$yUbwf2D~>YMmu>a}<+d_Y?rG{G=s7SRCV3KgehUdYd6PWNP>f0iPD~h{kvS@U zu@~ryZaR(Nou2u25mstxs~gc= z{uU^tx;Pl>sbkTEfo0-Ec;D7swLMhGzUWxo)KSe?yuy9jw++U)os!5S6Oxwmakt<( z%5_uisET_WunLlCA|l9}8W4G#lNujmu8?00qjnqbWh&s$4nds`-lDuOq%;wq4t>XX z=V*{C7_7z!_u0rc8Xk%>^jy}D`9r6rprWG5l#w7FIZhq7yxsyoUima@FtiElKqT45 z;djZGU|B%{CiN1>{i+EciIiVB(K`Ie_;RNiDOy@JUoqdVidJ%$anRoT8$2<5b6!$j zW<2^Nd;6Cxb7pMS$=FD5QQnePsK9e+N-o-^{3CJ#g53isv3_;TiH4(OgW~~7o%-+Q z*YBhCQb*xyGV-@*?bbBA`*C9gZY0^iU#?@^Dl)T>gtn>1R^QJwRy53Xw3uMzh_*-T z$zUoXSW|xb(2=%v3d{46+JFMybS-lM5OYvvR+w+(Tx4Mj`B1QDZ z*H1;7mgCH-d|b>TRqr`{zElI^#`Lh&GaJ(>PhBJTYxSf*EaIbGO}0Axp3~`lP5UQI zeoLl0`x{3ESiK|}vqgc&2AUhCW46aDME+$LIaoRKcGdI#Ro!XIgUR1$ZuDcP^jGNb zUn3ccH9=AU^c9>frUK~}pTi(d4-dr_Dv1t#c^;%?&3=ybjvg;ePj2;+2Ee)l5HBUO zMxm4UTb+Zwx}GvOhxA{hU(?4Y9O%; zXgcT*pi8MYw}RK#_Lgj2;-a4QDsD~qm&rA_Vl51xRaKb%e&PIZ`5?^J*tc_i@#73N%WNC)^+>@*HFegv4fJ%sQ~rDOpS)iSF~=Adk2jQ>OK4fXp?Rc3K=$!LVL#PhplNYQcnyYUADYT;Od998Q)o%5C9{ z-o7}Q0)jICVLC58-~R0B{OZm=F3ZV3&Esh1li%_g>UqOeCFL)NU*ocQ3zhuHumqptY_o9w?h<_XyWH3(Y1=th|tc>X9ws$o*MP=12*9;P+NSV*S0aEfN5!K*@~66aOR&I3-MlNg;wqFQ z58w%L@gWJzs+3+*49bxBq+&jYIEqD${NtTX{4;`D-Jc*?Z;3>wI9`mcZOqk^Yj(;0~&{YB(F%B97d{6C9#E0EK-}ECPc49^s6?$TeIg;UnqsworHOZ;V0%ZLG2>TuJ@<^J>y(tt z~K|h<}6N^xReelPl-Swz%)@FH?U6ox` zl~w4GyFw`pEqE0@$<)1(Rd@}Py`}%Q7&KdSw;wbH;dp?;f07@&c~p|a_ys@d+nqk- zXZ5hoqDI|($kyt+s>#ra(h9-Pvn1mkh^nzJwJf2uTKO8q=!Zx$mqSJ3CQ&0XDt{3j zY39JwulGoY}we)VQ;q@GJuJ# zJOL(daA;C*0Z*4)O=%hB+=qMYFP$z2YRARJ7?t&1gS=Sj-`FUp-EMvyQ)0WMCL`Ny8Ey)5rFzcj*x2=Xl&e_{hTUHI zL}Iube!Asp;@#-Yf|06F=(_^m$T7=QjXrb4kbmrk39*@0ea`;Hu|yXp zM&?-gS~|BmRf74)8EcgK5FeK#nRc8F8+O<+gH4?n4gpeq1{Rr@T#}q zzVjt#gOmCCGg3#ZfH(6Q#GHu~cv78Bqg#Hrzh{|;zuf(CR)eyZdK`7yyeS9e)knnl zyFLAwnr%ZIEq>n0yx)mbcj*Q?V*M7~x2()m{(lleX})8e4Q|bgN_b<6n1np>!H{Y< z?SY}#!t!1*8iX|C?{kz2$l!5n+^k+GyT&)UhIq&04rT#m$%TbvjDmF=_q7>fee2~2!~ zD>yRS_n*B54Yrmb{P}CgF3~%`!2)|mC{Cp&4}xo_E7`%W**5?w+|xIUy3V0dFpc$xz(F(G_I2dv*F^0ggL zx4JCm;+{4@%S~EEX8Jv$872>Jz3;uY9?Bd6Q2f)ew8ilcU9?NZ2`5aO3!u9?dol39 z`CFyP>Gp%~(nRmzKn+A5yYuDZwr;$4a=g(y3q zVEFhbz}=0s^eJIGW9Er2ktf!AO>R2oCY1BHyeGfE^nxG8Yrzmb*>VgOyS`lLSH*Uw z=-S-+5_aL|L$bv{z9Ij$(_Cmvn|wp<>(i3fBQUa+0B7W0A~mh`)4rc?X8zQ;KIWp2 zZ)g6}xIUIbch{LqW?Cz`mY?rS{=&FEj(v9*X8q*2KCYwDMtq;w#}?Y2{XNHMXMbP& z?b_}xk*k8VR>mpvrIN=VX|10VFR(S%rj*;n-y~biHH_u6ZPQJFllXmK?btuGr?6eP-Poh&K5mpQ3&Jm`@ql1}7y=YA z7z={d^B#hhqwc)&iv9?)02)io}MFm#Yt_Klnc-GzeP!59s$69ck1a*anEu zBg0h}rO)h(SRa%-M?en^Li~!?g$gqT50fIl;=Qt6iUF-tr){fTS#e*#JTjcQ620OD zpu+~qtM!$Pgt_io=?khKDmnFGcm%_5@k)q*pu^cqpPX5)@GZme1nN zVB~~sbj0y~G2qGjOJx_LN6;2g??=Lkkl;A~%iIBib38<62A?=etlwmyt@?nRO+pU5 zgUf$e3Nf1sRdJoAZ~!3Va0>Mp#>l}@?#Dt6;YHC zKHI?Uqi*OFy7rY+wX(qw1;2p8rE*^CzACf=n?e}9Tl`Xap6;!!>5-+sHssu{1(6vI zLUaq)U)c67Y;!RWiYkf%K_d?p#(hOUWYGKZN_Q&@55k;4sw&k-*HK1!ucN#JusZ}H zAXSNB6V^e5jryM5t3vLq`U4g+?{0LB&$B_#ZXTj13M@l;41usM+YPFRBbVHGipsLNS;QA7_3mYBS@axS-W%P z`+IYh@j#Hgl(2T^qvzJ0u+a&cA6i81fvf+eU(fG5U%)JTe64k?SZmaXyCv@GyKE`p znuiZr;+LrXr2pO!-O-Hb`IAg=G52*5GtrFX*yY$0HfIs7C5>^iBwbFCjZ}AM^FSl= zKQ=WH5fBe>*OV{q03)abIKm1pqW$01u+ULcaSUYZcIb_Mp3=9W<{$uK>$iL5s#ToK zNJ{E-f)u3Z@Vc;IO-2rDvUjj1gM$r3Xibu)bJSz%6AjPC|8F8+lK;0WQGx*R33f=1Lik-!?X<|(KcWdR|9jY9U82b!Ltd~G7<rsYlpiE6lqH z%sbpG9tMo9yElW0s@3|SoGqS0Xc4gRu|t9ZtNl>Uds#zzemDrTEd+M-Lf8ga7S>=q zJPe~J#K&Hs4NMo-N-hkr7+?fU3Oi+FKh#a{BaGs(L!f&BQ|^5IC@^Jg0CcZQu(K`8 z@%GQhrUF<@6v$9SG1zI(VQfbMi(3o>QfYGs3-lZ&6nh6j3&Mvn`hWglYe5*VVAjDA zn4$j$0xabWFwe>W=<2e2S}@8y{42P>aulu~1dBTt3F>{hvdz-Z&<}mF>4CY)g@u*- zpF3Dj2f^z9`VL0OQ6@$_wWK$dPt>&lJEPbXjmE{Ao{Vl3NyOSe0ZK09`|Eb1CK>I& z*aEMsEov>^~h! zmsJJJW(Nw*g=?g}>gIrG0#Q*~Htou0QO2-XbLF{fx~c=aC$o#2=6|3)z5T+v_@}a( z9fi{?Q%WE8my^eWgLTh<{M}hZSKHTo!5)m0Z)E=Bpv5aGPv1FI684Lo55!fAs2i9< zaIv0Ds3rbPC%^#S%U+dhwc2vRp|*v$v76Y*%HK1XYqe4) zbJ<8_^v)dDW^-NNK$w{mseDSC)fbitn9kJ5H+IjCzfVHJMB2dYtIFjwj zQ1Q|h&|KGuwlFYBzc&LXl(|Vf7rUv4ZH$8sg5V)8_SY~hooJHRkM54CN3=AN_v3tzkrFHC=@J=lL^bzcQoK9#4Ts582z_NV4S&TfqRb)n zQfQ>riB=tZr+g+P%#0;WHYe0i?x7VzAAIoGmFt<&$f~DuZ7qJR$Bd2@8e;R|Z5RN67Ou~tPDXwf@YSbIL3 zxcwaPqy}6nr5fiw82`fKIu(&zdlbNwu)h6adBl(=e!pJ$Q*s?}u$8;0jQIsg&^SO_ zhE<5F`twy~@~)KCV!*dR?Xgg7eEjO&gsJ`RF~Wa-?5a8RlILsk1aNEQXZ_RTKnqLE)jHiU@#TZGV4Tu zznHjwTw($`*!t0#);zIJ-s87)WBDD=&YWB}{k3w%se3s`ERtGF|DMrs<7=!Yds;7JlGSsyOV%ITkxC8Ivns-WA6@@nX-n&H3{s7RI^HaOKP;C z@^Pp0)5^h*TdQlrsI5(;;%`a}7F42i`h5sq7^CfB4wKrW@;ux7c-J!q($vapc4xX6 zmS)tkGM1rhiMH8d93(~GBr{TKn^eigb10~HkHb$75w95&6L7Boz3a&#y%R>>HBUb+ zLHh8{i*!`^!*z&+1oPMxM3>ZeI#KO7hkDm3oV)luHvP4m27!slUs{O6d~7DyR@U7m za8{aW`IQ-#D!Q9m+-rU+vqhWYT$w#I0S{nmz;~hC(A|c-8; z!5dM<)CGHMKbGzys)^5miHW82wiHdmq8WQnk`m;FNU|Tld=9vKMfw8D#c436%0IBo z0ncEec9J9@0r@HFM1*7pFBhek)<=E})vQ-7e*&6}{eh`trFp zo;)8cv!}RYu|YPQ$O*F5U7(_C6tP}PY!D&Dy=MOc!Jc>bmxtFE9}Ut=&$Zt~lcKL( zz~c3+ya4(lqv|T#U)A&I%?_dYmjC!^BdA*})8wv1pGh$fdx$d~a-8w5`H7OrzN~oM zFNTpiT3NKZO1@zCcSa-&K8=K(s>rH~LV<}x#Krg#e05KqlM?cGFD+h>F;dRi5`9_Y zubAn}#51IvQoKbLH(DaTKQo&BQHkgU1n0&a#sJUFvqm<`x>F$$+zjPmO6}SoZ$sk0 zU-QujQ_$_I{wmz|*Oe%0zvHLEwv%0^L{X&+=k^Vj7jm)EI!cV-uDl%)ELJV9JsvHR zhw!cB^HiBzTwlP-g`c~SD9c)TTj4c~`PVY%fTu{ec=5jr_;8dqm}#CX_H^k>6YM9j zw4R_cZev26hTtzWov=Rz2rqt^DNVE*S^w=w*2txQM1X0lRc=tqUE$FgU-bFSczk7T G=l=nrz8}5- literal 16046 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 Date: Sat, 25 Apr 2020 18:08:06 -0300 Subject: [PATCH 09/15] remove unnecessary include --- profilestatus.smx | Bin 16047 -> 16054 bytes profilestatus.sp | 1 - 2 files changed, 1 deletion(-) diff --git a/profilestatus.smx b/profilestatus.smx index 488d329aa21e094a4cc2a74959a3d92382f0c623..c2466a4cf2563edbf98e5ec1279b9657c0471310 100644 GIT binary patch delta 15841 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 WNFH^QE0ps%lBt-5!u|fRRq%f)w5S;X delta 15834 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 diff --git a/profilestatus.sp b/profilestatus.sp index 0386e70..7442d5f 100644 --- a/profilestatus.sp +++ b/profilestatus.sp @@ -1,7 +1,6 @@ #include #include #include -#include #include #pragma semicolon 1 From 4c9a127449fc003ab2f8793b49450f199f45862b Mon Sep 17 00:00:00 2001 From: ratawar Date: Sat, 25 Apr 2020 18:08:31 -0300 Subject: [PATCH 10/15] added testing version --- profilestatus_testing.sp | 443 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 443 insertions(+) create mode 100644 profilestatus_testing.sp diff --git a/profilestatus_testing.sp b/profilestatus_testing.sp new file mode 100644 index 0000000..e705210 --- /dev/null +++ b/profilestatus_testing.sp @@ -0,0 +1,443 @@ +#include +#include +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +#define PLUGIN_VERSION "1.2" + +public Plugin myinfo = { + + name = "[ANY] Profile Status", + author = "ratawar", + description = "Limits server entrance to players with certain amount of hours in that game.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/member.php?u=282996" +}; + +/* Global Handles */ + +ConVar g_cvEnabled, g_cvApiKey; +ConVar g_cvDatabase; +ConVar g_cvEnableHourCheck, g_cvMinHours, g_cvWhitelist; +ConVar g_cvEnableVACDetection, g_cvVACDays, g_cvVACAmount, g_cvCommunityBans, g_cvGameBans, g_cvEconomyBan; + +Regex r_Numbers, r_ApiKey, r_SteamID; +Database g_Database; + +public void OnPluginStart() { + + /* Plugin Version */ + CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); + + /* Basic Data */ + g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); + + /* Database Name */ + g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Database name for connection. (Only SQLite supported.)") + + /* Hour Check Module */ + g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); + g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + + /* VAC Check Module */ + g_cvEnableVACDetection = CreateConVar("sm_profilestatus_vac_enable", "1", "Enable VAC Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); + g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); + + /* Other Bans Module */ + g_cvCommunityBans = CreateConVar("sm_profilestatus_community_bans", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); + g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "0", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); + g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state."); + + /* RegEx */ + r_Numbers = CompileRegex("^[0-9]*$"); + r_ApiKey = CompileRegex("^[0-9A-Z]*$"); + r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Testing"); + + LoadTranslations("profilestatus.phrases"); + + AutoExecConfig(true, "ProfileStatus"); +} + +public void OnMapStart() { + + if (!AreCvarsNumeric()) + SetFailState("[PS] Please configure all cvars properly!"); + + if (!g_cvEnabled.BoolValue) + SetFailState("[PS] Plugin disabled!"); + + if (!IsAPIKeyCorrect()) + SetFailState("[PS] Please set your Steam API Key properly!"); + + if (!g_cvWhitelist.BoolValue) { + PrintToServer("[PS] Whitelist enabled! Attempting database connection."); + Database.Connect(SQL_ConnectDatabase, "storage-local"); + } else + PrintToServer("[PS] Whitelist disabled! Aborting database connection."); +} + +public void SQL_ConnectDatabase(Database db, const char[] error, any data) { + + if (db == null) + { + LogError("[PS] Database connection error! %s", error); + PrintToServer("[PS] Database connection error! %s", error); + return; + } + PrintToServer("[PS] Database connection successful!", error); + g_Database = db; + CreateTable(); +} + +public void CreateTable() { + + char sQuery[1024] = ""; + StrCat(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS ps_whitelist("); + StrCat(sQuery, sizeof(sQuery), "entry INTEGER PRIMARY KEY, "); + StrCat(sQuery, sizeof(sQuery), "steamid VARCHAR(17), "); + StrCat(sQuery, sizeof(sQuery), "unique (steamid));"); + g_Database.Query(SQL_CreateTable, sQuery); +} + +public void SQL_CreateTable(Database db, DBResultSet results, const char[] error, any data) { + + if (db == null || results == null) + { + LogError("[PS] Create Table Query failure! %s", error); + PrintToServer("[PS] Create Table Query failure! %s", error); + return; + } + + PrintToServer("[PS] Tables successfully created or were already created!"); +} + +public void QueryDBForClient(int client, char[] auth) { + + char WhitelistReadQuery[512]; + Format(WhitelistReadQuery, sizeof(WhitelistReadQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + pack.WriteCell(client); + + g_Database.Query(SQL_QueryDBForClient, WhitelistReadQuery, pack); +} + +public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + int client = pack.ReadCell(); + delete pack; + + if (db == null || results == null) { + LogError("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + PrintToServer("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + return; + } + + char logResponse[128]; + Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); + + if (!g_cvWhitelist.BoolValue) + Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); + + if (!results.RowCount) { + PrintToServer("%s", logResponse); + RequestHours(client, auth); + return; + } + + PrintToServer("[PS] User %s is whitelisted!", auth); +} + +void RequestHours(int client, char[] auth) { + + Handle request = CreateRequest_RequestHours(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestHours(int client, char[] auth) { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", apikey, GetAppID(), auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestHours_OnHTTPResponse); + return request; +} + +public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Hours Request failure!"); + delete request; + return; + } + + int MinHours = g_cvMinHours.IntValue; + int bufferSize; + + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + + char[] responseBody = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBody, bufferSize); + delete request; + + int playedTime = GetPlayerHours(responseBody); + int totalPlayedTime = playedTime / 60; + + if (!totalPlayedTime) { + KickClient(client, "%t", "Invisible Hours"); + return; + } + + if (totalPlayedTime < MinHours) { + KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, MinHours); + return; + } + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvWhitelist.BoolValue) + AddPlayerToWhitelist(auth); +} + +public void AddPlayerToWhitelist(char[] auth) { + + char WhitelistWriteQuery[512]; + Format(WhitelistWriteQuery, sizeof(WhitelistWriteQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + + g_Database.Query(SQL_AddPlayerToWhitelist, WhitelistWriteQuery, pack); +} + +public void SQL_AddPlayerToWhitelist(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + delete pack; + + if (db == null || results == null) + { + LogError("[PS] Error while trying to whitelist user %s! %s", auth, error); + PrintToServer("[PS] Error while trying to whitelist user %s! %s", auth, error); + return; + } + + PrintToServer("[PS] Player %s successfully whitelisted!", auth); +} + +public Action Command_Generic(int client, int args) { + + char arg1[30], arg2[30]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); + + if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")) { + CReplyToCommand(client, "%t", "Command Generic Usage"); + return Plugin_Handled; + } + + if (!MatchRegex(r_SteamID, arg2)) { + CReplyToCommand(client, "%t", "Invalid STEAMID"); + return Plugin_Handled; + } + + Command(arg1, arg2, client); + return Plugin_Handled; +} + +public void Command(char[] arg1, char[] arg2, int client) { + + char query[256]; + + if (StrEqual(arg1, "add")) + Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); + if (StrEqual(arg1, "remove")) + Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); + if (StrEqual(arg1, "check")) + Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); + + DataPack pack = new DataPack(); + + pack.WriteCell(client); + pack.WriteString(arg1); + pack.WriteString(arg2); + + g_Database.Query(SQL_Command, query, pack); + +} + +public void SQL_Command(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + int client = pack.ReadCell(); + char arg1[30], arg2[30]; + pack.ReadString(arg1, sizeof(arg1)); + pack.ReadString(arg2, sizeof(arg2)); + delete pack; + + if (StrEqual(arg1, "add")) { + + if (db == null) { + + LogError("[PS] Error while issuing add command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); + return; + } + + if (results == null) { + CPrintToChat(client, "%t", "Nothing Added", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Added", arg2); + return; + } + + if (StrEqual(arg1, "remove")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); + return; + } + + if (!results.AffectedRows) { + CPrintToChat(client, "%t", "Nothing Removed", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Removed", arg2); + return; + } + + if (StrEqual(arg1, "check")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing check command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); + return; + } + + if (!results.RowCount) { + CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); + return; + } + + CPrintToChat(client, "%t", "Check Whitelisted", arg2); + return; + } + +} + + +public void OnClientAuthorized(int client) { + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + QueryDBForClient(client, auth); + +} + +/* Credits to alphaearth for the following GetPlayerHours() snippet. + * https://forums.alliedmods.net/showthread.php?p=2680553 + */ + +int GetPlayerHours(char[] responseBody) { + char str2[2][64]; + ExplodeString(responseBody, "\"playtime_forever\":", str2, sizeof(str2), sizeof(str2[])); + if (!StrEqual(str2[1], "")) { + char lastString[2][64]; + ExplodeString(str2[1], "}", lastString, sizeof(lastString), sizeof(lastString[])); + return StringToInt(lastString[0]); + } + return -1; +} + +bool IsAPIKeyCorrect() { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + if (MatchRegex(r_ApiKey, apikey) == -1) + return false; + + return true; +} + +bool AreCvarsNumeric() { + char minhours[10], enable[2], whitelist[2]; + IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); + IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); + IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); + if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { + return false; + } + return true; +} + +stock bool HasVAC(char[] responseBodyVAC) { + + char str[7][64]; + + ExplodeString(responseBodyVAC, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "VACBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + PrintToServer(str2[1]); + return (StrEqual(str2[1], "false")) ? false : true; + + } + } +} + +stock int VACDays(char[] responseBodyVAC) { + + char str[7][64]; + + ExplodeString(responseBodyVAC, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfVACBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } +} \ No newline at end of file From 5d748722b4329714627eccb18fa074be716a253e Mon Sep 17 00:00:00 2001 From: ratawar Date: Sun, 26 Apr 2020 00:40:09 -0300 Subject: [PATCH 11/15] Add files via upload --- profilestatus_testing.sp | 946 +++++++++++++++++++++------------------ 1 file changed, 504 insertions(+), 442 deletions(-) diff --git a/profilestatus_testing.sp b/profilestatus_testing.sp index e705210..f8100ba 100644 --- a/profilestatus_testing.sp +++ b/profilestatus_testing.sp @@ -1,443 +1,505 @@ -#include -#include -#include -#include -#include - -#pragma semicolon 1 -#pragma newdecls required - -#define PLUGIN_VERSION "1.2" - -public Plugin myinfo = { - - name = "[ANY] Profile Status", - author = "ratawar", - description = "Limits server entrance to players with certain amount of hours in that game.", - version = PLUGIN_VERSION, - url = "https://forums.alliedmods.net/member.php?u=282996" -}; - -/* Global Handles */ - -ConVar g_cvEnabled, g_cvApiKey; -ConVar g_cvDatabase; -ConVar g_cvEnableHourCheck, g_cvMinHours, g_cvWhitelist; -ConVar g_cvEnableVACDetection, g_cvVACDays, g_cvVACAmount, g_cvCommunityBans, g_cvGameBans, g_cvEconomyBan; - -Regex r_Numbers, r_ApiKey, r_SteamID; -Database g_Database; - -public void OnPluginStart() { - - /* Plugin Version */ - CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); - - /* Basic Data */ - g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); - - /* Database Name */ - g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Database name for connection. (Only SQLite supported.)") - - /* Hour Check Module */ - g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); - g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - - /* VAC Check Module */ - g_cvEnableVACDetection = CreateConVar("sm_profilestatus_vac_enable", "1", "Enable VAC Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); - g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); - - /* Other Bans Module */ - g_cvCommunityBans = CreateConVar("sm_profilestatus_community_bans", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); - g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "0", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); - g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state."); - - /* RegEx */ - r_Numbers = CompileRegex("^[0-9]*$"); - r_ApiKey = CompileRegex("^[0-9A-Z]*$"); - r_SteamID = CompileRegex("^7656119[0-9]{10}$"); - - RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Testing"); - - LoadTranslations("profilestatus.phrases"); - - AutoExecConfig(true, "ProfileStatus"); -} - -public void OnMapStart() { - - if (!AreCvarsNumeric()) - SetFailState("[PS] Please configure all cvars properly!"); - - if (!g_cvEnabled.BoolValue) - SetFailState("[PS] Plugin disabled!"); - - if (!IsAPIKeyCorrect()) - SetFailState("[PS] Please set your Steam API Key properly!"); - - if (!g_cvWhitelist.BoolValue) { - PrintToServer("[PS] Whitelist enabled! Attempting database connection."); - Database.Connect(SQL_ConnectDatabase, "storage-local"); - } else - PrintToServer("[PS] Whitelist disabled! Aborting database connection."); -} - -public void SQL_ConnectDatabase(Database db, const char[] error, any data) { - - if (db == null) - { - LogError("[PS] Database connection error! %s", error); - PrintToServer("[PS] Database connection error! %s", error); - return; - } - PrintToServer("[PS] Database connection successful!", error); - g_Database = db; - CreateTable(); -} - -public void CreateTable() { - - char sQuery[1024] = ""; - StrCat(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS ps_whitelist("); - StrCat(sQuery, sizeof(sQuery), "entry INTEGER PRIMARY KEY, "); - StrCat(sQuery, sizeof(sQuery), "steamid VARCHAR(17), "); - StrCat(sQuery, sizeof(sQuery), "unique (steamid));"); - g_Database.Query(SQL_CreateTable, sQuery); -} - -public void SQL_CreateTable(Database db, DBResultSet results, const char[] error, any data) { - - if (db == null || results == null) - { - LogError("[PS] Create Table Query failure! %s", error); - PrintToServer("[PS] Create Table Query failure! %s", error); - return; - } - - PrintToServer("[PS] Tables successfully created or were already created!"); -} - -public void QueryDBForClient(int client, char[] auth) { - - char WhitelistReadQuery[512]; - Format(WhitelistReadQuery, sizeof(WhitelistReadQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", auth); - - DataPack pack = new DataPack(); - pack.WriteString(auth); - pack.WriteCell(client); - - g_Database.Query(SQL_QueryDBForClient, WhitelistReadQuery, pack); -} - -public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); - int client = pack.ReadCell(); - delete pack; - - if (db == null || results == null) { - LogError("[PS] Error while checking if user %s is whitelisted! %s", auth, error); - PrintToServer("[PS] Error while checking if user %s is whitelisted! %s", auth, error); - return; - } - - char logResponse[128]; - Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); - - if (!g_cvWhitelist.BoolValue) - Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); - - if (!results.RowCount) { - PrintToServer("%s", logResponse); - RequestHours(client, auth); - return; - } - - PrintToServer("[PS] User %s is whitelisted!", auth); -} - -void RequestHours(int client, char[] auth) { - - Handle request = CreateRequest_RequestHours(client, auth); - SteamWorks_SendHTTPRequest(request); - -} - -Handle CreateRequest_RequestHours(int client, char[] auth) { - - char apikey[40]; - GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - - char request_url[512]; - - Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", apikey, GetAppID(), auth); - Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); - - SteamWorks_SetHTTPRequestContextValue(request, client); - SteamWorks_SetHTTPCallbacks(request, RequestHours_OnHTTPResponse); - return request; -} - -public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { - - if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { - PrintToServer("[PS] HTTP Hours Request failure!"); - delete request; - return; - } - - int MinHours = g_cvMinHours.IntValue; - int bufferSize; - - SteamWorks_GetHTTPResponseBodySize(request, bufferSize); - - char[] responseBody = new char[bufferSize]; - SteamWorks_GetHTTPResponseBodyData(request, responseBody, bufferSize); - delete request; - - int playedTime = GetPlayerHours(responseBody); - int totalPlayedTime = playedTime / 60; - - if (!totalPlayedTime) { - KickClient(client, "%t", "Invisible Hours"); - return; - } - - if (totalPlayedTime < MinHours) { - KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, MinHours); - return; - } - - char auth[40]; - GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); - - if (g_cvWhitelist.BoolValue) - AddPlayerToWhitelist(auth); -} - -public void AddPlayerToWhitelist(char[] auth) { - - char WhitelistWriteQuery[512]; - Format(WhitelistWriteQuery, sizeof(WhitelistWriteQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", auth); - - DataPack pack = new DataPack(); - pack.WriteString(auth); - - g_Database.Query(SQL_AddPlayerToWhitelist, WhitelistWriteQuery, pack); -} - -public void SQL_AddPlayerToWhitelist(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); - delete pack; - - if (db == null || results == null) - { - LogError("[PS] Error while trying to whitelist user %s! %s", auth, error); - PrintToServer("[PS] Error while trying to whitelist user %s! %s", auth, error); - return; - } - - PrintToServer("[PS] Player %s successfully whitelisted!", auth); -} - -public Action Command_Generic(int client, int args) { - - char arg1[30], arg2[30]; - GetCmdArg(1, arg1, sizeof(arg1)); - GetCmdArg(2, arg2, sizeof(arg2)); - - if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")) { - CReplyToCommand(client, "%t", "Command Generic Usage"); - return Plugin_Handled; - } - - if (!MatchRegex(r_SteamID, arg2)) { - CReplyToCommand(client, "%t", "Invalid STEAMID"); - return Plugin_Handled; - } - - Command(arg1, arg2, client); - return Plugin_Handled; -} - -public void Command(char[] arg1, char[] arg2, int client) { - - char query[256]; - - if (StrEqual(arg1, "add")) - Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); - if (StrEqual(arg1, "remove")) - Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); - if (StrEqual(arg1, "check")) - Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); - - DataPack pack = new DataPack(); - - pack.WriteCell(client); - pack.WriteString(arg1); - pack.WriteString(arg2); - - g_Database.Query(SQL_Command, query, pack); - -} - -public void SQL_Command(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - int client = pack.ReadCell(); - char arg1[30], arg2[30]; - pack.ReadString(arg1, sizeof(arg1)); - pack.ReadString(arg2, sizeof(arg2)); - delete pack; - - if (StrEqual(arg1, "add")) { - - if (db == null) { - - LogError("[PS] Error while issuing add command on %s! %s", arg2, error); - PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); - CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); - return; - } - - if (results == null) { - CPrintToChat(client, "%t", "Nothing Added", arg2); - return; - } - - CPrintToChat(client, "%t", "Successfully Added", arg2); - return; - } - - if (StrEqual(arg1, "remove")) { - - if (db == null || results == null) - { - LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); - PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); - CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); - return; - } - - if (!results.AffectedRows) { - CPrintToChat(client, "%t", "Nothing Removed", arg2); - return; - } - - CPrintToChat(client, "%t", "Successfully Removed", arg2); - return; - } - - if (StrEqual(arg1, "check")) { - - if (db == null || results == null) - { - LogError("[PS] Error while issuing check command on %s! %s", arg2, error); - PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); - CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); - return; - } - - if (!results.RowCount) { - CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); - return; - } - - CPrintToChat(client, "%t", "Check Whitelisted", arg2); - return; - } - -} - - -public void OnClientAuthorized(int client) { - - char auth[40]; - GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); - - QueryDBForClient(client, auth); - -} - -/* Credits to alphaearth for the following GetPlayerHours() snippet. - * https://forums.alliedmods.net/showthread.php?p=2680553 - */ - -int GetPlayerHours(char[] responseBody) { - char str2[2][64]; - ExplodeString(responseBody, "\"playtime_forever\":", str2, sizeof(str2), sizeof(str2[])); - if (!StrEqual(str2[1], "")) { - char lastString[2][64]; - ExplodeString(str2[1], "}", lastString, sizeof(lastString), sizeof(lastString[])); - return StringToInt(lastString[0]); - } - return -1; -} - -bool IsAPIKeyCorrect() { - - char apikey[40]; - GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - if (MatchRegex(r_ApiKey, apikey) == -1) - return false; - - return true; -} - -bool AreCvarsNumeric() { - char minhours[10], enable[2], whitelist[2]; - IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); - IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); - IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); - if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { - return false; - } - return true; -} - -stock bool HasVAC(char[] responseBodyVAC) { - - char str[7][64]; - - ExplodeString(responseBodyVAC, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "VACBanned") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - PrintToServer(str2[1]); - return (StrEqual(str2[1], "false")) ? false : true; - - } - } -} - -stock int VACDays(char[] responseBodyVAC) { - - char str[7][64]; - - ExplodeString(responseBodyVAC, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "NumberOfVACBans") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return StringToInt((str2[1])); - - } - } +#include +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +#define PLUGIN_VERSION "1.2" + +public Plugin myinfo = { + + name = "[ANY] Profile Status", + author = "ratawar", + description = "Limits server entrance to players with certain amount of hours in that game.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/member.php?u=282996" +}; + +/* Global Handles */ + +ConVar + g_cvEnabled, + g_cvApiKey; +ConVar + g_cvDatabase; +ConVar + g_cvEnableHourCheck, + g_cvMinHours, + g_cvWhitelist; +ConVar + g_cvEnableBanDetection, + g_cvVACDays, + g_cvVACAmount; + g_cvCommunityBans, + g_cvGameBans, + g_cvEconomyBan; + +Regex + r_Numbers, + r_ApiKey, + r_SteamID; + +Database + g_Database; + +public void OnPluginStart() { + + /* Plugin Version */ + CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); + + /* Basic Data */ + g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); + + /* Database Name */ + g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Database name for connection. Change this value only if you're using another database. (Only SQLite supported.)") + + /* Hour Check Module */ + g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); + g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + + /* Ban Check Module */ + g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); + g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); + g_cvCommunityBans = CreateConVar("sm_profilestatus_community_bans", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); + g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); + g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state."); + + /* RegEx */ + r_Numbers = CompileRegex("^[0-9]*$"); + r_ApiKey = CompileRegex("^[0-9A-Z]*$"); + r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Testing"); + + LoadTranslations("profilestatus.phrases"); + + AutoExecConfig(true, "ProfileStatus"); +} + +/* Global CVAR Assigns */ + +char APIKEY[64]; +GetConVarString(g_cvApiKey, APIKEY, sizeof(APIKEY)); + +char cvDatabase[32]; +GetConVarString(g_cvDatabase, cvDatabase, sizeof(cvDatabase)); + +/* Beggining of the Plugin */ + +public void OnMapStart() { + + if (!AreCvarsNumeric()) + SetFailState("[PS] Please configure all cvars properly!"); + + if (!g_cvEnabled.BoolValue) + SetFailState("[PS] Plugin disabled!"); + + if (!IsAPIKeyCorrect()) + SetFailState("[PS] Please set your Steam API Key properly!"); + + if (g_cvEnableHourCheck.BoolValue) + Database.Connect(SQL_ConnectDatabase, "storage-local"); + else + PrintToServer("[PS] Hours Check module disabled! Aborting database connection."); + + if (!g_cvEnableBanDetection.BoolValue) + PrintToServer("[PS] Ban Detection module disabled!") + + +} + +public void SQL_ConnectDatabase(Database db, const char[] error, any data) { + + if (db == null) + { + LogError("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + PrintToServer("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + return; + } + + PrintToServer("[PS] Database connection successful!", error); + g_Database = db; + CreateTable(); +} + +public void CreateTable() { + + char sQuery[1024] = ""; + StrCat(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS ps_whitelist("); + StrCat(sQuery, sizeof(sQuery), "entry INTEGER PRIMARY KEY, "); + StrCat(sQuery, sizeof(sQuery), "steamid VARCHAR(17), "); + StrCat(sQuery, sizeof(sQuery), "unique (steamid));"); + g_Database.Query(SQL_CreateTable, sQuery); +} + +public void SQL_CreateTable(Database db, DBResultSet results, const char[] error, any data) { + + if (db == null || results == null) + { + LogError("[PS] Create Table Query failure! %s", error); + PrintToServer("[PS] Create Table Query failure! %s", error); + return; + } + + PrintToServer("[PS] Tables successfully created or were already created!"); +} + +public void QueryDBForClient(int client, char[] auth) { + + char WhitelistReadQuery[512]; + Format(WhitelistReadQuery, sizeof(WhitelistReadQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + pack.WriteCell(client); + + g_Database.Query(SQL_QueryDBForClient, WhitelistReadQuery, pack); +} + +public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + int client = pack.ReadCell(); + delete pack; + + if (db == null || results == null) { + LogError("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + PrintToServer("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + return; + } + + char logResponse[128]; + Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); + + if (!g_cvWhitelist.BoolValue) + Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); + + if (!results.RowCount) { + PrintToServer("%s", logResponse); + RequestHours(client, auth); + return; + } + + PrintToServer("[PS] User %s is whitelisted!", auth); +} + +void RequestHours(int client, char[] auth) { + + Handle request = CreateRequest_RequestHours(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestHours(int client, char[] auth) { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", apikey, GetAppID(), auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestHours_OnHTTPResponse); + return request; +} + +public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Hours Request failure!"); + delete request; + return; + } + + int MinHours = g_cvMinHours.IntValue; + int bufferSize; + + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + + char[] responseBody = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBody, bufferSize); + delete request; + + int playedTime = GetPlayerHours(responseBody); + int totalPlayedTime = playedTime / 60; + + if (!totalPlayedTime) { + KickClient(client, "%t", "Invisible Hours"); + return; + } + + if (totalPlayedTime < MinHours) { + KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, MinHours); + return; + } + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvWhitelist.BoolValue) + AddPlayerToWhitelist(auth); +} + +public void AddPlayerToWhitelist(char[] auth) { + + char WhitelistWriteQuery[512]; + Format(WhitelistWriteQuery, sizeof(WhitelistWriteQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + + g_Database.Query(SQL_AddPlayerToWhitelist, WhitelistWriteQuery, pack); +} + +public void SQL_AddPlayerToWhitelist(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + delete pack; + + if (db == null || results == null) + { + LogError("[PS] Error while trying to whitelist user %s! %s", auth, error); + PrintToServer("[PS] Error while trying to whitelist user %s! %s", auth, error); + return; + } + + PrintToServer("[PS] Player %s successfully whitelisted!", auth); +} + +public Action Command_Generic(int client, int args) { + + char arg1[30], arg2[30]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); + + if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")) { + CReplyToCommand(client, "%t", "Command Generic Usage"); + return Plugin_Handled; + } + + if (!MatchRegex(r_SteamID, arg2)) { + CReplyToCommand(client, "%t", "Invalid STEAMID"); + return Plugin_Handled; + } + + Command(arg1, arg2, client); + return Plugin_Handled; +} + +public void Command(char[] arg1, char[] arg2, int client) { + + char query[256]; + + if (StrEqual(arg1, "add")) + Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); + if (StrEqual(arg1, "remove")) + Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); + if (StrEqual(arg1, "check")) + Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); + + DataPack pack = new DataPack(); + + pack.WriteCell(client); + pack.WriteString(arg1); + pack.WriteString(arg2); + + g_Database.Query(SQL_Command, query, pack); + +} + +public void SQL_Command(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + int client = pack.ReadCell(); + char arg1[30], arg2[30]; + pack.ReadString(arg1, sizeof(arg1)); + pack.ReadString(arg2, sizeof(arg2)); + delete pack; + + if (StrEqual(arg1, "add")) { + + if (db == null) { + + LogError("[PS] Error while issuing add command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); + return; + } + + if (results == null) { + CPrintToChat(client, "%t", "Nothing Added", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Added", arg2); + return; + } + + if (StrEqual(arg1, "remove")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); + return; + } + + if (!results.AffectedRows) { + CPrintToChat(client, "%t", "Nothing Removed", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Removed", arg2); + return; + } + + if (StrEqual(arg1, "check")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing check command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); + return; + } + + if (!results.RowCount) { + CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); + return; + } + + CPrintToChat(client, "%t", "Check Whitelisted", arg2); + return; + } + +} + + + +/* Credits to alphaearth for the following GetPlayerHours() snippet. + * https://forums.alliedmods.net/showthread.php?p=2680553 + */ + +int GetPlayerHours(char[] responseBody) { + char str2[2][64]; + ExplodeString(responseBody, "\"playtime_forever\":", str2, sizeof(str2), sizeof(str2[])); + if (!StrEqual(str2[1], "")) { + char lastString[2][64]; + ExplodeString(str2[1], "}", lastString, sizeof(lastString), sizeof(lastString[])); + return StringToInt(lastString[0]); + } + return -1; +} + +bool IsAPIKeyCorrect() { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + if (MatchRegex(r_ApiKey, apikey) == -1) + return false; + + return true; +} + +bool AreCvarsNumeric() { + char minhours[10], enable[2], whitelist[2]; + IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); + IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); + IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); + if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { + return false; + } + return true; +} + +public void OnClientAuthorized(int client) { + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvEnableHourCheck.BoolValue) + QueryDBForClient(client, auth); + + RequestBans(client, auth); + +} + +void RequestBans(int client, char[] auth) { + + Handle request = CreateRequest_RequestBans(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestBans(int client, char[] auth) { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/ISteamUser/GetPlayerBans/v1?key=%s&steamids=%s", apikey, auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestBans_OnHTTPResponse); + return request; +} + +public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Bans Request failure!"); + delete request; + return; + } + + int bufferSize; + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + char[] responseBodyBans = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBodyBans, bufferSize); + delete request; + + int VACDays = g_cvVACDays.IntValue; + + if (g_cvEnableBanDetection.BoolValue) { + + if (!GetDaysSinceLastVAC(responseBodyBans)) + KickClient(client, "%t", "No VAC Allowed"); + else if (GetDaysSinceLastVAC(responseBodyBans) < VACDays) + KickClient(client, "%t", "No VAC Allowed in Days", VACDays); + + + } +} + +int GetDaysSinceLastVAC(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "DaysSinceLastBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } } \ No newline at end of file From d6b6d3a8c5c4b5b5afa83aa6f46dd28edf3ec949 Mon Sep 17 00:00:00 2001 From: ratawar Date: Sun, 26 Apr 2020 20:57:17 -0300 Subject: [PATCH 12/15] Update profilestatus_testing.sp --- profilestatus_testing.sp | 350 ++++++++++++++++++++++++++++----------- 1 file changed, 250 insertions(+), 100 deletions(-) diff --git a/profilestatus_testing.sp b/profilestatus_testing.sp index f8100ba..cbeb716 100644 --- a/profilestatus_testing.sp +++ b/profilestatus_testing.sp @@ -6,43 +6,58 @@ #pragma semicolon 1 #pragma newdecls required -#define PLUGIN_VERSION "1.2" +#define PLUGIN_VERSION "2.0" public Plugin myinfo = { name = "[ANY] Profile Status", author = "ratawar", - description = "Limits server entrance to players with certain amount of hours in that game.", + description = "Limits server entrance to players based on game playtime or VAC/Steam Bans status.", version = PLUGIN_VERSION, url = "https://forums.alliedmods.net/member.php?u=282996" }; /* Global Handles */ -ConVar +ConVar g_cvEnabled, g_cvApiKey; -ConVar +ConVar g_cvDatabase; -ConVar +ConVar g_cvEnableHourCheck, g_cvMinHours, g_cvWhitelist; -ConVar +ConVar g_cvEnableBanDetection, g_cvVACDays, - g_cvVACAmount; - g_cvCommunityBans, + g_cvVACAmount, + g_cvCommunityBan, g_cvGameBans, g_cvEconomyBan; -Regex +Regex r_Numbers, r_ApiKey, r_SteamID; + +Database +g_Database; + +/* Global Variables */ + +char + cAPIKey[64], + cvDatabase[16], + EcBan[10]; -Database - g_Database; +int iMinHours, + iVACDays, + iVACAmount, + iGameBans, + iEconomyBan; + +/* On Plugin Start */ public void OnPluginStart() { @@ -50,46 +65,53 @@ public void OnPluginStart() { CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); /* Basic Data */ - g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); + g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); /* Database Name */ - g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Database name for connection. Change this value only if you're using another database. (Only SQLite supported.)") + g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Hour Check module's database name. Change this value only if you're using another database. (Only SQLite supported.)"); /* Hour Check Module */ - g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); - g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); + g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); /* Ban Check Module */ - g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); - g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); - g_cvCommunityBans = CreateConVar("sm_profilestatus_community_bans", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); - g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); - g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state."); + g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); + g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); + g_cvCommunityBan = CreateConVar("sm_profilestatus_community_ban", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); + g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); + g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", + "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state.", + _, true, 1.0, true, 2.0); /* RegEx */ - r_Numbers = CompileRegex("^[0-9]*$"); - r_ApiKey = CompileRegex("^[0-9A-Z]*$"); - r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + r_Numbers = CompileRegex("^[0-9]*$"); + r_ApiKey = CompileRegex("^[0-9A-Z]*$"); + r_SteamID = CompileRegex("^7656119[0-9]{10}$"); - RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Testing"); + /* Global CVAR Assigns */ + + g_cvApiKey.GetString(cAPIKey, sizeof(cAPIKey)); + + g_cvDatabase.GetString(cvDatabase, sizeof(cvDatabase)); + + iMinHours = g_cvMinHours.IntValue; + iVACDays = g_cvVACDays.IntValue; + iVACAmount = g_cvVACAmount.IntValue; + iGameBans = g_cvGameBans.IntValue; + iEconomyBan = g_cvEconomyBan.IntValue; + + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Generic Hour Check command."); LoadTranslations("profilestatus.phrases"); AutoExecConfig(true, "ProfileStatus"); -} - -/* Global CVAR Assigns */ - -char APIKEY[64]; -GetConVarString(g_cvApiKey, APIKEY, sizeof(APIKEY)); -char cvDatabase[32]; -GetConVarString(g_cvDatabase, cvDatabase, sizeof(cvDatabase)); +} -/* Beggining of the Plugin */ +/* On Map Start */ public void OnMapStart() { @@ -102,17 +124,18 @@ public void OnMapStart() { if (!IsAPIKeyCorrect()) SetFailState("[PS] Please set your Steam API Key properly!"); - if (g_cvEnableHourCheck.BoolValue) + if (g_cvEnableHourCheck.BoolValue) Database.Connect(SQL_ConnectDatabase, "storage-local"); else PrintToServer("[PS] Hours Check module disabled! Aborting database connection."); - + if (!g_cvEnableBanDetection.BoolValue) - PrintToServer("[PS] Ban Detection module disabled!") - - + PrintToServer("[PS] Ban Detection module disabled!"); + } +/* Database connection and tables creation */ + public void SQL_ConnectDatabase(Database db, const char[] error, any data) { if (db == null) @@ -122,7 +145,7 @@ public void SQL_ConnectDatabase(Database db, const char[] error, any data) { return; } - PrintToServer("[PS] Database connection successful!", error); + PrintToServer("[PS] Database connection to \"%s\" successful!", cvDatabase); g_Database = db; CreateTable(); } @@ -149,6 +172,8 @@ public void SQL_CreateTable(Database db, DBResultSet results, const char[] error PrintToServer("[PS] Tables successfully created or were already created!"); } +/* Hour Check Module */ + public void QueryDBForClient(int client, char[] auth) { char WhitelistReadQuery[512]; @@ -199,12 +224,9 @@ void RequestHours(int client, char[] auth) { Handle CreateRequest_RequestHours(int client, char[] auth) { - char apikey[40]; - GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - char request_url[512]; - Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", apikey, GetAppID(), auth); + Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", cAPIKey, GetAppID(), auth); Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); SteamWorks_SetHTTPRequestContextValue(request, client); @@ -220,7 +242,6 @@ public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequ return; } - int MinHours = g_cvMinHours.IntValue; int bufferSize; SteamWorks_GetHTTPResponseBodySize(request, bufferSize); @@ -232,13 +253,15 @@ public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequ int playedTime = GetPlayerHours(responseBody); int totalPlayedTime = playedTime / 60; + PrintToServer("hours %i", GetPlayerHours(responseBody) / 60); + if (!totalPlayedTime) { KickClient(client, "%t", "Invisible Hours"); return; } - if (totalPlayedTime < MinHours) { - KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, MinHours); + if (totalPlayedTime < iMinHours) { + KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, iMinHours); return; } @@ -386,55 +409,27 @@ public void SQL_Command(Database db, DBResultSet results, const char[] error, Da } - - -/* Credits to alphaearth for the following GetPlayerHours() snippet. - * https://forums.alliedmods.net/showthread.php?p=2680553 - */ - int GetPlayerHours(char[] responseBody) { - char str2[2][64]; - ExplodeString(responseBody, "\"playtime_forever\":", str2, sizeof(str2), sizeof(str2[])); - if (!StrEqual(str2[1], "")) { - char lastString[2][64]; - ExplodeString(str2[1], "}", lastString, sizeof(lastString), sizeof(lastString[])); - return StringToInt(lastString[0]); - } - return -1; -} - -bool IsAPIKeyCorrect() { - char apikey[40]; - GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - if (MatchRegex(r_ApiKey, apikey) == -1) - return false; + char str[8][64]; - return true; -} - -bool AreCvarsNumeric() { - char minhours[10], enable[2], whitelist[2]; - IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); - IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); - IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); - if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { - return false; + ExplodeString(responseBody, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 8; i++) { + + if (StrContains(str[i], "playtime_forever") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } } - return true; + return -1; } -public void OnClientAuthorized(int client) { - - char auth[40]; - GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); - - if (g_cvEnableHourCheck.BoolValue) - QueryDBForClient(client, auth); - - RequestBans(client, auth); - -} +/* Ban Check Module */ void RequestBans(int client, char[] auth) { @@ -472,17 +467,36 @@ public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bReque SteamWorks_GetHTTPResponseBodyData(request, responseBodyBans, bufferSize); delete request; - int VACDays = g_cvVACDays.IntValue; - if (g_cvEnableBanDetection.BoolValue) { - - if (!GetDaysSinceLastVAC(responseBodyBans)) - KickClient(client, "%t", "No VAC Allowed"); - else if (GetDaysSinceLastVAC(responseBodyBans) < VACDays) - KickClient(client, "%t", "No VAC Allowed in Days", VACDays); + + if (IsVACBanned(responseBodyBans)) { + if (!GetDaysSinceLastVAC(responseBodyBans) || !GetVACAmount(responseBodyBans)) + KickClient(client, "%t", "VAC Kicked"); + else if (GetDaysSinceLastVAC(responseBodyBans) < iVACDays) + KickClient(client, "%t", "VAC Kicked Days", iVACDays); + else if (GetVACAmount(responseBodyBans) > iVACAmount) + KickClient(client, "%t", "VAC Kicked Amount", iVACAmount); + } - } + if (IsCommunityBanned(responseBodyBans)) + if (g_cvCommunityBan.BoolValue) + KickClient(client, "%t", "Community Ban Kicked"); + + if (GetGameBans(responseBodyBans) > iGameBans) + KickClient(client, "%t", "Game Bans Exceeded", iGameBans); + + GetEconomyBans(responseBodyBans); + + if (iEconomyBan == 1) + if (StrContains(EcBan, "banned", false) != -1) + KickClient(client, "%t", "Economy Ban Kicked"); + if (iEconomyBan == 2) + if (StrContains(EcBan, "banned", false) != -1 || StrContains(EcBan, "probation", false) != -1) + KickClient(client, "%t", "Economy Ban/Prob Kicked"); + + } + } int GetDaysSinceLastVAC(char[] responseBodyBans) { @@ -502,4 +516,140 @@ int GetDaysSinceLastVAC(char[] responseBodyBans) { } } + return -1; +} + +int GetVACAmount(char[] responseBodyBans) { + + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfVACBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetGameBans(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfGameBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +bool IsVACBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "VACBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +bool IsCommunityBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "CommunityBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +void GetEconomyBans(char[] responseBodyBans) { + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "EconomyBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + strcopy(EcBan, 15, str2[1]); + + } + } + +} + +/* On Client Authorized */ + +public void OnClientAuthorized(int client) { + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvEnableHourCheck.BoolValue) + QueryDBForClient(client, auth); + + if (g_cvEnableBanDetection.BoolValue) + RequestBans(client, auth); + +} + +/* Extra Checks */ + +bool IsAPIKeyCorrect() { + + if (StrEqual(cAPIKey, "", false && MatchRegex(r_ApiKey, cAPIKey) == -1 )) + return false; + + return true; +} + +bool AreCvarsNumeric() { + char minhours[10], enable[2], whitelist[2]; + IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); + IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); + IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); + if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { + return false; + } + return true; } \ No newline at end of file From d082352d86a03b3ae506748002c09ea6eafdc681 Mon Sep 17 00:00:00 2001 From: ratawar Date: Sun, 26 Apr 2020 20:57:54 -0300 Subject: [PATCH 13/15] v2.0 --- profilestatus.sp | 376 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 328 insertions(+), 48 deletions(-) diff --git a/profilestatus.sp b/profilestatus.sp index 7442d5f..ff31435 100644 --- a/profilestatus.sp +++ b/profilestatus.sp @@ -6,45 +6,113 @@ #pragma semicolon 1 #pragma newdecls required -#define PLUGIN_VERSION "1.1.1" +#define PLUGIN_VERSION "2.0" public Plugin myinfo = { name = "[ANY] Profile Status", author = "ratawar", - description = "Limits server entrance to players with certain amount of hours in that game.", + description = "Limits server entrance to players based on game playtime or VAC/Steam Bans status.", version = PLUGIN_VERSION, url = "https://forums.alliedmods.net/member.php?u=282996" }; /* Global Handles */ -ConVar g_cvEnabled, g_cvApiKey, g_cvMinHours, g_cvWhitelist; -Regex r_Numbers, r_ApiKey, r_SteamID; -Database g_Database; +ConVar + g_cvEnabled, + g_cvApiKey; +ConVar + g_cvDatabase; +ConVar + g_cvEnableHourCheck, + g_cvMinHours, + g_cvWhitelist; +ConVar + g_cvEnableBanDetection, + g_cvVACDays, + g_cvVACAmount, + g_cvCommunityBan, + g_cvGameBans, + g_cvEconomyBan; + +Regex + r_Numbers, + r_ApiKey, + r_SteamID; + +Database +g_Database; + +/* Global Variables */ + +char + cAPIKey[64], + cvDatabase[16], + EcBan[10]; + +int iMinHours, + iVACDays, + iVACAmount, + iGameBans, + iEconomyBan; + +/* On Plugin Start */ public void OnPluginStart() { - Database.Connect(SQL_ConnectDatabase, "storage-local"); - + /* Plugin Version */ CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); - g_cvEnabled = CreateConVar("sm_profilestatus_enabled", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); - g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); - g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - - r_Numbers = CompileRegex("^[0-9]*$"); - r_ApiKey = CompileRegex("^[0-9A-Z]*$"); - r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + /* Basic Data */ + g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); + + /* Database Name */ + g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Hour Check module's database name. Change this value only if you're using another database. (Only SQLite supported.)"); + + /* Hour Check Module */ + g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); + g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + + /* Ban Check Module */ + g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); + g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); + g_cvCommunityBan = CreateConVar("sm_profilestatus_community_ban", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); + g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); + g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", + "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state.", + _, true, 1.0, true, 2.0); + + /* RegEx */ + r_Numbers = CompileRegex("^[0-9]*$"); + r_ApiKey = CompileRegex("^[0-9A-Z]*$"); + r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + + /* Global CVAR Assigns */ + + g_cvApiKey.GetString(cAPIKey, sizeof(cAPIKey)); + + g_cvDatabase.GetString(cvDatabase, sizeof(cvDatabase)); + + iMinHours = g_cvMinHours.IntValue; + iVACDays = g_cvVACDays.IntValue; + iVACAmount = g_cvVACAmount.IntValue; + iGameBans = g_cvGameBans.IntValue; + iEconomyBan = g_cvEconomyBan.IntValue; - RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Generic PS command."); + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Generic Hour Check command."); LoadTranslations("profilestatus.phrases"); AutoExecConfig(true, "ProfileStatus"); + } +/* On Map Start */ + public void OnMapStart() { if (!AreCvarsNumeric()) @@ -56,17 +124,28 @@ public void OnMapStart() { if (!IsAPIKeyCorrect()) SetFailState("[PS] Please set your Steam API Key properly!"); + if (g_cvEnableHourCheck.BoolValue) + Database.Connect(SQL_ConnectDatabase, "storage-local"); + else + PrintToServer("[PS] Hours Check module disabled! Aborting database connection."); + + if (!g_cvEnableBanDetection.BoolValue) + PrintToServer("[PS] Ban Detection module disabled!"); + } +/* Database connection and tables creation */ + public void SQL_ConnectDatabase(Database db, const char[] error, any data) { if (db == null) { - LogError("[PS] Database connection error! %s", error); - PrintToServer("[PS] Database connection error! %s", error); + LogError("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + PrintToServer("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); return; } - PrintToServer("[PS] Database connection successful!", error); + + PrintToServer("[PS] Database connection to \"%s\" successful!", cvDatabase); g_Database = db; CreateTable(); } @@ -93,13 +172,7 @@ public void SQL_CreateTable(Database db, DBResultSet results, const char[] error PrintToServer("[PS] Tables successfully created or were already created!"); } -public void OnClientAuthorized(int client) { - - char auth[40]; - GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); - - QueryDBForClient(client, auth); -} +/* Hour Check Module */ public void QueryDBForClient(int client, char[] auth) { @@ -128,7 +201,7 @@ public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] } char logResponse[128]; - Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted!", auth); + Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); if (!g_cvWhitelist.BoolValue) Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); @@ -151,12 +224,9 @@ void RequestHours(int client, char[] auth) { Handle CreateRequest_RequestHours(int client, char[] auth) { - char apikey[40]; - GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - char request_url[512]; - Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", apikey, GetAppID(), auth); + Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", cAPIKey, GetAppID(), auth); Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); SteamWorks_SetHTTPRequestContextValue(request, client); @@ -172,7 +242,6 @@ public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequ return; } - int MinHours = g_cvMinHours.IntValue; int bufferSize; SteamWorks_GetHTTPResponseBodySize(request, bufferSize); @@ -184,13 +253,15 @@ public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequ int playedTime = GetPlayerHours(responseBody); int totalPlayedTime = playedTime / 60; + PrintToServer("hours %i", GetPlayerHours(responseBody) / 60); + if (!totalPlayedTime) { KickClient(client, "%t", "Invisible Hours"); return; } - if (totalPlayedTime < MinHours) { - KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, MinHours); + if (totalPlayedTime < iMinHours) { + KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, iMinHours); return; } @@ -338,28 +409,237 @@ public void SQL_Command(Database db, DBResultSet results, const char[] error, Da } -/* Credits to alphaearth for the following GetPlayerHours() snippet. - * https://forums.alliedmods.net/showthread.php?p=2680553 - */ - int GetPlayerHours(char[] responseBody) { - char str2[2][64]; - ExplodeString(responseBody, "\"playtime_forever\":", str2, sizeof(str2), sizeof(str2[])); - if (!StrEqual(str2[1], "")) { - char lastString[2][64]; - ExplodeString(str2[1], "}", lastString, sizeof(lastString), sizeof(lastString[])); - return StringToInt(lastString[0]); + + char str[8][64]; + + ExplodeString(responseBody, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 8; i++) { + + if (StrContains(str[i], "playtime_forever") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } } return -1; } -bool IsAPIKeyCorrect() { +/* Ban Check Module */ + +void RequestBans(int client, char[] auth) { + + Handle request = CreateRequest_RequestBans(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestBans(int client, char[] auth) { char apikey[40]; GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - if (MatchRegex(r_ApiKey, apikey) == -1) - return false; + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/ISteamUser/GetPlayerBans/v1?key=%s&steamids=%s", apikey, auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestBans_OnHTTPResponse); + return request; +} + +public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Bans Request failure!"); + delete request; + return; + } + + int bufferSize; + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + char[] responseBodyBans = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBodyBans, bufferSize); + delete request; + + if (g_cvEnableBanDetection.BoolValue) { + + if (IsVACBanned(responseBodyBans)) { + + if (!GetDaysSinceLastVAC(responseBodyBans) || !GetVACAmount(responseBodyBans)) + KickClient(client, "%t", "VAC Kicked"); + else if (GetDaysSinceLastVAC(responseBodyBans) < iVACDays) + KickClient(client, "%t", "VAC Kicked Days", iVACDays); + else if (GetVACAmount(responseBodyBans) > iVACAmount) + KickClient(client, "%t", "VAC Kicked Amount", iVACAmount); + } + + if (IsCommunityBanned(responseBodyBans)) + if (g_cvCommunityBan.BoolValue) + KickClient(client, "%t", "Community Ban Kicked"); + + if (GetGameBans(responseBodyBans) > iGameBans) + KickClient(client, "%t", "Game Bans Exceeded", iGameBans); + + GetEconomyBans(responseBodyBans); + + if (iEconomyBan == 1) + if (StrContains(EcBan, "banned", false) != -1) + KickClient(client, "%t", "Economy Ban Kicked"); + if (iEconomyBan == 2) + if (StrContains(EcBan, "banned", false) != -1 || StrContains(EcBan, "probation", false) != -1) + KickClient(client, "%t", "Economy Ban/Prob Kicked"); + + } + +} + +int GetDaysSinceLastVAC(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "DaysSinceLastBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetVACAmount(char[] responseBodyBans) { + + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfVACBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetGameBans(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfGameBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +bool IsVACBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "VACBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +bool IsCommunityBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "CommunityBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +void GetEconomyBans(char[] responseBodyBans) { + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "EconomyBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + strcopy(EcBan, 15, str2[1]); + + } + } + +} + +/* On Client Authorized */ + +public void OnClientAuthorized(int client) { + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvEnableHourCheck.BoolValue) + QueryDBForClient(client, auth); + + if (g_cvEnableBanDetection.BoolValue) + RequestBans(client, auth); + +} + +/* Extra Checks */ + +bool IsAPIKeyCorrect() { + + if (StrEqual(cAPIKey, "", false && MatchRegex(r_ApiKey, cAPIKey) == -1 )) + return false; + return true; } @@ -372,4 +652,4 @@ bool AreCvarsNumeric() { return false; } return true; -} \ No newline at end of file +} \ No newline at end of file From 283bb8ade3e1b94aefa658f86cc9a401985a284b Mon Sep 17 00:00:00 2001 From: ratawar Date: Wed, 29 Apr 2020 21:08:23 -0300 Subject: [PATCH 14/15] v2.1 --- extensions/SteamWorks.ext.dll | Bin 0 -> 304128 bytes extensions/SteamWorks.ext.so | Bin 0 -> 1115644 bytes plugins/profilestatus.smx | Bin 0 -> 18740 bytes scripting/include/SteamWorks.inc | 413 ++++++ scripting/include/morecolors.inc | 674 +++++++++ scripting/include/stocksoup/version.inc | 71 + scripting/profilestatus.sp | 640 ++++++++ scripting/swag.sp | 112 ++ shit/.gitignore | 0 .../profilestatus-updater.txt | 0 .../profilestatus.phrases.txt | 0 profilestatus.smx => shit/profilestatus.smx | Bin profilestatus.sp => shit/profilestatus.sp | 0 .../profilestatus_testing.sp | 1286 ++++++++--------- translations/profilestatus.phrases.txt | 137 ++ 15 files changed, 2690 insertions(+), 643 deletions(-) create mode 100644 extensions/SteamWorks.ext.dll create mode 100644 extensions/SteamWorks.ext.so create mode 100644 plugins/profilestatus.smx create mode 100644 scripting/include/SteamWorks.inc create mode 100644 scripting/include/morecolors.inc create mode 100644 scripting/include/stocksoup/version.inc create mode 100644 scripting/profilestatus.sp create mode 100644 scripting/swag.sp create mode 100644 shit/.gitignore rename profilestatus-updater.txt => shit/profilestatus-updater.txt (100%) rename profilestatus.phrases.txt => shit/profilestatus.phrases.txt (100%) rename profilestatus.smx => shit/profilestatus.smx (100%) rename profilestatus.sp => shit/profilestatus.sp (100%) rename profilestatus_testing.sp => shit/profilestatus_testing.sp (96%) create mode 100644 translations/profilestatus.phrases.txt diff --git a/extensions/SteamWorks.ext.dll b/extensions/SteamWorks.ext.dll new file mode 100644 index 0000000000000000000000000000000000000000..1681977b092b73190d0e8a5a81bb50f746257eb0 GIT binary patch literal 304128 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�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 literal 0 HcmV?d00001 diff --git a/extensions/SteamWorks.ext.so b/extensions/SteamWorks.ext.so new file mode 100644 index 0000000000000000000000000000000000000000..aa462f33fdd47902f3dc88138d802a72ccee00ff GIT binary patch literal 1115644 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%0Ask&IB$iikU>Pa&^RyAQZX4ygbR)HLK+!CgbR)H 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

R8jP)$yWuw$Axcx3Npw$)z zXS3eQH_jTeK*3CXEoz?>VeUw}{^%d|{{isBEEqMV=j@)C(?nbm)M za7Rd-7SZg%SExx-6B`I&s5=zGmW_|-gR(>AE5-}^s@?DO+{X9u3pj@bD-UK3^cEr@ z1^W_S;DJip7VMN&sp2+_W4MvQ94l4O1kSBp64};9jih?L{sobQnei(%rAG-Fmz9b& zW7rRGO6sC^M?3pJs4Vov6g6z1|i3d^HdVJ*>b`0J`yHo>Yw^}UX-%_Di z%0V{%#jA&dEM8Nj#UCM&NDwRj>y@5aA8K`{LK3#Lh8-Zd$%u=>2S2iy>y6xY=X>=l z0+gJ`7c~)O(U}D^L`yGP`PU-UJ#{V0? zP#5F68Mz4FwR>Y1Yg*urWhLXr@A`>v89~KLu4!LePOEZJZB+_J8UpA7YXbntCF0Vo z29dj@O3G}O?WzXAHzkA2E&i0U2sDzbH;q#)$Q(7d8;z@Sn(~Ag)!|(!D_0_9$VbC8 z4-Hy?qru~_!Ii1L*@^*bf9elLR90CE0(;EgGpC2yOx8Tf9-bZ@0o-$N zm@$FqA(W233^%+r*STmEocD~_X*#J~p-itS;bE-$HM$75pElpTLGM^t594u4g zlLsi`3BeF{Yz@so@zmOB>xks?bUD<+*r|;MlL1!zKaF3!?%rG)!Ru~aq83U&u9cpvQX06<0w>0hzD?u%ZVjP|*Z0zMw@FWC(ugwiAnM%V^7mA9@R)x>!SROYFLfrAjNj>IoI^ zA(Jt&V2>IQ@~<`*Pv2RrxX@XQxDefeyxI$g{y8p==tfu`GpdA~tLHJKZnc4zLd?&`64;JEFMweHmRVfE_g@N#v!O&XCKgb zZ-cKXZDb;kFe8u1MjmkxdBpsdQkaAu_(kbmo<&cZoCc)%>W>y`zzIHrv()y;PWiblIopRvi&F5@H~T@f`iB>EK8d3DHjcVQA#OG3QGO6ZO^&v0|LDPrjx2-^>-^ zDdT?0Wy+SB-V-myOfcg&=RUkq!%5udhk2dnS|>-eCaeNE-z%Gd_$kS|-b|_3ti?q% z1LlkVAjOoM1Z~Y}@_};E;$_XLIrq6C$d&Br<+H%*5t)c~`nQM;H9}0V#cP%$Hq=-# zkFeoekl0Y!U=!RrX6O;ejCYb9OKC6B8g2z&ov+GQZ+>DiSxBqPKU3l>SkROadVT{`Z_XbX zDrgOXa1mE#+NKQuCkjiExv5ix8M19&)umro+O%@z1xG*?jEXRcou_;AIB^|djXFq! z=)1tn1C}1~g&^mdk;&nOSWo@z8INOBM;jF27!Og}6sSm+G8!-OLVvmIql5zx?UBo6 zP)PVpgu)z!nNVzNyqx{bOMEx=4G~~rKS4P5AifR+c)4i*uAm*ET`0YBzoD#wE@ZqE z4RHpe?kA*#M&Dl>B-KX6HNMyF;2 z8Vcj>`8geAJbZ^x9+y?T);=55Ao?P>6PTM(x8qKIF=VQAv0E?Feo193SpyDU{NuqFd*^Xe@GM;?cCY-unUf|tp;!rI_HEi&?EKP>L}edD)qXJVJo z?867uTlgq@37^zm(nsyy_CN+rHBVHr1RRi&qVjj@t#tpf*TcX;sZ*tzt5gjXTC1Wd zQf9^5AZUDF0bS>(&rbZJL#@m)>VTABKlAcqX=3@gY2SXP(Y>!Wx*e|;U+v=X-k)A+ zQed~J`IaYg@OWKRQzKja+3DuxUc43RCm5kvdGM4_FkO0f^hiHL(|t_mJVSWGF!eOKpoXT;9~cvb0tMBh&a;$zRp0 z6(u|{W1mkBzy?Tvat#D=chH9^3L`eGQHJaAiHmlz%2;Ch;4Ou65j@ytHY{ps+_`Mo zcIhKAn8p+4qBZauEMD1?Lhy?VowvTjhWOPpvX0%5+@=&Js_6H8dFreEjHcj3ZE zA9E;0-4H2P>qb23WBo1{JPkXeFdVHMu+&bdIg_6&6GPo(`MPWyMC}$kb<0@qfC@! zobM;UwHV&t^L3@++617M-`v~B38}#`-qJjHE)4BaAnX8dBA&OP5Z($`2 zsB+}*+mo_8X?LLF!EBpQoFmQ!n}ql>Eo5ABPOa8x+90x|x|j?YwovFn85Rc+f0U1? z$$YBb)Q3CF(-svWkEQ4LL_Gmch4{`xB19?kj4fk6JA_J_%;)m@Rqnb`W)%II{Y2%i ziQ$#D`5w)Gjl@%2u97s40sO-km@d%?j8s_(I5S37&Wg zLSG;@4c%C9VJp7%z#gQQCzMC(cx$)}Eer00xa;>!Kk6wfC8SFg<>e$Fh@HMLo=e{a zzyyhjPM0Lxy{;y6NmM}k#>f8JhSH9iMoCb_#Se?JIe8q8gC<1e0Y7DCOmKL-83wmx zIN27rdZ!rH{#gLA$em_t?KBRIE~N!o(LY!I=IP8CQhP?cUNv8RvKaf^A?tNFa)T z77Q_z-3NNr?f%_BBCzKi$Y|tpyWjrgj`--8j5MBeG;?{Ylkx_F{(e`{bc>0%*1BNU zd*5H1U0$YoY9{L6jD-E0o5lUB%7EyrtV4;TuJS`vbEunHP-i0xK5~G5Lxr+Yfbo$# z5|TBQstwT^rKkaO;yPDvu$smRv_>4eaozj?b3uMe4M`_PuxUYyu38te$3o+c6iA$6 zNu&)Rkb~4g`jweI+5_wjVqVBA6j1=s?~GY6qyh+eP&Zjj3P$?i%^P#?f0d*%D}7vi ztXoC4V1`nThyOxy3zX1J1V@?xzLOdb@n+q1zwNg>9ZUwFoS`amdG(f*zTNS}R+2Yq z{J8v1{}tS%hwo#zcLygAloaYfU!#As~y2PSeK!uTsVn)D+8cK8%P>xfNp zMq|jQ#2-GTH+RslxlQWK$YrQ2Ik{UBzysJ-G*zAwDK|bBDP6qg%g;LjH}(9Su87k| zoenVmN~=^7rw4sH`_M;VEwETcjo$>Q{tIWEkBV^n26l!R$x>tFB!zbGwcjGT!2JWm+oH0z=BQ?#9QjEl7DxAH(*AS*DE0KD~FN;_rp#o+F*$k42iILiaEQa z3=OF5bqQ~?kGe#7*7RrG{U0pxES5K>65H|j@oekE=g1OP%Od+jU1yIq_Js5vdGh4K z;ChfK?74j`xa0nCgu;P4lHQ~C7_vbT;(L$=6r~7I;_K`|iZ4LnC7TEPfbNPe^!Bgn z#MAl&sv^;$~vF8PJ%r$qE&I-NY;IJftAz4oUusX&uZ zJQk{4y`KB%FyD2Jdp^Jq@ke8O%S>f(sHCi0rW(??D3z4 zo+XA60?jgbI$wGxGrl;eSaAMk)vM{d&KURA8Q_J4$&N?RVf}-S`5K?w;|C_B`7-Ds z)zEV(n)>3l*P&?I@U`&*hsg7w8>$WC+<5WV+ZP5XYdRS`&li6!hz*QjeAUJV@6O-@ zISd0B@^>9)>`wNKzpx8IdthvLoQL-K^B$eT#Ie88Wf~4qyweZR;Q!40olp7TK0t8% z1=SnPfjWw%OY=pD|0(<UAKd}>+T)? zS`Y1Rj{?J8!oPv4n|071+Mhw;L*ys97Q)$f!KyTo8RuYTs`fa(&y7ay@2U6b_gVvr z41(c>dE&x8^5hI(ci3%O&mgi(c6^Op0)hD4&m-}xBd9l+?w$!hL^BiHIsd1*44FvI&qBUx%eF) zW0~})P52N>sEhEiyXZtvhL{bTLuu~7iKq&d&*|N;P#B*7a6^_FV(CGjKo_P8MMRFB z(3i@hE&t)LheC)=0ygPMX=TSy&TbiKYpAxWK^ov%9o3^#N*Ov0^wcLLZ6u% zOy_28D6{(3ATCTRA3*wr18~c~vBF{qq84j_A~CvfP6#M~`P}si$gp`ZlU{x8g??6- za7=9j^^miyfru473hRr-dwXDCFB#DUJ?%T<3#hg#fNC-IfXo$C1``ATCOyPpFzN@l zZLG*7lZ_=DQG+lqo~N0OpcxM2h=_Rg+wN5Rz3(ZjP%TgYjDMp% zVD^0v{T%SzT6Y;#5I(OYZA+f~O`iTRVmZ^=J1fHqzb7_4ATe)Co=DSZQ+rfM(Zp?$ z!o}OQ2#3t=^2!P~9|85*V(r%tJ96Rz9;-YDd7g;sMH_Qaq01hI>_o3QNwz6FDQY>$%RU~13d)ShXvvv@X0 z_*ygL2;qZFkVJ&qXihiVoNhPG)IYh}T7(_763_{&h&N((GD#sxCCDfO(1W0uf2*A2 z3(Uu4W(#i5ow#BPFbbQ>Hwh8t)XPAS6pN|xqyxx3YLV#=nPn2_(nMI(H``Lpa*c2o zM)u(JAbUzE7wg-^?GrE)I2hI+09gb|hzqE5C^ZqH0rsR~<(pQ43qiAcDyw1Fu8$G8 z$(&}+NS&=8bV`{4ZvclRLcRR8`9wV%9YfZwQH&EuJ{$eSz~5H60?Q_6PIq>?m`LIpF^^ zR9K?|=;9aGtM18>MhZCZXsX~}&4T>V)daB9ySTrJOLB!d0}Bs+Kg?uLvj>OA#|NiJ z+0)abvr`k{-h)%ritF&QETYR^?AOwuWu7YwvYyXHD656Ssbc;(n@MIPhV`mR*_ki? zw#$AqiM{MP6lFWrLz{1VR9e!&i?)jbT>7(!Qv*9c!x_~B$>n6H+njV_)xW~-RhZ61 zs}})H1}!IMJYS}ivtteyd^$qU1#+MI0YbD?KTM$Q#y}r?lbtew^|1uJh@wXA9LA>_d12LlkM_S=)e=*AzZb`9oF7e!@b zpv7+|aAW9ILGIXb?%Q8nu&myX5R&HC26fS(r=!X;a%!6OYN-T=g|fvUyF;S40d$sC zu~0_>dOgF;0AgQ$SE&}*uMuS(RDultJQPe_TTbD9u3m&2RQEUW`TMTC zZ6eBdcvCk+6w1AY#P#u^_1&Yt@i}hPJLA2pT%phaYmPr1G+=X4s@g#j0NH7xVNUa7 z%`#GyFvg5PDzRY4DLa&ocH!=!{Q5EG=KjKWQ0)}BFX@#!E`9%ajL~4{lQ5! z2T)jq*MzB?b<7-oWaVzm2K`S?X8=+iu8zkRN^NM1#^ITO{FDcs zQ@c1AeQl3A<}qAI!e!Hl$`2m<6RKUn)OJy%(w<xcP^BJK^~n&?r(R6c#foCYyHgqd+Kv+71Md5`u`wJ-NpQ+1149NIiv- zc}zD%hOdQ!6VOM}^Z(sE%Vy59r)Nh;nG@K(M`Y@|uTEh5;?Wg=e&0&n1e_xy^WlnH)+=Gz_qOWjWfH}3Hv5w+p2#$Ve*=lIaT zX3DDPDwmcr#3?*Q!kAs>KsR?s0OTA9UQ*d%I|Tuo1pcl{aX-w{K2qPUvMq zw;TS9;};Nh`=WrTd5^jq09L|CQGMVR{Mg2vp)HOOwK-LSodjI2Qec;Sy9)F|VL|nK zJg}8QH{$_QxCbRjVk4hE%VrM_PO_PU*Dn@0-z?9EfsvK!VEf;7LbP+juEh$Y3Xd)$&8Mx z=vGba08k=SPYJY5K80Okl?e9d@4x?!?9~E<>(N|*Ym9q~_5i0_<2_>)_LF~A0#A!I z`afRJX?w1^!XR$+XIsqX2(;(G1pOYw&sS-p1nOXA_F`6AVL^iKl8A6^u{x5?OFv?- zaVyLpDD3qu6O{Hxmhtl0ltyk9!YDiYOknnzjxPg{0>Hz1->p>*$xr$TN+E-{kQ4nvx*{4 zQE0-dQp$Z`dmtOz6o}za2wUJNj!7Vn0j5m^WV1gA#8O}TlCvAOB9a?yx_sJUlR{PV z(u%`te$tf@^UVrzy;&$jz2(aq96qXYSBMy74}h;-Kt8#fQRo3`{R9jXW=E0FE9oi4Gszo%6A9v$SyC!_lY^3IoYW>K& z4-}_v!Xm{NB@tVg+2XJfxY5$smrdNoVjCXbjRW585y%Pie!baF_gh zApai9zcO@Y%5<7}@{DaBG2gK?0SJ!`({4f0T*nOJH&Vv~|frlu@D@ir}s{ zp|5|RyJ%m@yP~j@y4M42sN}nOhz(WkV;*6{f123vpC~p$Pjw}0ja$K2=d1G7_$qXE zoDsRHFWnKT*BLuv%WbX$ch@pp|5aGgo)n{W-uPI<+FX3%=WdH8^}K#ru*q7mTA)lm zqN)7s>@xAGA5Iszo6{BUWM=&2_2si-p#Hv1*xOjQ;;`&JfxS)GT3u-EAj?t3;I0%f zuB~AQe7FMX3fwVpzBQ{3y^S=$t&Nsl_+R>aDgQz!n6~ThKeXiEOZm4-$_Jqm3?V;5 zbwOHTM#CU1xCo`D$~owOSAa_{I)ELwER~tuGhU8dR8Y7h$kI)OB99TIw5+>#sEO_0 zx-BSYyiu9X^Yh_=f9J4{?pp|Aq^d2dbEw;u%k-WBsS#k6bIoQwZM+yf0=Um|1n0)< z7lvO`u7h$-#7jBhwhSs)xB^Qh(RTsJYi=tV>ET1SQ%L%xwWJD&I-DP0C|h zv;Tfhv@=(lHXN)mPyouK8jt@&9UBTxtW)D4rA^Q@O9T4sfPCbmU(eJ)tcXgRQh&K0 zJh*?MI;_t4FQ32n-0@%h!oyd+ZvXL{`1UUz7s_9#OpaMme!m?KQ}t%40M>R3wP;A% zWxi2cP%Bus$|yA<3WF>P3j@6FqE16ZpM3UJ@pgzgKMsN2E==_&EAj$tWx`IPaTG#W zG`Ub7`{_&j7uRi^%$+@>?rzno6Fv%^detd#Ep5(C2s@(=^qsFkb;iO~AS}6+<$mwn z@2CLvDsk&Dg-hLsF4&W9UC_pNV4>C=Dti1_CO)FfH{xC)N+OhKIAaKM+75`ECvN+J zHL_;T77_O2E=&f#eH2{Zm04{7w}48x5k~9HV9=AVj{m$wb+_@a|Eg?cSwGA~O#9+D z!@+p64}EB&vg)~?(9`GVMQjmE0c|bOh9|VBg8dU&c$JX(Gkw(=#)^N?&uLn)aG+gq zuA1f2MZNkS3WF)9XyuxqRHyoFRBWPBUlxUz&5Y0Lepni`J65+=X*eg61m3FM{^KTP zvrntB3ZM%7q5Tc&=&(~5uVdv(R2K^F45tK;jztCCaBdq6D#9f(wNTBnCz3lJqHfx~ z&gC!KeW;wLtVTV51+&KiSwR6tQORyLQ4$UikuBKjL4CwEtz1S5A_8{f)dt;>KfRsU z>fhGsOHwys*J@Go6p(h|&4aJxaX&t=00*^}dwu)E7pa!p_T%j5=vfZz7%@8Irk zyg#|`j#1&xpXDnkQ(o~+A93WV_;V(Io{@i{V>yq2^TMLqY2laqhL_>BjXzOq4Xu@X zp8Ci9X=f8scb>Q8&7Z}>YlDLw%&wxs98U|t#!??w%LV2D;FMZ^M&6k5B!ykFd$~>9 za~*#0fPG{kjRUj35b%`SxQ_xaMv+wzyiOae&=lX zw7Uw%!z$!>Q6Ua~{xN8MbOSsXEe}Y~jPIGJM!iVT{e5&vJ|y^)sk6U9C}g^C6iAoe*I}#>2PW|xG0BKkuUCm_0~9*osmUI( zIa90FS|z}%DNb{WKuyTkV(Ue)IQsU%LK9}$sLf*2MVc@&{DUmEIQ?8uko;a+Lgv|1 zm_BDK#(?BJzc5fNZePVtHOz@xhgA4f!+#^TU$t9kvt|g`z zVP?ijN{S=rMdqZr8r!^`nbmkg0$y{~l%kxgm2sBXY#x@5Ji7!HepgD*35uryw+Hx*RxdM1FeQ%WgP{^|~WXyYZbKg?w zgv;0Ksoqw3`O^p|)F*7)e^wfK%HCS+a{BqRBm6Xq~l|-pwry!DCsKi`8um|*EvyqY)4he0n?uF0( zLlWyG^*Dc3#60(km>KT#+P-p}VvZlcg^qBXR}yQ)q`A}NK}dNOM}r4J4p0ByPEt(^ z(u&2LT>^>-%=gXu$F%zmRViZ|mCt)1$%@%0`OCv-;fJL9i^HC~w|DP?Nc`2XkR+=k$f=G&mJKZbP&#=h z$mS`BREhs9B0yfa7O`kg}dIM4V3}#>R(i=rCh0Yl`}HX2B5^6CXdp% zt{;*z2I;jmaQn3q1BgP~{5@+s>are;RGQkGDuX16G~%eiqzfRZ{K4*@w{VHZRj!Vl z-`sC-Gb|1VFc9lwoE#mV9UdHIPP5tU=?PRa&Q9D{EDi@XN-4>30<{rfvOqI{e@oMn z4YR(-btp~Ag#Ouga6GAJ8Nn0Q1)hqp4wWmp&!5OUg+Hw4`e*r{ky^3-<6AY_-FPN)OgD6e*2R<;@`fU(Gb4q6@DuQv0uO8 z6t6ZSEHJYT#exSqMFav4W-rYTB&teYu5LT2S|iS7ZoO)*7@ws zPY3;Ew}2&#dUfCEyI*H_Yrgzl;Z^O2VK1$4vA7E0t#~p2xh_C9MrX`CB-Aov@-XyT z_j*qM`JznIUC5z}l{)V?Tw3donXTnC3udtd5%_-^6q&Io{^B_0iuJyhgQ^iG0nA#M zQ_97fhYP@Sk^}1TcSM5dsm*MqfF8|gX5)&!(%}}IN`1-NKxoJ;poF+(zMMGt%UvJG zV?mfIb)@fKzD>_4g5+;r(s%I7Lj{tz_w5nB;WqsH>^5LF!L0DR_Cgqok5p6Hp0O9> z$Zo&menaO@7jKGozfJ!}fj8Xp{3ArK;3VBU0|KW1;|}gPT1Ts2_NCmxr`to7=yWdx zuk`QGUBcxu-UFZcXvA}#K38bc^#O1%4bjh-X%K@nM4Q8rLK;@o8aaM^w7gSy;XB@S zKSBCWA44?X4jqn3Qb%F}^L8-iR&Hxgk5D_fBR@R(>aG7y%XxnK)t=c0!6^{^Kl7*= z1L&`4v(}`=KlE-64@JAx=pRuBc)y_y^e$_w)vHBFDmCqEXd9)?H*Zkz3z;H*_o+(E z$y-n^qAwu8H5-hrxFJXOc>L&g0L*5?1W4W7N1^#cm}#;|g1b^mQM*aN@1|py%dLuK zyaHYuW>w>=`u-x<09*-H6`xRu1AWN1NO-OR(J?;f)Luw_L%b;BOG>77K z_Bc(?&ouzu`8mBSPGvB9X!pcIx9{01sm~CEa;!!z1!Nmc>TjI1pr&6#fD6r@l@j26 zk$12td&c>omwS4PyRc8Xw_RC1?_Cxvgt}bhEne5AZm(wJow{fhjl;~@vEm_Z{>>9L zJ0|9?a(i-n|Iq$S=}YgS%FIsQx@! zX?kVF&pi1Z{ylm{`zoxAxNmr;e~s4nQ6(m{S|>m*k~CVa^pW19MzusmA=U+@hmPPu z1tsu!YI1^#V9u9ue>lRNe`k1~&=rDJ0ZA{GW6QOgRj}J)AkmzA+iQ=<`*&osa?lIa zvf=(FAy`T$qXjG?nXi^w<%$7COe%dXQVz@0dNVU%NT4sgJ$PS*9ue1Hq%l>%5SV?0 zR4g*0k1!+8k&Qg!Ao7UA$Rmy-k2sDz;w18j)5s&v<{p8bPD4H~s7qOfbSXcVVlHnv zP)f~xwCYzD@phoh$ziQ1f3B3%j+*zLYPOs)mH2X%T5p6rmV z!yGoza?G8qPYQ`@GR#Px6BgbbqIJ$)ul;Fkh(9WwQi9M@DwAkR z2=G9;OQLom1QVf`%#02Jm$&g0g?!R^6)aJtF%OUq=T^~3`m3!f41^Fo8vyjk2i*uTy4~iUl5j?%ey-Xp?OhfPi>}r`}^r9rdkl{sOp5d}Gj82ouPnMY2pdv1Wa+@~vj>qC}TPDzJJ1gX*%<0+C@3 zyau0%pkVj3r zeMfz7hyx6HMC$+i$XRhP`r00K#^|ow;;0L7_V{u%cpNfa4BLaP3gRN9jE<5;=+jfa zkR;JFkL1Bsoi41xFAmbem+B*h(9T52rab7FXST;vWfS$`UHjHG53BwBVC0tD!^WgN znpm|Hw}Z4a?9eWHqX;hHR1E@{T+5CZA_!k7ng+MzeWv}Yh3W#pdUN#{^`$FRY8C*L@!JF!}Q!k$)_;GoPXLEY0s32v~ zA{?q9))bsR7}#i7ca z6R63DN8Sys`YYCFP`=BvAI{IiX7)_LU-mlHfos5zw5hK>V&cC8P{Tl zbG76tKw3$#9spy7hrWD%*2`eZ^ekJt~M9fuU%HDnzms~15k^?&s&qK{J zS@Zz2;Q770#~#b`6mRhREww8b=5Z;;15uDh8Ezl$B(w*cfLL` z*R{`5KauPVI2b3ViRnicLJ@;=n)4#q#RA*nhX(^gO&u!#dLvA3dt*y(CuSFlrpKEa zHa$iNwZ?8HvFL|kss4m2fsn#w@)A~X4<|%~D#-PJggJQr6f7!rf(Y6uLW3n>{(oZD z!<>})=e`%162oLKv?Ckd0kVMLPY_EC?m#FpxC4>I;0};{1$TfVAh-iuGQk~40fhIM zQ+uWwOKK&d^Gr3@oN6ygm4tpZ)naq1$;5vX{1q*=>(U%7@l5&RiLnsKkmVDeFCyr= zN;yXsV?GW!LY!WY8JdlAD%@#`07Nz0cB&2A$(Ild3-3skoZH8-3+gljr~!Gj0J~U% zVwHZbcKD#00&qo$$BiCYy%{kiDiR>j!G{l~Nr5A$VgJo?5US+JSh3Np5y%MYE17Qv zT&b3KvQFb;xnx(~p;duRiqV$x?~H?!FtV^x1-h`}TvBlA6+*ZYoj{(%p*GL6H^I~V z(%6JV4SMMl8-CMb*z`#l(ua|0UN5YZK-PBJ2Gk8V)d@v_vt(W~j(NOvQglWuJdYoC zWP&z=x}#Md>kh2VMsPjBf*0C@1uwK`n#<>Krx&3OO!A1od;KN{faoSKTBc>&;!MvQ znCVN_wN*L*Xfc0fp|%XOG0*qYyO97uIHoKRrCc1Ab^Ki^n*nuzn^sz7j>j=(=nl)NCQOA=-e5}x_eQWwX(;} zqaMjBbUaUfYvl9&;PL&4u>RrPuzpnEJV}HS6EC$(hBUlT+g3s#YlZK%=>4M7r=>#c z$_SQO(_@|^W795eX9|_!b59U_=9Idqtb@ZcFWIi&4;7;Y3Q}YtEKmfltbJvfmMF=U z-Jt{%5gN+a8xSv9oOAVNUoU&|!!V=G=?2D+09*p!lHeoa6XACH!kQ=ogq*vbbiYuQ z2T^M0n$@xmW^D=NVX2a0-2zb=pNb@SMk7Lt0GC3FCCIq^MxV2e36qAtbO1UAJjKlT zhD<&SB+X~1-?$yQ5K+4yOv>$V&Gx5HZby~Sb&9}5kI{%?1EWaK**`;C zP17Hd=B9j!X1+VyMkRRurEFW&P)){CSaem{knOMI5lidbl{H3#)#8fvPK^Ocn7h_0 z^lX#J7ohYY?VAsViIO{tN^uP($SmmHLJ=hsiYQhQ90B}RgT6{L55hxx{F%!QXp2e< z_<&-$iOOiOk?_}hsfw%}pvxQ|9UUBdzKB?1g%gs*0z30fe!^8S8htZoTAoSukofAf za`QN@$t!@Wpi~=vJhL)rbV>5=78ANVE`oculM`zhV_RDxV1e^?GQ+sNEAVJydiF)h&v4=BrS} zvQge$tsANP$)M*RA96*_Hv;=ns1?=UTq;(mwg4O@P8ck4?6!MyTpX6ALhk9ssNt8H zd8hNvbcz!(*9?esP#+pr1_0rnmJ(B^etio`@_-0 zm|}d7V-&|4RIfT70_Pbp?p_15fdJCwF{izT5=M@T$$LR;>`mSF?Y4U5MF2rw$ z|Kv zi1t<1JUlr(Jvcr*d4)p$knz7|G|jF}V5kC-{!CJZGf{R;;*;D)Zy|`YKD8y3`$VAp zT&u>)f99e30!Az*Buh&Cfgh{Mvqugy3gUtx0^mZf{;mwnubsOxj{J$$uFBY+jv>Fq z>n<#I9O%s@slXTyiWb01 zy@6<}mg7P}@6*yLKYey=9axKQy$GJt1Tbq5c29WDQDH5_wSp~{K0p|G1_qA_6X2un zk)dI6(rc<86GWfsja`X7cqgfWp96od-t#LG@UFqG`y)~3PWR+5?%QO!Z-0F3(gu>x zgqww527)taT*~Qwx3bT^X#{4GUT<&b+B+$&+My~K5 z^cSWf;<}V7ZULZ_hg>w=URBGOvisc$iVKURNo`kJR)JxhkMJo`8>#Ik8rkZ zuu1bkZ^qpNPzYR_`KNg4u5*YHIt}ZOG=D|w9rN_*h-@A@OVc*!myKMwV=d9si?J%Z zkWX__fP6)5yXm`##o2JONy-MjO~3dVmf>eudw~v64J1gb5V5XC&?TT!A^r*)xP_QN zt-x=nt(>#QH31OYK*nWrV#Pp?l~ol5F^*M0jSl`!k|d^pHX=L#_Nq{&x5bd&x`hI8 z0CYc~`k$lHjO?A->jgFZ)z=h?#Y?ThPlH{MY1k9_*DDEpf(8Cr)XV8JaX54lsAPJg zu!R^!8_`n|r#{1tp-xiohX_k2$Wnz+%~Ex90XvB&p(UZ$8;A`(MJKOh#{pI*=b)vH zIljlO*4ODnD$;xmai1+Ys$vs^9OR~XhmoD_5L)fdkxmVu1vJ&+Cs9mB(L@|_9K z_KjyH&>ZXo%^+V;xVgMbEZ&FZ${Pb_o3vK_I!51S6f>9zx`;Ro?}=9{q1m4NtBvxa zg)jC?uUYoU6ILBA--7kLo$cy16M@=gy=J88197T>%k_Xld>0=@8UVYd4f0wcsaMjsHW0$MhvC#=`Bh zvqwfK0&Dz_66n&q>j#No>9-WiNYN?TY%3X3KU`gMr688 zL=fW8Q3ZMkuB_4%P#rXj*d!bL5e!#fX028kOhn<7j#)p^e8V+(nMAf#7LXr{t&<4D zQM+;s_Ei-m@P8G9tZ82CCJ7R!<>6Z*T;dgrhO?~-IY@Mj$pOXj_Ab!dNq`AT_3>P& z`qETU>WuQQ7jcWY6|ZACOSPNf5IOLE#Xerk=;`ci(E0gwmUZ6+K1cF$)ab2Xxs+@i zzx`M2!&$gi#OXtdePFrpWf}`RqSJ_WV0wU-y(VcZlsam4`kHF327Tq_DI8$^lz(m z^!jzNQft;7tJ180On0HDv(NhNX}x6M+r^>W~3XihfT zY>JaD!hn-27DB9IV1um+RUIg%2g8sWDRa+ayp-Y(kRnPNMMcPa&oPNCle$tHTO z{k4B))3if6-KVw3@qOOy^{j5nao$<=idBO4Y2D5XboocU>Dp*Yj>XKl@ z1q#WaE?Pk7j0oKb3pd_*oJ2>n9_2!8p-2QrP_nTVGFxJwd1%RtWXkY zMQxg3FiXEWI|M=%^=zQ;0ri&CXw_=fx`3hvcY))_xyoHzXsmNlddFcD$dQAIsDt8i zQ1vvyL#lmAz*ots-n_CK&b3u<*wuKTT{Q)Da4Bf#DJ1 zFZ`RQ_{~)OEA%z`|7QHPJ#=_UZ1*RKs&TL_ou)s(VRg8>!}@^#_6Vw+g_yzrB3z`t z%w)vZ{N-u*JMrxvMV4lKN8j>yIO$AO77)$P1C^!Lo`@vdM$lQSW0ZN`PtFtYmJ#2& zB3|Yn5T+&X6t#vS;CZr`E!L3yA%R2pJP&Aj7ZP_HS#)U$?qO`*Sl>seReFaT59NSsR@EQ$xyN%n7wY=B%6FhhQQD1xpt!;UX8?yaG>n!2vj+ihrt2 zE8p}yz8W+b3t*o`j=EO*DALcq4!X>W9PM~aYS&^-=J6B9nsk@I3kOGKN)itr?R+;d zF%YEa-qG8NNC{H{Y1=7<11SJ7!sv}wGY_l?W>%mU4zek*)pN`xWdjOvbMrlgU`{cI zNyKR&NR+qmvVz->;2BZ{0x{84vEcm8s#nu@9RwbR^w!HghT4@XG@VxEU8VZIV)!4$ z$>u6b09%2JGt;w@p~3qub!ZUwX@aG{SR~ogSy&5-JI`?bg_R>?y5i4)_;V=!gkY~? z=aa;iw~XL;zOm7$c_5LD>5tJp^h*4MnN-iW5g$~{ikKUC52;EAmzcX$ta+isf3Zs6kyNwY0J9wy06{6zKNn z)p&?55ldGHRu~as_6suNP;k&dUygqxiCT>)4b!zl#?z$jc>Jvux&IXcapAOTo!mI{pf&XqWl zVP-P(GvwwWrO1oDL3?uXz3$#wwYx5yo@)_i&>{ct?LzYk(FBn`w+aBJUyH0L$^~YA ziRc633=Y`Ri*TPB`MOJ~TAJw{A=ZM#25!_6Q_D zenEs3#5MtEN`9K@Q`>IMR2>}8G#_9B$iIEUesZ^@^9{bySs%cw*A zprY!2`By>Ue4|Y6R}f~uo>lHwuBGxUR|iJV@oR$SujkHefGU0Dje&7u!&1Cvn{b(~ z9IFYW7qS-3_b>|H7Ah3-=Kv+?nq0K)N{Mvjuw=J^c%wikj^RB;x792ZE!LqECI?_? z;avzzwqa>N|F+4YEGm3VjFe@R~Yj z`u==!0>qfT@wnvmd)`f^;=XIuN`_-uZ(ul;rZPD7B4i9<$`_he$7sGHgVSUApmlL!>P&5$>M!5I z%;Lhvmg<8bkSx+fp$PIquY2cmHm`zd;xY8?XI&l-NsT!%h%^>9HsNdNeINvR4tb7p zQWKa{D)nW!DV|ZQ;NmT}VB;SGRfr)=8VM~zokA-UqX>A^F)0~Qz7U3drR>0IfJe~^ z@QjgtYEfz&*Xb8!MZr<=&g+Z-Qonbpw&4Sy zB^;uGZgH#Eg)xvBPi_Ve69Dn)PbNfy9c++cFvgjN*>5-*B07p%>uu=* zqy~j1N_HKF;^eTNA&m5{AgVDcRxNvjHjO7Epk~mHo4psWZ(PFn<6>2-RUo6bQ2_^r zl27)z3m}{Pd+kiTIn}|9d1m{x5_TVY(zlR#H&1_i@J8SK?b2v4v>G+XHBE>#tD`8j zPi8OH<{0D7F1PBXmSjf-dY=e17~OB4_|Sf^lHnY+)>Zbliy8`0Ojw07AV;mHfgQ%= z(`fL8a6ho_h<_YIg)KZ^k-1Ew&BZrHj$>a{l!tKWtJ=z31RB;7z`$DVH2$(Lq%{iK z3FfYNXkd)MHVkSXD1Js52zfsG7(Bvar{6`L3@lausme=K2H=JeR&34lZdzXkn}ILT-Dy>34A`*4ZKrD-?G11-{91cR90F1$nU9V+S)FCFik6BW-(5{i#X!L-2`{6AK=0`a^1MYU?{;5QYDTjB@f2b;2RY;Qg}~; z3){6Tt0`4bV)i3-7u-?{D?GXk!A3_JUM=tIq|q6n&J`)T0EX=vus-3+Wb?n|^GCUp zgVUo^{K@CcgVTfDnfKx#cUp;-C<^=GEEpv+xGv{4@h1Y`NH9&tPJ>&H1e~Qd^KCN& zw$WB6$eduT?_gqTKIzEWOt(G34X2eVN9 zrP>F#x8r?DJjS2XnY!f6my>@Jvr5V17jYEBuT5R|eRsqy{CuH5Wri!KH^WG*(w+u$ z{uAv7Bv^ywCrX?Ftrbl(rM4<_gQTMYJB^UT#V9pPX;~s9p>!;@hFh^n*;PmR$xbwu z1p47pbbCiL`IF@Vr;pTMC{n{)egz7-ip6Gb+MI#%{7dWZp#E&}USvAb-*CE4;5Xflx>R?V4j>Y_uoDkC+8vWE*4ePT3JQ3=C zACPJIGa{GcM9K1AQCvlc)hQm)z4LQ9X}r$vWyha5{36bW)gXgYSnWQ75b)+RZlUJb zfZK?QLn8wMY~+?u$moDJN`_JqQg}cf<4?&0hco>n|4%v-#TbyfP&Lx}Rz}&>WKAPZ zngSDEsudh+b`9!2<_d8HsY&CxNb05_k~+JdBYZj8)@XUhGIp(g!Wgcd5Lb@snj{wB z=EX_%md6so%p`Kz9dXg=dk~{%2dYVEh76aJMD|Q8E*-4ToROqHVktt61&hZjVxF)C z{l1Z}#Owtn$qgl3XOf(XYDbV_Cm5Oa&MJ!dwnKI79E7g69lO{BrV9cRK~y&!sGfTa z2dmW#E`kRf6;YI?YNg?r$d+Ow3#R|&O<-kc&k^w40MlrAE=XZ&XZ!Qe82UcTdM>!$ zzL=GQt}-*uu<|k@-LTEv#Y)s@Y_FsrBhY&{b~WS2IIDwaE_HK%HN6h1kuOKzJlx%; z;sMhgk<7<86R?ZP+fuQH6n%WX)jwQz@p?>qzSCNZDN={gN-rKmeDGqS=vK&&Tgu2t zhmC82sWR=$-H+V{#GeKr!Tr;qcy4mDBy_I{?T^rJsIgDg&jqecBHAc^R_%NxlgW8s zg}za<@ZLBGfNz&h{Y&2)$;u7j_ZkthU*p+}`{P4Od?R%Zctu4A^-=t-R;WS&iQoWm zrHu?=kQP!(kfag_Azq`$?v2;I6DgZ9$il|sJ)k$)wYIC@O5UCK5r|6TJmT@&&Xxb& zpT_6jh{&kLLt(Og?c5k4Ip$fGr!5AjweN>_IJJJEKfy3-+`D}8mqz5+EWU$OnD=oH zzmf-K<&Ho9J>&9!sv|{oRoo;6pm_+Ij4{^Yacb}5-ghcK4S9$Wv7yUXhL z{CrrSe4>ZLjro%}q#s6o|4M+S3NC85+Zj(@MQ-Ey>#Y9s7q9*M{Wsar^ypC2KvmcT z6}u<^KV}}HdGv+9hfU}jQE6M3b}eg|hsLZUoNF5>*eoEli;gfC9+6*o#KFQN7Ps_h z;W>^M9&xhph|`5foGm=UOwg%|d(~Xrt>)~0#kc^Fw@5WrmVrNj9U|&Q2tm}~pq`87 z0dmWX_}!R5t_wgC3KSC!y_$G8p8N4K&D+Yyme0&hM~h&zm}8bl(8zT1R2up*T(7O5 z>~woB8eS7Kw{!uJNL6N}G4!)V#?Vg~rRIN$Cm5G9)*HL5XBK3DLp~bM%SqyVsXJ)N zZgVBqEhsrl-+zzO=zy)kEE=4$x`(2GzUk%ZX)ighpF@H$Dl)g&LjANao*&bz9FWgBt%D{ zJ4Xgbxs-}#+Lyj`8-DITAN~<+XS;wxCi9pIBN|QE(C<)}d`w{UI%+fyQOgtp)ybM6 zu=Y@)ryoBS4>)amMcOfv-xRnTaT!@)1o1twy^~};W_n;;ahL0YZ`ACn2tLfSMI{%h z(2hQ_e&Aspj!0R4Dew2I)Tmx038xCi$b9fL9&QN8<@b~*GM*QZ-ZgC6^y`7uYHL=B z=znGD%taVZH*_tm_a=(0wVIV;gGJWakCx>sa#s+xs|>n-pk7Z_?Nq_4@0RM2I(uW7 z;J^U`2G?K53){zkmH9LoeDKU;66sRyy0j+!a$LEc*y@xs!4I8P;Eb1C!Q`42Wiekg zN2Oj9{9SP5b12(^25HH)OOl37ZTT;p7M>3AKlmQq7Q@qz5th!UR^U19odwhIZpuIE z?OQ1Ty^FDD{ib#|+^n~9#VGR{0p{I{El>AHvXF9q2SUnv+kZror((OCjU-cqRXl)j zu%-bx1{FE&JbWk!8?PBGMnZFY!D4Xq`21YpsOXM*Ln41?k}s0$yQ<`!68v@~$OBr8 z8*e!Bh-K_1mJUPz8Z;OI4K4^$Y#?#SH$ZVqz2+FtAdBZ;e_WVMI^9pi!1s)JZAn-Q zxT+(dcEA+UwBHt5#Ic#nLmdnnd*EA9vh8OFdY}Fx6aO#ei+EOoU&c6O9nAuxUhpLNhGHjKUWZT;Sl^5QFVvud*4B49x8q< zFyp$!gXUvVAV04n>;%mgSb?CLC7DFZ0t-qzogi`{j+T96fYKr82O#gpJS@GgfZmV` zK3^0i4H1;60k%Zi9#c)0^Z0qa;F+5}GY6hbz$AR;tqPUMKHY&*5+9Z*EZeB;ND3*t zB&87vGI@~=wG`PEr+e-inO;A-oIcuz7M%q?sL4T-GF zBxgmyn5UMzh+SJA(JXjksFAo8D)r>V)9MpM04@QnFTj^3j#D7(NfCu*S=@5dvW$F& zsnMrj&6a!BhFxX6IL0~JQe7KM;)9Et65aSBe|byq+m;>dRTrH!9P_krYfCuv>ULAX z;RilEPD{&nY^ihd$U(Y|L#z(ro`AnBRGlC%<<}+1?Zh@m@>}0(XhZej(zmlS>>3M0 zA`xlU7_HXG5vZ*VpA_Np@Q#z{j??Ilv-QE#Num!4A~8WQd!0`ki06PhF-dSdNjGdL zo)aYEPa>G=R5S1k7O+jQZk$X7R5%i~(39Hy!ZClI-1yRvEEb(~)?9ou0deFablqAk z5y{vcPiBS!_~MHoZajo$E{LxUDy6oHKS&lE_Uw8dnrC-Bce-FHSU|1-;@l*&ez+7S z;rt%{5d!m+Z9K@6#0cs6!DW#yPZJ@7cTn@AT_l2VRd9eghJ#bGEqinr+Ww|Iut``|SJ-r(zrsU(>7D{#?`9v2YT|q_n2j@vj6!}34JzSm71?4;G z2C5}+a%uK!`8!{8doG}I%YpCwQxKQt$&o;m@_A~Ri_HbmpM1|G2tgZo)BakD+j1z) zFaN=#->tYlw|Z6TZfS6tLGhE^lh47%Qd8uP5l+u(^jc*>Pc_#-Nra|-d4<(jh(T9> zBP>u5(bu+TEQ`@PANAzL;F61y__IP5S1xkj*W$Q=JnE)igAkN~q zM4&}-MUBYDcNne%BM;jnNhw333dSbC0K(4$ZrFbW5y|$GdJpv{my-R z9OzBMPX_{_MfhVBY@y z!_535*E;>||8{Q*5~MUr5r(QmdiUBQliCs0@`!k$LcdnOYF}E70{HXHqs&F2Kj^oi zDyihH5%U7--YU}TMCAYw@pT=%Ur-EZAbb@=7m7E9i;Cr<)c?BBEa4D=+wn#KraP0) z1nQa##liCjGinl`o#{YwR7T^3)OLW|c>&o_NRl=!D3ely{$GGeBCYOHXVMYOI8OV* zMaa&sRuA%s@SRd=gJb`0)yr-}5*l29h}5>4Boyv~Lx4d<=s1A?@yZjTNNr>q9cY8n zO}#l)0`bR9uYco_LcB&nMN=jw&qn)#HLl{&L_W-ykiSp{Ar4YVl6G0#<7zPYquS{= z9zHN2p5ZBDNPm0#QBqQQB=p8dR5oKg|J0-O#KRbb3p;dx%5fF1io*u{8y7KCtq69T( zo&)5k!6{zx8LEwnl5UNjfbV#Z8g^xaQuR|$oLAgo)w@^sVBFvKh?Ex`uIQi_c*zk$ z%OOav-{;S0ZWK`-Ag|TafMg4u6}@rWLsxw2y?70o7VaqgUOraUUe#y6P^OPn2xTYo zjvj`^*L~w>MH@^uQjf&$QA{%lDm9*i8g=RmRK<+2pMFc__It+Ps6qa9_Wq%^_#*!_ z(A0mc-Y4c+9>Q{T^RVVp83+wGc|6B{BWDaHR@+29jzg4E@V%-025&yPRvjc?83)`O zxzpSkseWVq72@81xZUn2dI^CI9CfJgnDaM|hDuX++zl^1b}8I)sCt(b9k&7MUN!H$ z#Okl?0cBAvpgV|(G5qCyXG}Sv*zuGGVCY+oSSmr!Z2&R8mN&e+{_S5fMjQr%Gu1O? zUkMLhgzM^-+APV#OI@%Dvlo=$V1$Rer#pAiZp7th^h@yWbA?AoDIhym;;2 z-gQ2Xjh_vQOq12%r;Gqs4NXji@ zbvCanbWZ9w~CkE?Kl_`{#~(*Beg^7hL$_qbO&Ez&woTLdCIKEp!b916o#7H|zlTr@Gh0 z2eModJ%s87I-};J@Pkci9jwMG!u#e4m+jKw@SOv;ZncrI5Q1oyEA?yRM(75wC?J|VIX-Gk>@6wl0Ui<8k{#h!=$xc9N|-H?Oe z2M~e?jf^3z!2j|H(6Xp6yaZ${fJ-IEc_jmEh0nYu=nBiDQuhfhgyCf}KQsS22Tb)n zfuyz$Wm*rIl(4)wj4@gjn1m^-O7sI)F5Z6341U0KJoLKQhPWI8m$du|#S@SmWXa>- zql3et6PzIXBD@olb*}M(X0t#!H0x`KVybIbXtHZpFx~laVh#Tksow%{$!%d`#vvkh*kkBShY}W)*V^^$a$tH1Vgq+ zZ?D~=_!FW!0zOp{&9`f~S^2r}jsr#LE6crbD3S#PR||11T3h(X<^gCOLcS?^`GQj` z2vaA(@;<^es?w2*rcW`mEtoIoPm;kYR-71D~BmF1@p`fYwnrUhw{EC7}s8 zSfrCXpN2)xK&B{XJgwLg6fo0e{AfnG^wJ0vvKGo1>t~73&V>l&)V)(6HCDD|b7IAM z6Q}6eVu{zLMH#g){-ss3ns(7?waaBVd8Mt6fgNCyF|ZcvY7bZh!h61VE*bxB<(L*7 z5U0!V2o*@u3zflqr%*;Fu3am(m}yJJ<+Vw4IttI0&T&F3M|Oe4zllHTNn6R&&XkH+ zFgwFaB&b4gD@Kr$QMMaP+#%COnVLP{JDa0Ae7s@-RO*4~RcCCGHBY4~S4GToP~Zxb zEU*!z)Ulx|U!mMKG=tzeHdM)vd4vt600c_+p-DW0k`4?Pp&!K-{9->}*cWON7vK}~ z32`FWm`ay%;UXk&2n|*3Oi%S#2Ak316nZCGah%P-RP}FN{Md$KPlxEhI zyV9pMJ!P;+`HxG!9ioflOvO+?tr#2>YNfblq^b#El{&yzquz}t(oe=uKdF>JWGc0T zxU}(n{0WAUKM@;nt{)Ib{4<0b0#R@D?62S+OxJSCdEs?-FDuV0&d0zM4#mBz15TNL zbNbG)*{%QdZQSd2?pR*J_w7}h4}?-kND({jMID)ztoiB{XkCX7lWx}Se%j}J9VNJE zkHNbP+9%*&z`R7^UpTbbZc@^#^4^8K4Q0Iu8Ab(|NYhArnt(4&g2W>KW0l%SA6@F$ znV7FLgqbTM`vb@sm5D;A7)dKcS#!TorYmP!FV2oi<&68bfY2_mHH2K_SSBIy;Az?A zmXSXO7Ox};Mv&5k{eD>#kMiQ-_SPG<1_S3FMbfxhB%xSsBLEwK*xU+Ltu`%y?U>4(wlw6dSxpwA;*|%I2b-$L8TdNowj=kfQ|6E_F>&eCBQc2Dj>B>;{bFieWmd|+%IsAZZxXsWHQx*N6k~QA zK&{7fTo@H0md#Q2xw2%|Xx^fjv%2E;WO^~?_QVz^e{bjgf!X zc!aBT*pnb0l3k-Ys!xcWIYJ|}Eh?hOWyu8fO&WhjT9>)R1(2YE6Ab9WgpVz-_W$UC^aI#k5SQ{mCC%Z zfLGl_%H&CK$%K={^4Ue*nT6SKwuyE=d!W{w6XYVmswE7$Q*5Yr+dRVt3MKVUi6r;Q zSzI+GgP-zs`FeC6ocnvs(x|Ros-IVqx#MYRH&Q_UO{)*Vpb8JDDJaHTX+B&nJf>oS z9qC?T8YZHGFLM5f1Xly21)B4_l&4aUDwqt^p2#GiWFgdj&as6s>qi2`!R_xG61b<< z$lb_lsheKd4L{OfVy>CaB26ceHmew@rC7u=mTvlM>h$1mCZ9#eKTYTE%oI4BL;0Xb zjef`*UMYhX_uB>0l{Z5Tpr)-^Z@QpMD7<%DbtL5Q8A85m;#0+LwUAE&#?mezWtO>jKh$q;dtGm|pmu;cEBZH$-q5p}Jtyb--kk8` zwERv`?H|rJsg+60D#DxE9npcA~>?}Y2@0tMq)v&t}5N6LBZ5l zDj{a7jF{%0sADj<(vy0V0R5)+tb3b&-u?PFjca8UFkm_U3AV6eodILAvxHAjc@ zWs!a5Qz2L>fPp{#f zQ6JwX)W5|*HMc$nwsSAM@(=+}iKgj#^SxWY_&cZ&1>QOCi_8}nG!^&Y>cNBm(&Ktt7`SBE`f~#Y`zPICTr)|1J?q2IDQ`eujPX zi%sHeoey`y9{W4!VL{T;YSt@!S#29*8@yO&XHwgn_=5xX8rVtx@Z=b6UW;WuPK-9y z8iB`(wWbm*4OUj3*HvUQg?a%M@xdu&4?Tfs=Ss1tosTy@Mo@6Ip7h7c_Ytz&ohk&_ zCZWvs_Y-p?_jF$9^8EZQ!VX|c4|!FM&Zu)wyT|z?!IvG$(r+SAh56YZ8*-u+gJacr z??wYvMbvM?A1Cftos_?iWbhluh1tPea!jNLLz#%=jF41-a|NdTv2Tw^SN&)eUwvDN z<6Seo!D%3TK)J$i#%2(gP`CKNR4B399`SP1VMTE-iL>Y=eop{%s+;E zk)@vjUgC#%y!Emv3=HJLRf6rRKrdtvkz#K!T!=`uRO5NcQ!AFw*z|BK} zWkNy4LlZNaXwS7>YLOxn#W9OeW1+Sp{4nQBoKzH|qlOEFdT6?9oMcM$v1y1up-HeP zCPA7jQ5#QcD!}TH9u$!>gU|2~Y4na8Lz^2Xt7Y~m$R zjF8Pj(IT-XyMQQf(`q1KTs~lAZ>@mjLGCLoj2wr8$(oXDvY9`jHF-Gd4Mx4mHxSc6 zC9Y~UFD=27jW-Xb6oGds?IBbMki#w#YBwx@k%zS*o8pk|BQ2+sW9(L8hY3Wj{$xvS zaGS+ORM-r&egozZx#X{m$;5ble$Hv|NTEs0VM4D%NMHrp4P<`#TWq5>Y+I@~aQHgd zgeh4oR@xI)dVM|^S^k_ zZ;fcwOTAI@6hf6vo$ocb<^j#8R)JXHS9Ph#aq^~!h`ni-pwan!N(Sxz8?}R;d-PTU zlB-E$GQv&aGC|9UXi66ZC7vai^frdB7`zyUcr$1mhlEA03bj(jf{tO!swxk`fcA(l zh)Vei*Df*5XzvDS0}7&PI(b4hlFaFgZ^2<8tGaYb-UJa8C?dKSl{frW1Z{cm5Q@Qd z7-Pb%0))QsF!|(oW769L|I={LAA7W`)q_mUq)4clJMRXkV_AUv57gVp@fh*eb3lwL zJ5<8XlLsw!VZ~fs8O&c5wy@Hs+Dh5*ZLZMLsS<^HiK995*Y%T`26BQMT-8PntO1pL zS~f(r7Q2D^f0g4y{`*@ZdfaHcyRxI-b< z{4LBNYqTlB>tsw@#vAdm!~I7x@pDc8!_7<))2;A*gxRw~@T2uS;iozU=xS?)5=>c= zf97!PGrMqe-|IWy#(*S2MtC&1cNjSdOQZ)qb~oT!5#dBYoM5@u5xsaFpo}hr{XGd*7tz^W2!6-YP`k7U= z!i+8&jwV4(Ap5()PXPU0b)A*(kz#)!mJjk^H2OWYM_Ci`1%bg^m!cZVjwNWqnkxdA z7b}t?yKFZZX7neO8e2?=8HPvaOa+-I(>W_qydV%It*A%ldC?zpiX1K}^R*B+3rveA z%1pZ6)cB)(&yOhbnloJi_ZaN@eIq^{4DPIlV&2Db%A))&23Q#a<(4H+1l&<<|)7yEW`__xIok4+gWlBnhgpL-AqFCZ|FDF*3D+) zH>hv(d(Ax2l&%H9*ffL8;Mi)I$D$_w5;e*~{Q83*g%S&;D2x)}0Uzx)mxEYlZTL?T zD4fXror*taG98$ce@*!p`kr$mPMcWP!K^LsWyuVb^rVu6p`vU3j>Tc{ZY`x`f;%_! zdfCzLMNg(`jzV27ADs#hDwuZ~6l5#+WgtaJy*V!dyDffK1UU!`fe8CN2-O^BdP&7f z_oKoN8|?X~E6=X2c49sii=9RV`a}qbo`7L8KYkGR?RusRQN|?+AA~KE70no=yI6(o zs^B1rMWS%P(F2zUfKj1ZZrUIla|Af)x_DJ+x-BHgey`UTk)eT??4B3Fxt1L&6;ZOQ+bh zteSIGhqxu9DXDD8c}w3gm=-f)uiu;WP}BuViXqEi5|ZB{n&BMdk}(K_5~5}$W4*H} ztZG-x*{TIK_Dp_f#U5*1HBK+AQf<=Jzt)yPns_)cG}I zHJbHSo$eiZj8U%7b^xsxQ#iQoR4&O1lN(AdUgq;SYVI=fySHi&<9@; zDI{SakW~?2nvIV@>;qy=q~01MU!gzf6ZJNo$F<9q8eSrk-d=iRt_yf!k?+U~1UO*Q z&$Bebp6?kyt9=64<6JeFB9C!BY6F*g=!>vO`L6Sk$^gDlY3dD#^jKk*xW<8pcTn~N zRp1&`e^)KMW7yZOv|NQK$95}A4ili|`Vvv?bVq}xcYEdC4ZYF$6&-@|0!%v^syvMB zroxDi{Rh0x{fDn?!l`*dF%hEEnjnY*X-*KpK|v)^)Ro({Vt~Kqp@NE&eL3v*X}nOF zW%~EQj|7~Denkh0(`MDUg$qZgP~fL(p+R(2)KeNiT})L}J{O5ErE4jw5R&|RApai9 zzen=#vHUwFUnTbEbGu-1J_%hb;i~2qQCp>A!amgw`Ce>d6~0jsvv@$Ac%kPp?5prk zZoZL?$F0wxyJ2Lf-v^tv+EZ`w&ba}9xZMvhw1dP(t3&(=R;%5F;2;)h=<1Ch?y%t9 z3=oDPl@V>}R$nqJ?8B%}pf0X;%jO8Ct84{WB;q54La-bbN+qtI)0bP{Skp}E*(>DYX0*eC< z4GIaJ_5}rw3P4Sx1`#w2zmS;~{AXG(4o(kBrHobjtzB;!W}YfF72KJ8ov49F*pdq> zhb*9Z1XPLcpx?{-xGB?+(Iu3gI!w%EJFf&ptn!Bo@=P-x%;2*(B8rK0)K2t_xWFK! zAU|@nFqsv;tn903f@(!MO8wk3uqJ8XON_AG-v;p``VGy*iOj`@OyfajWjME`1TlS2 zV%&W{*v_@n5F6xVTaZmyh3p@(&g5u`B)66@`;g>RxLqa|5`{9LJF+VcO!ZLwf|i$C z7)oM_(;#3%h)vB4Zo%{O+mye&|fD-DFk)wF%_b^M3!Bxyj4|0-Q z;4-Q=3zrt9J~Z3Fty$NNLbFhHq#>|>@7+_Bg&g0$_l3<_6qe679bgdz;foiqOK|nO zpnb@~!p-VNtk{i)+P9sq7xwq}jo`|AFJ3>-YMXn8-;|ez*7_{h=sRst1QadQv-`%2 zLDmZ`vCjKyrCx_jnp|?V?M$gRCT3kxC64u1=7X?wW245=N55XY?Xxh@gK(HTO2%g1 zc;7_$Wa4%1DL_;5#(zu(LnX98_7bn)BKU}EC&ul?nMmZ0q&BY_lGx`=-doqL;T*&ZM*ZEWL=Ig$p>96nku!z}F*MpgMnE#x^rCG@>t}wzx zhvCRmCxYuv0c2(=bww`c2eNs>QTPyf<$2k!xu_MKOr1)fGp(;)_hCX46{pw^)(5Ko zRiUSAn?xae!cu&+3oM=mP*7mAk{dUnMkcgkLcgK5Qp}F7i9EcXt4@hhVRKN>BD`$N zz`wPESpGv*$!rkld-xbZy?|0_Au}W7m;~)Y{8vORQv-SAXAjgeL8-LUu!?pW@;FT+ zb}uITYr9PJ{dTQwl~h*7$oijt{S|$F%?$s1$X-S;uK8^%)(cI?0zHmpR~+j%WI2Ip zQHlT+Bxb4Hg;jJ6^O$YUcNfl4U~j_e)XdEp-(`q=iSiw7#~@`|@lmBZuI%eV%aBFi z#J%Jq7woTD6r`XWN9q=ih*`+Qh0I$l0@BJX#~N9XS#IhIrQd2@3c@NoQ2o6`usR%W zNG(>AH)k3N+_*I`EU8C+qg}AJ6(d`CXbk<^G=@s0_t+S!EW(K~RHB`y#?S{_8^fUN zA86!2Bo`Y{dK3>gPdH_@fy#C*Yk>`QUGoSV>dGcAt!V^fLtWj(@cs1s z_QHYOacZdeBUE;%KQ`sIHYnAeU@)pZ!5~z7)M>SWr@jgXTzIg}j7;(imCksZ8{|y! zI=dGy-RXz^y@hTyYhU#H6cqk=YR}2kp4}+RkKT(p-E?!h?eVI*(Q^?_B5yx6 zsow=Y=_*lpT9lJ}s!3w!2_4uZr^5ZRyVkTWfmLN6O?-r728vg^DWww<2`At-=g215 z6zgl;b-poLkJ&lNS24i0h4)rd(Dg#_#pa9Fya`~0 zR5=0nQ3T@^rZ=*kxd#AIhe}esokbiV|A2_78jTZx3vTxZpGgoSh?0q~#UPk4R`eGC z4iI03dtL^W@MRS~Yw$S(m@t5nqe=Gj{vDm_!$a?Gg1~KPKX*99i7kjSl;F0z@W$bN z6LJ|%LPx{heq%xVuVz6e!fCb3Wkesq%RCiK9s0pk{zSplVJMgiCESPZ#K4V4LqR}n z5Tvu$js5a|>{6P+R~HVGV^_Uid`$sj4^;&qj@|;+A2hcEeMuz z_j>+ICAi)q2?r`+bi{xBNKg4oC5T`^6vm`i>qw&VA!&9K+*>0_u2F-U#&D6PG!)DFXQ%6x35+ zbU$@Q*iXNup}%MRjT+=%XYU_si!bs|15N$6>gpUm^PCU@?9#-b@8BcU>`7nB&l##@ z5YsOv0U&MZiFI$4_B0qPR!oLY!deH9ZO z+Br~eFQ0| zwHZ#2r;8Bh+_~pygHz9RQ<6>!!7taN_TEGht;}RXcnA9F&G+!1%XMGa>VbR*6v2^y zj5KE%8CK4&X8B*Mxn~qBh1#WCXtkPI=DE9%(##`OKh_ zHrRw*G0R$tXTO{+`p-f=?O~~cUlLM?5rXE~*#Qx6!~7Jo+r{2Ztj zs)(Yrt3bma@cG*)ifa}NPT@s`lyzhHgn&bQkNH6nM@QNFF z$HTBLNjsz;B2$B*{2f0JcG2}CR|2*Ni)dCqm!BgFC2}a+!cL+>UoBb#B#LYL%!vS8 zW&!{gwIH0{(lA@ILQlZXPX(S9qWHv3gu_Nk1dLwPfQX|(2~+a+$04+kghBnO!U$_e z(o^p>V?hLV2k`w#T>HfiUZE?`=d-(Py^U)ppv=0o)=6MWaSq7&3>A5H$ zYo5-VizEa`{CNy!yJ-xn{@Tu%sW_lu0+pcr9Ka32uVVz-Fk>EDe4ce@H*p2k%y1k1 z*^ci6HxQcj)Xr6Bzr|NhG#e&?vx?bp-UXk`?5L&3#QjXAZSj((gT^Hh*PB%_ zu(mg=VoriA4n@LA9S0>E?RUCqI)?ELTMNuHup@3r_>YX{%UYX-H!Bu+!k3VVv@Y5Z z#|DrR`rTz4Zh`!pnNdPZ&C=5VuxDX2%etC9roKVV4}Q!EwVatjW(r%`+nfE{o3S?; zQYK35GiawF_u@7#D>fDqFmQk>Cwt%d*FN-s!0`bCQhehYuU?_06bx6pP`O%f!sdMa zD~`iY_JTvQ^y|IMwMbz>8$8hFd5E(?rv%34PWciR7oPgX*1;p#rb`QZg^kzbH3{L_ zH?l%dI4iVD$X-f_R?`=)mDY^;RN?yRra39YcyR`y+myY!^$B@o;&PuVHB22NuvgBxS> ztlqyI4IYMs6?qto$dA>?o0m?JiQTj>5!E*q842hZ?(tcbr`%{t;+b;o#yEcf`1 zcFUwJR=8(}znuM&$G)N?qj_(SgPMo<8r#?dGF61A1gT!3Wf=@S(JD91vnO8I5SuM{ z#4^z*!Dytf1b*S)qAW)06{_DwS7i##X5szZ5PD}c>U^6OJ@@fyHE_JW#S1Fp%-uV$ z(|lds`n6N4U)RX^=8(4tdfUHSK)%u9O{_3Pba@ME zH;8(>m+}(_+DWP&2U*P;=yRm7CWYB!_WOYo3f~HC%b@5-jfm-Cmew0-%kaA z7F_^-Fg!p(!Ab;#GVU!-Hf>^xM#}w1vzxaQB75?w?*KoFZ`p}{-P;fE$VYd8Ha>jB zVRXmQ`j&1I{P9u+!+|Lrd|F@>D~K#0isYv3$ISwJk&rm*c#;HflH6WG(>ckhaHEJ> z>)fZ5J8WLRy9AvGe`p)8UmFK|8LNr(t7ROBncFFX-MvLMxJHiIg)O_(tQv<{CfEu^ zhPU|coe4f;B42TRau39kz{^!}9ZvfZeHV^+0FlF_=1#J;eb~2FKzN`Nw;FsDu*Nm~ zpB4=*^CuE~_k$Y`OG}o|fuIW#g{4BPU>pZT4?6ZEn37jnDR#}kn;m-*li$|Os3jUi z%Qyh>7giHQy5q_IEwHb95su+%=MSX6@4SylgNvgKK8${g$X>fa!^#os0N*jam}3zO z1F6n@U@OPFb9=rNYb)xaShpg30 zgQ3{P0U*I&!C^d9pBP0Q39&v538YaO42D@``>yPL!|$?Lu;SNQzIyDzh!`wsn%K@q$&rMptom3Q4#C%WT1^4fED-T46 z|D<&+_i@0LqoRqzB9X~X8Sxf>Bm=V~U`Cvt3KK-UC;&AHPh7$N!ZhdM485&~Kk+kq z1AtEP3|egxa-t{aJmT8|=u+P1qDeayvg1@*CmTF31T7ze9<&3nNAQ$Y%MGmR{__Yw zf`E_LcrL*=d&aWr7W09`$1}lv32toZruffSdL(}GTWz z6V_~Y?`toB@qGM=S=wc%V3>~8iWPmsTs+u8|F-uLv^M(5>1`CHMWQgp-=@+c7}E5$ zjNsKHz`G$w82nY<(G&J6+Tp74dFXd*geO6CzZZnG4OXqWBu#3x*PZqS<{~l=z?x#?4B66M8I44dB(oQEC+L5{*n^!adn|#SF4F zx{;J0sK2H%zI0BGIGCqm!#3%VZSxDZy{`O0%h9=?rnY!Wv>X(06zQ+9?W+L7=jU(p zTn8Sqvl>27IG-fgw{}=G2#{{~(+0w^#CPNetK|}aDQQOcCh6Ujqq5Qnb-?pb5jAX5 zfr*SwW(t(rOL6SRypK%vSu#v?k{L6h|67AXYpn4!Eyjf8-SA=31(U?xpo_YlEQokT z4lqlJJupK8F^81ki`TUIWrSFhOOZ8#$VK;ieE{%4F!R6B`;{ z!kHpo4b|HeYG$L+$cOE|xBjhB>qWria zyKIg&)l;YhY)%vaQhyE9zJlD&zA2-I)_M4#yr#d` zFOco6wVHKyXGzewUaPzZ%!u^E8*rsAYlVvOKZe{!LKqm(VEY<+>-siRJIb$_yB|B` zX01@G%a4Qw@(+3gmVf9KRDeq*iD*L0GmBXM&FMS1W&~Ce!bHUF?;3gY@Z|9H;P~(a zoDkCjh<;5mR~)%eP5*g<)^QbhANB`#!YXguLe51tFTZqQr0No;B z|JJ|$<$F#7^^gl(k(q!cH9F&x-j9er&%KfjTa?gF9n2kf<&0ISHQ~1(N?y-u0sb@i zCE?2p;IYmfC^5POHc9K)!b_LT{lemK`^-IC-rM6%lf+!ojWK`yekh%>DUKBDN zxlw{hF27xkv*87^LeUJepwKX4*<-9v+y|o_}uSL2F@B zu831vcKt20DP=&p4*4@M(u30td8-o1wmu*i*BSZgAE|%~r>aT9x5auD5MC53li+5n z2I_pbN{$~B=KU_VrBH0k-^|SNhB6ZUep#%RSTtbI_~<%dlD1#GZlV@(3@Ce%#{d02 zs+})7V=w!Wc=8+eKC_8a$w*gxxyOwA&Q$@Zc`i^45k(2GAyru`R%-JA2Y`9LB{;>i zz^dQ&zV3H!Zjg`c-5S~d0JW2Yp75M+V`|NRKakKpQEUt4-KtxC!*t~Gr^pxFe;a#u zx3IXKs(+yI{Q2I`d{#!YR4KARL1fK*Zg}WQ0KbRQE)7_9~C|Y)I{IBt|eFIJKbqvr=;`XS&=otY_LoK0; zAam=Vm9EdN`-i{Fcww0TL`(kj|K$FYXuy3U@Y~Ma7_1E-1D~O$Z00b7ReD_zZV|m- zIFc*oFf+FX0$jv&X9(HFPG8&R<4(_Q5wkbg*L;sWVFoOd<;6eQLi-!Q1AZJoOkQXg3uQ?*1xPgG%-qj;i> znr@{(R#u;(f|IVtm%V{3%~pzQC|OYkS06l8*nvj&MUeD(!F~X;>hxWRL)$t#E|oKF z{FW&GV8w$RPi_^n=IP<#@yX#~?&RPkcXo7S9-Buf#wNSJ2340Lz;kuf`yuyJWB)q3 zGbrbQGk{7vP&$J?6_l&}n}=a1JKiTYK9IG3oxoru5)xE={~00?1Bws^FMxkkoFvU; z*Oi7c&O@JY1{?$n9PE5R-g0)GoSrZAJF%&YRiR>N(CyH#=*Q$Dy)^jnfAF5b@b!Ot z@7;HY-{==ODFr?Fa(py?`)}$Ia412k09~jFMe94@V+oBbvc#PR1tpvoTrWzH`5CX= zS0?L&`se z`J$%KfNhxR&{%Lw7Znh2IPPz48@>@zZj|Z5{(z5rh~y=9>bpdtzW4%Nz$!o1I}0QN zU%@Njw#{RgH~|bF_6ZK&(S&@Kh+jZAX-dYIWC)LC0~=yxT~+vcK`sVwO|4z11YXTT z_UOgX5p!`xF89HP$`YcGln}NqZCs(8@F9yFSl74)2^Dj}6A{WNd(~VwjC4fQq=&SIWd zCHd#&+#v?n(g0EQjMSY4qg3rtr_>a~)mKMYEmUjg*kpM5L*HsjNPG`T^+Ps0Lr~?d zRs23FJhj9IcOtltu=L>-B5F+0ty6oZ6?%8IifQe{RtVy>wG5Vg1S<*oF35f@z>Jw# zW|LrLL;Zq;IVJ}lHLA%#fJxelMo{b({t>0E0zS@@Fdt{7RIU^*9b@4UzJbN2)v<;a z;c5*c+u0A-XsjBnSkJN&za|3iSqXJfF%#67JU-fmUw_RyQIq?;d0!oa8>Mc4ZOkTw zQ|rTQSh2Z0$p^PNrG?wS7vE!#T8j$-%-o!GU@59Kxl}Ahb+%)ijpp+h=0hA3Mdi#f zA8|BJgk}G;)bW+?SwjAD?x?kZMsl=npm(A+WmfVN$UaoBgEIZLRg<3HQ}f3+`S>#@ zD5}T%-lnJ7vy%w1#g{eHS{Jv%C4p;5Bf^(Mike&Il(_}M%7{q@#>&W^@5^k9-W@HQ zKPt_o#Fgxv#bQ^h0G&+C_`dlsXK*ptRvqsNZNnt5jzT(7^q1nd6r7cx2_X-fPsYh- z7%{EqDh*){XxQZ%(-9?`Q-TjbJ{k1>7cKvU;Tjow-YI+)~9moUB{Af`@;V zmS(3Ib+QvyiEB*Xe6qYyat-8-J}<4VeOB0(=#Q38i;HeqF1Qeio_`lngtdM8xGo8$ zAy^YSaG2Bnv}Uda>%kUtEnGOx6v5`%*+K3MuovI|ZTG#eLsopYMx()q{okO{f?QyK z3*L2?sIq!D?!>R608d!4P%By$6epPZBb@l5?|37yqLuGD9~}?$_+G{*31g9`?B~vi zc}*a2Phuq4?04?@Zzc?34}Q^c87Nl9~FxVnHZWVLlE27P9aR&F`t8vr<-Ezl0$V8a;6mL z4Za6u+vW178$eS+U60zy=W9YVqFF=iqVoX0=^K7hdAEqV5Er}yRkq@^?aW~4jXDTc z{Q7I=qT!9kRCCgwT%sSv^O5D?c&Y@2V^EzU0HElF3~E$=gS0Fd@hIwYkmqW!V&%<+ zRPrmnQO8}?9RgKR)eMfL6VUW1s&4|4xZ_2vamO<`;TE&TsUsFM&*c|hvu-qP#1-|7}TnO z1<*Xm9a34H1>9>31D-!?<^Gv+yC9fOVfFGoA=$l^%w8=K!aZ1wmBe z=e)1FZ&B3OL_QYMI9yZ3^-^e-)r?^sXpg;7&IH{6l!o8EbFWcY$S6C1y1D2;U;aj% z336%I_2yg_gPJ$_0`W;EF*tgbX}a|{P-2VMtS@(ZcQo1HRn~|nwY)`;7UoaWY?Gnb ze)(zvw*!kXJl_k_0q5tvd+Nj9#O-#*lUIJm1Trk@itv>oA&0kHmAO#a8^ERQR-@g5 zs-)Wh>Quc&`UX`a1vQm<^MctoEPzTeHQtHnWC_(s0_O;5tZU|6>s^D;rY{b1CwrL| zxFh{j<5hOSZqjU8MGP{h?iL$(+^r^2N?hTMuea((26)R-vj+b9w*|XmoSmWLQIj^z zxL_`+)loEOiZZu$t!c#-y0!ZxySG%S8<(I~>u;S4AS?@qL7gcxHxfT(p+%_806q{= z>x_X9#2*2|OX{Dx({5TW;l;R2j}{}$w$-YOQamYbqaB#lty*5RIBNR53;upp1;;BD zir@YN5a90pP@I<4aHvX;Yy9{*fEM&m3YxyB+&J>2s&(svk%E@D>sE*3g z^!hhQf8*_ZPlD(4Xn~!r^gfI*JD{|WUP8R5c~4P=2^ePn$d5}76qz>{Lhn;?v5=B+*n5{NAxb;M0mq0&iuP{(+1 zRZ$MC234`%0CkS}>J@>s@$}wZI7e=!0WdKtit#V*1QGWcUvO<`y9V_xtK|N@U2U`q z7ZnS0k{_s$(e)H16@{IUj-EkmZ2b{yjvpO)t7gBK#)rY+&RA~Z6)ygzT{^j5$%@v{wXIRy$^X-EgKYq=vCf>#}^fWdUT zDWIEnO_?K#ZhD$nc>iG$AW3bUV1q!a>A;+DR-8@4Iz3+KQ@n;N7Y?ZYVHlX&5StuUtS73u+xlP~?n^o{-A9zVh!2$Eoux+>Q*sjQ``&+m+xKhh*q19@l zbrcBfeRzOUoS+H0^E$V#i#)AQuUfL-+9mY+d-r#%Stl82&`|b!U(o`{t650yit9;@ zw~{5uRO?OGMuN3Kos6sq0XDCQ{RF)da{%=SvM*KJDI&aFuOS=fSjdtgC)^+)#rTtV zQ--{m&X(d%f(KxK><=ixGi=;-zIh`FENEOnbq%1tBb_$KqY+-dHtlBq&2 zp)H;~ve#W&dEAfQ#J&IE0tDiMcoBscTIEI4`#gXUA72h^m6uJo>5^(4j~%+_=+2B_ zq2wR58TUY=j3Fv&OAI)teSx9o+STeQ#@gut|AK`RkQpvi=uz{}!n42~WiPCz5>6B+R#|F3 zvrJtR3IQZM<%`N2BbPhQ;Xjei4^SS`ts_j&XUj&ue?H_jz`(ml#INopF%VfzjL}UtYu}iR9=s(Q zN0g$97df9Rj-bHcU4R_x1cpwetxPl6;eNQH||dkqMv?dKpjnvHtSQFG$|# zm>t4QJxmDA0G9Ic7|$Z~t;S1}pntYfqceR+{%}>pS^nKjk|wzRUz38+H$d6^b&b10 z|D*WFXMrRBw~OKc%+>u#7;Sk`Wc4LsY+n1qCI*T#EQWgY<2lVw@4CxPWK(rU4h(uDvZ(Q1~dy0gSBwh1ju|ga6VyI6a0xXA(}DAj^gRO``|c zv~Z-G798_tq1Mu!yki}#IPK%be4S~K<~obAALh=E*$H(lNI+cG;h?hv8f<0?MT$f; z2oVmI1(2Lxzia=G_KOVyQmymXrYqk=Vo(hdLvg_;?hZm>CK2;1>@A?X0D8J2k%0{YWgk{t*~d?%t7gG z)E46(d8JgCG9PjMkIU4|-?yH{016cZ4+OiYoXUQrab9Qlvg1!wiG=v(-GfK<9#DHl zEkvVG7| z=}bg3z)NqQ*;FpX9Q3x*R5DLt0{OeC5M(fdHC3u`*wif-TiM(0WVjFRq%qOh-`u(P zT!86*8FhxJFodR-*ZsrDay69k9LLb{dxXw>ERQb)}sBGPCoM`^EGEtI9T zs}AXJ#gz*lEGidVT&9-+yy9FSi^Tv^z6OGxA`2lA4q zpIILuzn7RX^Gs~#a|?{g899pqDvR$19a2J|vPe}lrHrHCS36ibpj=)>Q-!{e4BhCA z^{Wc<8<6Fi4wH*LiWWm7J6CrXAn(nt65MlOPLaB;;wP9Y$e18{IKyRNM|0sm!s7U zJHqLz21!6#rS=4)WV0j0e<#TbK}tBjsEd}oAT|BOsj5{M&+YUdYSKy7q%{*?yyi5g z`BuMt^QU)B)7(LnlFvckl+eDSMpFD{WH<-XcHnLklyAeN+4KGCZ-Gpj0^ zC0F}(N`F@F%M=Z&$9xxm)QgHS1_L5&Qmk4p`d6|rHeeA@6;qN#^ds5=I(qYPDfahW zz+TP<>ZmzY+F@HEMqjBlvVpsUYn+cjJlrGz5$l)i4(0mFzkbX|ZXf<7DYGwYZK@9O z6Dd}|JNh=9K($w~%b@~YzXeg*qrWC{*%9us6IcUJV9+jG1N;fPBg;7)btziWJTfpcW-V z620DyOH5mwETS@q(>&z|qP0}y(FXDz;#-;u6;@ES>s{mW01cxHaoxiK(m%y3iC&4_ z3obY>hBu5)A?}sWNxuy?GghNq1LInQ?%5zr445S;N8$i-gHjEX5?xfw!oWz7l^*4A z43i#?I6vl&yjySN^}8MlCvwL)p0tI_l?r~0LWEN)s~`;yw<7W(is`SQBl^M?=GU9L9w;eR;SAOy@ zGr;)p!=XoK*NT-kN`S;OCkD7e3Aj$=fkb%^(s@W6RYAIEVAyrLpB!X0sPwAZ`I?ax zQs@FMa6v^A@<^wdN*yeHT>IjxkFJYf_m~Ed08Of{Vw^!S35E&ZI{K-F3ZfcF^axr? z0H|LMb7ubR^ziubAb)sjp5&l_o%dcG9+fF~XrAy1uff1LzI1qGnun-TsQ0N{;oJS- zVT@d%f~AW3gky{(hjDhC`9Ku37^6t!W#TGe`~f8l zCz0(GF14Dr_UD4!5)UYmiIfUBNjWVxl@^NsPWAs zY^cbBx%)Z5-HYjLt&1NkcI4ln`VfpAwI@;Te5Du^uD}DA2P_X%rpPlX^A*h#KPkEK z<+?5rz!LLjU^Sng$54FG+oLWl|4unja=)4r)T33YMg;_z7g$!8SQl;a+8~4Qhmd(7 zZ9bhQ+*Kj-XjYOnd&9BEN6m1CN<5x~PWt?`W!$$50+&&*`~3WV>^3MO0GIGjc&f=_ zl%bwnSy`QtmGELw!cwmg;RVrT6lw)947-IQ({_{!tpa?%+-+t&^!gA30BJr|%@-OC zRGh?6`_KLoKKC=-iJePL6pGZV2dZD7uKOfoTN)Lu|6$@8OqYPwLO|K27aI?gkfz>wdiJedvO6=C1dL zclV9t3vP5(T%r8~^frHi^Y3L!Rtw=tK`)8mTFWlxM2Hh3VUL2x0CsbL^QWKOLU)29 zygkN#?_sVJ5(RV&9U*o{;&62o)?Hc`b2 z@bS5k#}~%m43cFb+mCg?q*N?21Vm)vXTvT!H=t}|eV7c$@XDjXJtqkA4tUT|Zp3VF zxsqM|UkVm2-tSTg?3Jpq`O(%GWdkXe<8E4g!J8|_*hl}c) z7K@B+w!TT#NX@RZ5*1M1O|LsCl6aqdaC0ivPALOA&0j5~dzPwZ-)^9PflaZA0KR#g zc;)B5NIk}+C#<4I#g3sI{aBd{bh4cTB;r(rUcaY=b@&vcW8i0m>pBRghAQ=+aBN-g zoR#YT5g3*4@aDmo{v%f(^nkj4Cy6Nph6|tcQX~V5PnR}n4^IQC8#Wetp6=U3adk{* zi`lbxA+)aFpGJBxrzC3m*1A?v6@3uh3;PP z1c+VJu1MnYptaGpaXrq>n^E*48~=#kE^uuY#HuMXm;_H7>X(&c)q1Q+@XwlltZ9E} zGEwZ%B!6JfU?y1st^4UGrfNh(l~6PsE)jAPKf-FwKYA&JHAUEpb^-gwzeNN`oy(76 ziQiJV;N{#O$P>uZMSngO1`94pzd$7h-Ii)0%w?bP4_+6=>Rlsm9-bVY9vmM6#72G& z$f+ywfq4oSwkN&2aW2QAy8$*a0!@quB?dS`L!#ZtZ*kkrit+5zWHLPeum39C-Sxa1 z&_|4a>3b87^|R2Q_0B4`S%$M%DS$$|ej)5ZqV3%uj_v`2{L^?C!!6`~9uEm1r_XjT zjeB?KT)lV=Pf{>YGr%l+@4mh5Hzp)~iq9=@2xH^L>*x0XH#YX@^!_j5jL!TmXf(iw z4Ki%-U>}peAvJ*mP*DKIX7JQPIp7$o*O3SR*c(CqTT1@Y;x$+8xA8Cr!jHXW4e1Dv z$ak`fP)HsSD_Q;ShSmerQQ zG_gt&EHk%|)H$k{xYs2=Yxvj^LaE83wc? zu`)AIHB;|jIz^1C{-iJjO7=7K;UQu!hLJB&oX;JeX8u0-04BGIP#H$(pbY>cDXQaP zwzBjZ?HSL5h4TEo+Ubr4P4D)~y8|`J_!S-U`urReC-qV9W7C^tXp*t4>UFnX0dxGZf5>aR*5k>; z2f$T{;~b%hcrfMJb!Uu0Jn4)kQgz$AK^{QI7;_+A;!l0Inac}9yQFFhq<_Rfge#yM!S9wPs?-HTfU}$ z{A^cUkILSA`X@Fbt)RJc=GI-v ztfwrH*p#IyPrs0E?lICer;nVj5jMWEei_@%X%JwI<->`Zg6kqfl)-Hb)m0%O?!(cH zp^tJlI2O*W$;o62Z)`xnTxA28ZY>@ifPZH|k#W z07_I0=QKgWMos%-9Q(L3c}-QipjwrZd%MJ~Y6%>5%d*Ko)KGWP#E!PfoQ9dLL;SY3 z1s_U%?3}4CdvA#Z)B@vvQNjr8r=PEr@6~MFTd406n(d+AP-8hfh-<>ge^TRlTZSm&+@F(6WKGLxfgItza97b_cY7!Rn;-+oy*t&^rivlJ`MGFHf zB{L)(?UMbzs5~Mjcf_N3sk(i0SMOMM!tN04$VZ*Ftr33oi=_mQW|omA=&`Lx35w}L z*=Pi3o4!Zi0#;U}{JX7!*PumzQMp0AY$$(v(LiPs5hbKgiAW=)F37pVK$W^b=%MhZ zPx92$V%5Qy9Ac_BOC(=VYJirgWEY4X=HSpIoVFyPAqDB$U{VIi7n;o?ty`-@BD!4* zQ6|aUFpJriygtAKq+igxqlJv}mPo)C+O7JfRYPL6P_&e;_Y^8vE_EW!8HAuVyTa|n z%C;3bSo!L2XXSdVJEBGQ`&^dbz|V8sXRFvQ>XL1)J8%@JIon)V)}poRdW2DO%U57# z^RO=6_CCS~(fHJ|zyldWj*|CpysyYCs_nt;?O1M-$T`qPv}X_520(Gh8Nlqzrhk(Q zU4%Yh%>Gz^;3$|LlRE;tFx4fuXt!x-uhpsqrX4xV5$AOaD%$gBjIG$Jc;D6dOc*U( z>vi2gbO6aR^dtLj;vsHiN)WhA7f!x=2UCy5q=Xy?==@-BAwgKKgEEk1rf$5?dU8-8 zMr(H2wn|l0+d+gh9y`j&(nZJRa^^GS2(OFKEG@OG4L@<2^*{ZL;mqGtx^XXaX|<^S z?*j7~C=RO);$yTVfK7^oJ>Sdz90ub?u(XULEFnReBk3~ z1hAW}!}^59s}d1&(<90vQ8_B2a0&cS<9TYRz`VJ;DPz%Jv$`OfNq(y3fZ{G!ChQB3 zi#73zK|NtSIU9!M(}Fb0R}KmP;I+es3e2s}lNj#yr-YVFeHL0p-2($D5gXvXkqRDD zJbr%cvj+C}2iZ*hLI2Pp`=LV?Dxo?*R|TWz=Wp}#3P%%RAHRcKc3k#*L4JD`@M=;< zza)s$gjw(;r^20PEI2*ZyM_&S&45b-->nTNhFM*X4`qF!d3tzwd~$f0J2?Q~`_Ykk zY#xCH#t$t?CilQpPmjhgHt6(-9PY~#Y$OasrOw)(MoTjwr@ORE7!)iZ@zI+Mh8$hE zhB9@F*xuTX@7HH_7eDv)_BIDS#MiHlQ@F{N^#;it=n8=FP6CFxCQXpIBp5hiaojXc zLAtYGrJ7X;aslD)n%3R~dZxSP#-_nA_gK&ZF$|8r4_`73_^FO9=7F|4p`MIkJOZ$I zipnn(8<6eV7JNVsv9un}Q`hm6y|0NFs6Ch^S%ZEDO3Hjdp?G*vtvwKegpU9ixaG3M^2nTSc&t6j6-o$364!qX5!$*ZMG zcFm!fM!M*EgGFeY)V+qp&Edj9&ZkuxNTkVpTBM9{&i5FUz&f02gOXW0Nbsy&uq$q% zVY_cl1B^CMsVf#Ll`Iji+$%*Vs)UT@#GNZrtpK{hKZ<@s^^i1{gsL13pjyd-OCz#` zMamF@DTG;0kSFB-={bhvmI4?D zulfKwa>z2Wq94n!X&b&j6cEjrW)!Xc2xXKDTp&aSQkS3FsPwk}R{5xcs2{N_)s1>% zS4t6uvOY2bVLZNTpx@U@IhYQ9waIcqy@4xIQ>>8yp`3<4HUS$6bd?f-gsdX*U2Tv= zbGmPm)dc2uqb5*q{*MwrF;1o{<>2?w%Bs;RZk9!ZY<2Nubgs805*49puSd;DEO0v( z)y1I@*6(=vx{GHK$4wEs>x3DB&~K=*8Y*oA$T!yCrN~bB!GgW74l$BZ@5Td@*~8uB z6&ZLUsp1=V=jTmt(jqdp>|S>Ki7Y=uoDY+tGTkH}o%kbgTcBhQ=Py`Q#Wn5*pcUkQ z9{NNW4^j*mpE#CM9YlxG3NzTN7`0}Tp@J@;Dpn2M1zpj{Fw~L*UO6D+6BWqNkx%lV zLP>BAMdU_RgPSVa7m7RSQ+U*L3xy1UR*+}RCy^_W$8Ia~so%y*)*bgwfX4_KdrvC} ztarsq24V0{ZqV`(V{_q*7|__5SKYF46LP7JOlDmkC9p2( zzSRt)<^}mzl`<;0nL?UvV#?C2&ROY2gbbGVtmoNJWK%3OAf(y!CninI#JPWKmWX&_ zQ%2!5#db2apXix4Yg|UJW==Odo*Dc*vPxwi%;0xe(`Ln6lO!r0wmerfSA)vZ;-KI6 zx|1@BM7ODC!2Q(e-`qjMYer70l;fy6Ly#zu1y2w^ z~~Z_gbHyqoFHs=1;seV3p0ZXqsrim^%*7b8HkF(t3#53zjX^0`>n+} zGe}v=9KlDcv}aRS*d!D5DjOE8k#MX-rq*KkfEZX^LT^irc~gJHa7|8A9ByUraH z-i4-#qxkFKGpdEq2(*N&+OyzQ49&H+7@<8Uha6;5`DWPP^&v#ezvhKN#JeBfA>B8os=|{T0#0~q!uKQ>n7C_+@U|!aAs?c2fRDObqAnrhMyGJ30Hh=&p1h4!iLj03!L6n3Otq~ zHB8b437zC5ry@_nb;~8xs$-?fLIPYrc2Ci}@Lhswii7Z&>mJgk&$mnfnJh}1iypLGf&(F))D#@+0lJ>DMn66daed$nb@>>sp7F!LGVsuwGlC_MX(j7H6vbq+d7?)YHVn9+jQKy zlnm=Ivx^^OSQO7phhck*Hz6PWJp2a53bxM^D9!Xah>38(c`*-mZl=YXpcB%AKuUVqPcVf-xj5c}Xia{t`p>?()^9V8eX zyLMTzoU1z0oL^6=?JA>OvYo;Os1N@0|K$FY=YO!YR$6w|!f#03&8Kb+?aUAjhj|QF z>z$E3J~}#pP~88EDMZR#z$pX6V6on=wX*!L)!Z|nj$FHh>|3juHJ$+ocI%;cK*c>d ze`fq7k20RUd}i!HvYAxDuUf4}<{Bl0jRu%N@)=xLbd8}B!)UvGNw-?N2Kl#xBxo*w zX#AIvJvE*i&$)*Xh2cu@Oi{0+U(^RlhH#G4l`nI`4?)i+QDRkh6#R-^vgtPM zN;Ugq81x%3*?}bVQy20Xz}uSvM|=ds9oUB+3K7O$rqm)9S3~?Eo>!gW^&QQjIymMC ziwowpnmftX_ED~C?fF4G>}CS*pMI*L3e}z9ZUb=z7YmH*l5jjw6eU7HL-MY0V7p1~gsTC`2Xw%zHwdyu1Z2|;c85ynx zw-uPAG#U)?(@TOSq0}6C0<54|WvGPKh3375Wn(7t>I48LT4Mm^(c?B);e?B`IC3Kg z(WAjh{y%%~9^=TC-iMWqK*&Fd9S4XaCl*ShV9|4T?!7EF`!)COBy6(S%^kj$WY6O& zyCpVR-OZV9l1s9CW_GnVZ~)1&5F19~2++nB9LG^2CvgJA|3nFtC{kd(94oc~2l>Y@ zK$h(Qi58F%SOS#a_nmX9PQ6&wBzwB=-MP4Ds`;uq=R4o|-j5`Tv_wgu1ezo~e5;zh zm28?ZsX{zd#XVEG#U#>bCc8rwnkM^E?tHjMrTmduCu?^Z4RQ}OmMH*qw^K^wCdQOX z)i-k;$tHeL&SbgavkWmai2o}{Jpu}M@HD3eqhQWd#n~bXVv&v;%uo^ac!^R3WVpov zE}8H7_C>)vyHR&VBGn{00V^TMX-UG-#EQ>VK1c)r(KKlb0jI0xGG~#3uVsms^G-_o*`YwBJN$CtAwz4J>K5!i>t%lTP%*njEHt0Tm+578dY zIe7NWDej}>jf_3FayjZJ0nGp%C7yMkz+(U#O4~&8KzeN&t2y#=1!l$b^V+yKa0h-6 zy^Na2V~d?SnRoIk{Jc-5Ev~JDaQDUmq82$U{l3W`c#^xH7cC2TdJc+(m1-oRz>gtvcO)kxu;t5!@D+9dX$e7ujJ4BDuJYC9jf#+&93ilhG)!i%bKW!;U%eCTvc;N*qGt<4NYE<|n2uH9#?asR{CnO}tS4P7Ca3 zQOA~ehJwivKG1Y%9$8e*HL^%Nk=F6Hihjsl2Auqz#tWR!Z{mbPC~TB#Huq}d5Y*eL zW)VikweH)kM0UwtzNzvK5rEwpmEF^j#1z8?gTE_EB8Q74zf;lURQ?pfYngC8Qqk{f zydILwOC0e~E$0iRsf&z{{qx@FWpOkfQT9AHBDeQ!&pk-NDJSRS{>u~i-Zq?*$$g}o zi=mTzT|Cd!Cbl?0aKyYcf_ zvsRo<8!jXU$z4Mm{%+HP?}W~qLU2~+TK>V94kV}%qh&zuoSDzg%)N7}^iZ$uxZa?t!w zRtsjmktW#*)n)b&m_inLE(9bX*6O_)8TC@lsT?6lk;7V0ASl>8nu-IJ{c1N!9~!72 z^qAunskz#PL)mo{p~@0Sc{l^asFoG#SbfTGiF!qyGRL#dV4?5G%A~SjX&`RLG$se7 zwmYxSPK`s9PLZ-APh z2AKAOdZl!tvuHq|t6V~()koo!n|2aN6nLU`y&xSJ;zNQzd*-84$wOg6~ zz0APPxX%hXmQkmy(XE)LPN$A;EAKxljYq91VpvZ?L8JS%X0!bK0RK>Ys<~%0MT;M* zA%+0j02d1ij1-M8Jj7udx~y_5+#0vxCti+5t*rUVGe=I{U}V~YV7@?P9%KG0rG)&m zZN9fuIGnF7WVUMS&-5||;sVT4BhYTT2y%3$nTk4Wuf1%sK9P5ohF1^93V3~2j=EY+ z=YOl-ZIQQ@_d<~z^+xxw+EMR9crNeP5G!4()=_7+j1FL^6-k)|T6zHIHtX2|s#jeL zIS!OWCJJeylIDJOG=PLYxa^%vkzHsFRMFO{*6W*j=nVF*LG8hic+hT|RM?dN^1Sgr zn-vxcpTRC-Hn(6c&3&A}709|6Z`Vw+R;piI+X9)*#+aOltJxSoD>lR%wf(Jjz7h41 z#a$90NlQns$SSv`_VZSkw0ohlBe(M_NA{7;wu((8@<8q8=6EOuR=5ZIHV(!kY`4Uonh*}3+SP+Y6kt|;Rl{$hUW8q&SK3w7t?N*~FS}i# z8u2R7{vMm%E7PGn8q9Lm);*NN=bTnyjE2o9@Y->xDu2UIvJj#<~~)vCyRTt;~LQ`Q`hM=p}+H z1`cdk=A$nGE(n~^-UhgVX7|l6d;uUPuf`NH7O%wDOaKg^G5>A;_o4ZoUsl4a&=I;F zH~I}4pM>?^inl)rRwS%R@u>*nv-Jey-UUCvt%tYj28y@hRk*V&PIIy1M6A^}ERlW1 za;j2hymnZ#zVBH))5(61G`MAVdN4#hX<4q!3x;0bN|j^$uI#{S-kEg&169D#eGuMj z_Gxf&jDRl!g(|?vMQe7UkcM7^X~9!bDt0$sKX`NBe2uyq<{Qbhh-EFs!2p2rrl|fV@NBSx`yPMxAk>?+st1hV9*5)c%Q^~{m{hgofq6V0 zpPQ5MZ2lkwV!d9rl@<#q50{F9U(X>-<0ozRVtnN)I8aic`a24f&&D!6wA4ctEMa0% zL0JN$tXLFz+vOgmAtP<0)>D=-=3!~P<7Rj+%&hvE3RU)AB?wD!6c{dOVTxfridjYH zkYbL2?g}d;1t5v}#{J@OEIW;610LiO+LXOURx{N=P0e7ow)J*r4df&vdAZ&j4Nu(J zygG2^g#A^$xf+x)c-=|QB-&1m4%iK^zhNM}iKCoMqk@jlT;`?NMRjv1bo)mK&Tf9k zGQDFZsQnGvEQvJ=InQIOw@9{^H#CaoZG=lqI73TXJKu~$HGQ!eSH#mgS*=@T~vNw9uQz|D(C-Xl2?ID#; ztHYV|QbgoSyheH#=y>*Q`Nep#7COJoWNwEKNCK_$KO+%Ti}^%y;(OX^vT8&jK9V-w zJI80hE{;ahbL{oL4DgxVYGpiq)te5i0=_K&mYn4!0#nJ$>~L_a{n$oW?3dy5LLpQu zzh{)jBg8q)yW=C!?Ck=qmZ*X%jF$L=Nrvb<$%I2RpH$|^xDP_)fP7=tZb))lUnpMeE_RpUcUjZ9@m0PxZb`D}a5_f-h=|o(C1Q>D z__hm5onn;g`ti0p#LxY?#y&pl+bO*-&;&*5roh z`SDTd`j}keC|2#D()4iT4#?>ps56bE1Ijl;-EAbCas6$&a&no7@e~FlPh6G;cwv*t zTsB&=4Zgg6VL4W3zePLG9h9JT|6rPVcD*g6mtDFLv#Ub2{Rr zCY!Bv_h{jBWf04d@5@SLR%+;Yold3dCQcBKtQ( zp<0oQ< zXYSNx|5oR)-6hqZ{o(2b1#&$0i|JYWaFos6(OlF8klr}1I{%b2LHYNN_cuc6J$pdi z?iMMxQ+BJ89jKu2JBJje$1xhRP79h$mAl<$wX!jQzX0TtTC-+N6Ef!5HkwDUB{fBGC$bihsZeYj6>HK2l=r=g ziunuSaNR!9So6)>4xP&{nFJ^Woor&AgkzckW-W0W)@`jwF7hrG2U=PpUmQ9DP$&7F zG63T(C={T%>ImPw{Jv7$%4fAU5ooPOK{?t4G3)~q^y9&LX5n$}^z z`)u3lbZC6m>~8wp*JD##pZ)AJYb%QaHJcr5>(1N3^p(A{aS8iX)KnC;6x~r9*LRIw zYDIe!ieSF8H;rF%-@u0t+rok!Yj3KzZAu5K7oVdRuq{;kXDt*mXdn;-*_MW|dX!7( za*nzWBlI>WJ3*sKd70IHSO~mSQB}Ml@(%0}RF;gY2-~i2& zEEx!qfppyIQkH3_NmVLfxwtI5lQHs)Je!Mi1p5cww6uZz(mpJC=21 z?r>y>uuQ_KD(xKKg+Uz>1c<>P-&{;@Q7G0cMRef4S^|Lt^yfRILx*WNp#V+|@^Rfo zSGb(^jiG^e%zzJmih;z4MTXzI9zmf1mrY;%e8f#C9QV@?-i1sAvKc-z>ZGP6iA{~p zJab+`YP=MWmA-jj1gzYO{8`w3z z$)<*$?NgvQ`gU9o!|xnQ2HJt%BHpCVLxp@6QKp${)zBWILN@y4bki z3ymcdRnr4H^SWC^)u{`Tuh^}A%aNFykw8qHOr&`&))G3IeF|x%p-iZCp^$YHMryl# zR12(ETFKGsej8i!J(*s5-;72I>Y&L`_IEQePBCpESsooMlPJTuP(#F@jdxW5e%M&7coS~C05(uMUGZP-pD73&uyvUe}! zDXJvPb*Bbu3kQoCp%1Uqr!E3R$Q6|5QS3HR`T=bXs9J?>ZpLzpXxjVD2)vR3$>U;e z%GU*X-ICXs!e}wIJ>N2`vhJ`$)F--cyU*}v8Y&rlSU1hnnKsjXS^oedqcd#ju=sm2^EF$S?REy_Fa4>Tz!}mKp;2X*#wXWRt(N~k`9`n0QUJC^ldexS^=i6|` z-5TgK`TRgBLzM}9^N?5C^sY%HI-0%nEh^ul7U&^x4l#OO=!YP8k$0jcP3~+tmOJ4( zl@JXSJb4@Mt>&^N-NVBKd6)$%yeq20#ajHLDsX&s8%3m-Si77HP;EWg=J~Au*%*=zf)n+|$?wrn`*$~JY{oRp|S%j^03k2+`L%ku$s25L@+r|3G55MnYVn;Sm; zM(=AXisC$bOOY1`n}owWB(5CJ=!1-0s4OWcbZY{ z8GSXL^y)uoO$(B!di^zx0TXmDotx-ey2SEK7sYc-?Ix7aLxq6oo*yB>XvnEfNAuzN zjJDvo*MB)P+TB{&*{?RrRc<}op@vDDhJ8>H<%4F7Pc8JkWqhJPP)?=UX_d@8a82(G zTdlR=U~N_^__tQB)QSh9Gpr~bgZ{8FUx4uyc}kA`gu24o-9r@PagYoZ?!!c1qwaXV zFSnz7xl|*EM!i^SH#?~8OGRMhN>Pc1O9lI@rBtxPqXX(UFIIX&NP$~Bq@ZF7^~zDB zg63GtuyplTtnRq=#oq{-&XBVeZos=dw%la+A>7+IbBOVnLjAMZQlE6;LiH=4*kxg`h8&6Rcd%&hV%@%hMNX!EL?_Iir&6q+xTjX zTAH(S@+uj=74a&^#!9?xuW@>`KLaBJhZjK0SRh@etXhabY)8qpgi%>{Y@unKOcGSx z;kDLaE#9pq7|qhVoW*H-^KB0$hg~43uDHOYxU;tm@73I_UVqxUgYdxd=wx_$Ii&{L zDpGTU;$5!S_8l%zrP#s&DvHiFM{dbFEV{3Xe~wu+Ua zTP5g{Ueyj^gBkXPHN-PQc+-YmB^tAMU5wC4rZ`L{)ed=NZhS#|5dX=lD=a)JclHEE znt^-no}wb_!-snF_SJ)ig42>~4{Lay#RsJTI8S~3TAn_SjH+Egty8;pgPI*$JL$7r zN}ppV{>rMHK8?&O+_luVsH1FwE^?>OSMu=^P`sW(tg1#rsMe-X5(*~2u{fEGsyyijP>cW+zQK8)>glp zl+)=JyVVk#T@_~+R#(l|`XFFg^?$4x4j7-=Edn#CxTmtICKynK_NCan_w1Fq`0a<` z-WWrbW@(tij>qG3sUG-(nioK>fXU71&G&e39*E!2PChViK^XAoE_ZlQS(dw|`9ygo zykefM>)}KDwcEd(_m0oq(mAYQw;XsHovoLYwz{>^zxitVg|5{``da8}Mv%8I>Y6ci zXH*Z09GU@BWaV&;It&#B^xA4t65R$eCh;DcY?d~x-9lk|r%=f4Z0_XtwzjNobcx}( z%}TY>q*)=96Mx0{lB`XinlAJptw8D1!FfCc{-jD|9(dlN6n_Pt~&wa-?uG>T1t zC~;V9lxsGNCo5|_*|B2BuMrI5(SCQMKr$_2a(r}9q5`e`06 zwF(L3cOBIxRdSz!#c;JR~t#Zz?2Xp^ph+DIut+4aT%Br+<9f#1+%H8JT1 zM6sJ|V8&iO2wQfmQ$;5(s`hNZZ*7&!o=hd(dYhW+?pZ`brIz28EES`Z-eyAdEeTq_ z3K*xpdfIEOX>18q_O|3nZ<&UJKs*#CFC${FU8hcZz}C$VwhLR<-rm-xwY!@y>=d?h z`K?X&{leasRWl}4imE*6_0csAmD5Xy2je`B#az51G5CX6EoN3WK;OPP1h5 z(LN1+h|)E!8r6kwc8=P%Q!?+BrY?LS9-!|T&J_$-A5=XUdmkBgw_3N&Z7vT#63?!j z_fA{W;T1KubI{6AboAThA~)FH+3=J$q<_|%;^Q$_QBk{O)QjaO&QYUow-0P8@PN`N z9@P>Gm7rZ|o$l^J)IhYGo2O8D2jJ$+RGFThLFhJxp+M(=Yjm+g!d@U*ueC`VG#16o zLMg!CmF>^i1Wj}XHB=f$&zxqh3?f-AB5WCbC>&5@&>e(Y@9q(y0(-^>J~<7vzC0+_ z?L)hUfO^06r3L!dl}$}i!9s>u@8}`cM3d3FqI=l3shSpF{B{x1w+$+t<}(&z&%{iiJDc9?fIj{Fu%GQ8umt8v-SfD2?b zwuag;@3>l~wjmeJgeA$mkAweB?JH!W4%}yh2(UjNleskddm?k-bU4Ge)f6^NnyPd~KYWNxarKGG z`p|;8ZpgUl1z-6BW_siE_<}i}xYOQzJpEGUDS;hdPDi3}GBqfZP=9D%4X5+V-nnqb zwJ%2-;;;86S1k$*;q`=fzIfDaa=N?#rr3AhPYGB2%0meAy-5=;fhmGhBP9*IFQH&V z^i#56t4a>$`z9>eGnk-&6W-4rm=_KJb*O@dbGb- z#({4o-&T4p#SQuQSf7Mc$dFE{BX75%<}C<_s|T7g5D_r-Rs}|hr=iUJ#j+QE!-e18 zhB%opzncn3%D8ZEllYW`VqO*n)2=nJ2oG0}Uf|leg+_$$gwxf8Q%!VZq7YZo>oXw0 z%4GzyMOG7PK^@--wV8xk>I`FZAs?sSu%EVy?IJp)x7s%TLS>(pXQ8=oUXBpUAP8zS zG>Qq9i7HedDH&Flsd}$B7)(Dh;jV+j9<}3pgBO=GNMa;YQH3e<@+0%|gV_i4HLBwD zUPR`hsHgYdgVYiEM3Z-L^ZVu(Df%=zH-v4~E7cEFos9eUe<<~PL&QP6{;Hapm@#IT zLpBb}^yFad*lluFQn4=*@40}MCeeTJ!3PNA2&n)aRDmsZH_Q#-=aV8TC>(Sg=Ye_9 zd0=ju#8g;RL)9;Le$Yc|tvf|QDhglNxc|`uU5sO;LB9zkNCd67oJRKv)saFBN4MH+ z6l>;&_3_6!QbtNnt6FuQb*q?__ctm(*`jO}Y<8C}1kdJ4yEi(eK#3AXmFV4oyb4k; z5h!AhE-y%^c3YRn=fl~VJE#oL-C4c&+AD)ap%$%fn?gyrmIESZb~m>RI|j-nLo@1> z&~vEKIc#>R2$fN+RSy~)J?!Jg#`$=3dcQX{zhHj4(JG?&RHyn0LdFpDg83HvTu7pe zifV`(nT^lgBLE5$uGE@ExOkiGvV&o_0iXTnU0b{`>}QoD)a2SKAf}_`RI1PHGJLjh z3)}VH^rbr=j!x_DY}Pw<3E-&W<&a86?GBIu(0=-?X>N!=4$Mc7%uRsw83)QdYaQgt zbG%>0I_PH~TT-b3W%C*atUaQWc77Qs*(5p%5vVA>U7I z#2`PH84mf}Ey(5h_0`N`Uc4}jTS}{zD#VpiJYL*TI7$B?BRtE4|4*PSvto8_vFd&B>3U{P<|Lc1UH8W zt@M5g`tO>a^%CTH>@ywATg>oKo9|}S5x>&Ch|~3a%iy??}9V9!h>J<8mh*wFay@> zR<7E)xM-bUo(@OlynO`?gL>NNVYMPtp!1|k!MKj|v}?EPo$7(CUQN2%Y~Gt+qNep1 zpiS+ZKrM0*{}27Sf4(t-4*TF@c6y&YO>jU7R|&mqa&ky0&wqf?`L=4s=a^2h0S&S3Whmq+k>Q|JQa$QQ2)w1z$ALb#N614uz&l*Q`59?a zqH6bn-F2Q+8l<&S0tocy%NeF)(wt`#}~Jl_qL9- zDYo`|BV>rcY;kb`7paWs&O7@hJfVoDpHx#|4`Jz4+q>93G}RwKL}mE$@_r1b2D6V{ zsp5B{FSBs~Bg>qgw~xh)ikI`V4h#`kmawEq5Iu3H^j=8o7uhFUu~n@FuN2C4eBtW5 zkd>0Xf{H}PZXU*YFh??4>mNtugK*66`ch^q1vQaQg`OrI8 za>uv#UH`8X3*j=QU&+1aVN9yoFbl*pmiEbVE3DVJa8$7ML8o*+bVu{zWHN;y&87}C zmM$W?qS|0fhxZDf!CWVe3uLtux$YEf(M63ARKGyOE{YE6ut^VAAyf&`GU>@|a#U@S zRioN`!uR%H8t6GzgcYcBRO`ZAQ|umfD4OP=*4%eGhp?Ny{|NRj>LGSH+u)Yg&st&v zCS~A@snnVWD6E3^d(w1b)SUUn1U5G0!y9arLokK8nP-bit zs}i#G$(YiGu@3!6YSkw;3~%Zw{-jL{E&Zsq2o@?zx}X5j=I$mc5TU63@Z=50*;5IZ z@^n1GS1V=5u5~vCWZ%R;9|B7nl`=(m+&5rZY)~Bn8v!8uovm;I0S*J9Zs4M`T8maT z7*5T5AL5UD)TgcC&R?NY3e1Wsgyg7EeTKc@S_f^ri<_6wP_FCPSJ-jG!Cr80I9RC= zx`Hp((e$lc?Vx!aI==-p%Pmd!y4?y&Qe`d3>(=L8XS~0Lvi`T#?Sy$O$>X0pRSqJ- zlBG9EH6s@}RfGL}M1S0|;ElCxjfb)vc5&Bx6|ACANc!?lGw=kqJER%BljeC>(*5{L zN$Frr-lpG0Dcut-*@w9I!Cvq`dvmt{Nt48CwE1n4#}NKamaDbbBC@=G)Tx#zZrW~F ziY41~YTx6C>4Z;nIqROmMb3R^rn#Z{GFcAiE_&>KfVc2YyB|L9qGGV0(Ar!FR(5wK zlTH;ii4<@_O6AqJ^2#?f>#ll7xfHc9-tekEcd}$~fon7Ie{RhApBK}-?#Rj9Wh>n# zzGf5qcbhpqx-0KY<-Ln&SnAy{mA?~+zncZ(P90%s=vGbzlVv-Q&hw7nB-AefW^Hoh zTE?t37E@$n=J0#7@}5KimCt!fkT|&kQ9X<$kD%S(7^J>A>CTX(X|wNdq)=;&ZY|Nh}sT$^)^Dj_O?L2 z_JA*6XOiMq1M|1Mx)NzofNQO1As4tXrVHl43^gy%ZXi$*<6<&@!`m^|a_1|Y7k zRy{Jw;b)gnh5V2T)z^!UZRfyl*zIbm(>tntT#MhWoahR%H_^^)3O4(6$KjMCq4*(AHq)hq8dbdzJ;ys(OJ;7UdO{on^M~tY1|6N4H}` z@o%%^%xznfgs=zk!ZRc-j`&}HGnzXL0mLZuCle%<^v{XUQ6GVw+>VG`=-6E2$0sPLP{#$9b zq#HESvRT%T+qbzyKeejWnd%pDC7MW5pivj1PuHoUBU889 zeXbI~L|$UCOL27g3$PLhVTwxT-ClA4{= z381*@_l{U^V{NeXg!P6Gtg_di4F~_q5^H)86!r@!{F{!u|00a(F(NefaVX%7T69 zm%)1fd^oy%Ek6B_ngno@ybouuPASKlE1rD-*@h(jJ(;LJ9_&`-y{&xdd^~gID+v1P zgU*|oF=@E3RGRFhG#;G{PbuJ%)Pl~$?GI0eeetdr?@3R|Yc;y~t2_sh4=>uxsdc@) z!e6`+N&`OQzqt08__H;fxW?q5!*@ruWwJaq@N8qECZ*4vX4ZLgaXdbUls`qnZ}MD9 zl$(D(Jf2~VpQ;5LqVb^qoKt7Qa}uG#{#yL6ibi_c1LHuv9iExpdfeyT<-50f^D}*! z!F$SX@AWa#v4fofX+ET?3CPBO#w%SOeFnHaBTtncCic4C8}&|6AMO;%OGSGhOvjhlQVOPa=CxzXwl`67+HRpz1K{UBndSq$ zz~>%tBOexQ+uDf~7R1ah{F2_Xuc9|S21w*L@ejxSdH3RHw(U**_)Yxpca!Fa8>Rtl zmphK27$H%=?hwTQ=8z?s_({0!s%=CQ+MH9zs9d!=mV+qn)Z1G-YCq&2%6l@b)qUd^ zWntY4Dk+Odddey@&u{aI6>TtQWt5y3T{xi;M$svziD$;C=Qs7o;Mk2^65{1EtlZIP zDyzx^-AJuOxq~2@5TZ%c7WlCwurT46{f(X!AZy}DO-G2u>rLJ;>RPyq^G1vz1Ky?X zUI?-oCZ2v!qW6qK&%#-~&TcL2^%@{+9_3*Qo6m(wtWW3|HPJSgo6Ux>Nq#GzyTM&n zgcv3fPSQxFBKZYWeId}bvyla9(zn=~x}cOm$dTe$vh->CV$ujp{6S1P)r&wBf5Rwl z;$#Op!vR{l#QbYOcZ5B<2~WI3=4=mJkacGG-Oa3y{jCOohxpU-=SXeQ&d5+DVP zS%rJ1ZCWw|^+k0$IPtRs0bsECLPz}fXa@y+oyo~)Nu5TJ5rxj@f^7sXS_I1I z{b<_Pz*9UOXOQ)Uw6nBOh~p*r;17Y6FrFV1ywG1j4 zSI|E0^sV!4taVCD4(1L$7cp)8X~WF zb51_WacXiFFfGK=gl&q^Y!-lEnG?y#pF*gO{uvBnVRX%MLNXv|@_Kxf2pw8Y_DG&S zew|34f``43X(bDoT{5l^U~|G2NagXZLRHkPgr+%1Wl5_5WI_qR-Z}h9y$iCo;0=^! zJfdp;^f!zq^C1jzRYbhluU(YRcju^WXjBJ~-G}ox-SJCzB$d**2g%=CWEpFqbk!Bi zI#ucsVZUg#ENeD#M*OZ5DdiuT>!x>$S>y6TQ09e;+rke>VVtA*AD%j}h5QmXO$m=( zwahGcXSj98t+O{XG7H+nR%-~;n1iQsXNP{Z1+bOf+ zFCdkv)NQs?f4|*5n~q-zAluXFcuK~{Z}89dSYG5_3I`qWjTvL^=}drsW>iqbQhc)i zhE1=S4cQzId$Th_1Rap6Q`x18ktO&1d{&u`FN)J??~UCWzA&m!L=U)n4<~x$8vgdr zc>-ejasvG`xBqe|jG+tm%p$v?M6(6krVx>$UDUc3d|e$7!do?~Al^=>dq+P5-fr!C zpzV%}BS4}uB$n8EJY*YMEDo#b5@Tc(qL`uu^HtxE!Fix04sHAL9PW%16wLZG4?2W3 z0MAu#DmIN!uJwZ3sSxIp3%YS&favtzxKm9%ie0n1>n_$@>&+y+5U4EdwsB~nR=yp^ zU^y3YB86d}j{!O=<2~{|0Jm$yKHMlS6gXHYQ{e*^I>k}$j`{4{!xwDcm-9Ae)E}@q z*cV3fG+6IomBHhH?X8x^7n9*RNFwT$Cfz};n25IkKGB~UC@S#Ea*TB@GL^zH6-H&Cc488= z5Cn)IN!9eDnImQ^CI}|mYW0aIB>_V1G+}PpJ?R1F5;mYdfM~0CIdjQx2IkD73{6UN zrX}83L72F4QM2k zC8rqJg&c35LE-%|CM2Mw zfyhc?cqyQ@HUl_KVr!qK4wyXYO^HyXK3Pht^6RuK!rL#{jYP4;yC@VSNld94xQCB7 z#&FUDLrc7YLbW9R2WT?(kjRs&RuIB~mJ%3}WeoL1i_o|2f(p!Bu!|H(??`0FH_`Hq z-PyFtF#U*#?XL}8Vq|Wc_$UvUnx+9@vKRkQa+H*5S~>r5phngfNW9PrhLAZk2)LU{ z+E;=;Ng??Eg)vd6AC?o10A~oS7ZS2OjDk*ATXaqgiqNP_JO%fWT4eA(#9^Rv`O1zY z;z;>7Pjg8Z7*`_0iFFBAFl2e5QM2?hr3>XKb3y)m;`mCYY zI^krHlX~h8vAk69&~p`Az;nTVDZs`7`$si(h#T``w>LMSot(eXl!NAkRD@)#Q5(!b zHA0-k&BMFR>{!w>rM~z|IUoPI5fapdTq49Zc^;*JnYdI1ViMVW0mD8{{DGSNj*o?1 zWYq|>k)}QS9|u{G{C(Q}w=o|<`>&SrVtCdQ&xsKy4STD{M*B<_yMfn?*TVLeHd)K^ zS38TN(=Ude#wQ;MLBgH&K@kPzpa%vHV&Ws^@AI1pXeUJ3ysoXLBKnRzFhmQbV8mw= zGn@_?n-iy_(7_5axvXRz=ouFF1#3}Eq%@wqAw$*2C$KuekLR93{(bncf>&kvD);g6 zczpiI6k!!|o2dnRW76`!tXi$bq!dVe31y!~IHfMy5Ha=jZi_T3hPzkfvaj z9iPt0gPIFyLt?5x0Ma|imQ<}<+ro|P&#H2KW!v^u*J+dFZfPxgXm_pc=H-;WT!E?B zr5lO^9GuK%0BY4M+x;p6AEeb_{WDMag9rlNFrw?R^{u1pAB0qiakr9A_z#Ll7V{761 zui!91%NkhJNdX)7Jrxm=hTMtSKth*FK1GSwlpAhV12D*MCUnWMM=s&ZmcW+ExYZXH!H9rY*gcuadn07Bp$5=AEHm+pR9*4pDrUkcc*M?sn0Z$)GPdjq&uN z2Y+^aCT>2%!9!0e`0nSuA$!G_Lpf`!RDYxJi@ZYxip2=wAgb76|FTc@X>SHDJBI|& zcE5g!zuZ9%!LaCWbUJFnRMbN=aD&=)iF4YTPhp=J&(ISGe}0^>+2)2$Ivze0D}VU# zz#X|rAmSWu&amN3j6Ot+IdB|ykq4$aOh|oCyg5>HZsLa#s=JH6j1>7u{DHO!3^#*7zd9r;-+H_Z@ew}Rx z!3Utfk)usqY{8++RgZ0UaY*70x#0*jVmR<`#5+G8q2YN9g%X+g=)fI5TD;5HOWv=n zSaJUmg1&>OZp4u+qmKMDr*qV@+a=WOGjPb#304l=V#}pc0$3z77#QHPaMRFM5@ig6 zRBhK*hw1sr8^zjcLtxJi2`9096>jL{}0Z7!%&XUA!E9nh$D7ZykyaWssJPQlvL znL=h#syN~`sA=YVBhso>(Qo{Wju3T+r|EBPWjI7}G-_KgE87^3CYN)gUTN_ypGlY_ zlGT#W`WlYp^P4iA!EwHVv*AL0@GQ2=EF;*i!jW#uEd2u;~C9 zhs3WsMaRzPt26uSm%a1uIKXh|Lz+(L2xOiQBzzY0nJ;$%=E701 z3@R!lmGxspeaI!c;8{6@BQ~s51(}nOTA#EG$bwgj@GL2GT2-GDv*t-cC-X9d z=D>eEprr8e8|mE*;7vql6j8TAXAJFWkaLkd(m%%rO}P0jmOy^Mt<4Z1MBaTE7Gbrw zb#)x#)WL^kW@W4{rp)_FDmq}&Qbto8iMZVoB4dR7Svg-lA%dNX8!;p)dd8Oo2{1xv zbxKsGw7aW0x%<&u6{a)?J2*qnkFc<`e3t4R@o9X!yQc>P@FZcbcelFGr!s)g&nt>7E%@N#{fuVx(I-aQ-sSVp+Pq ztL#ZtGUbE>6G`A%xrWXI>9zfsebY*X#lav$l5I?fr)R>?ADDjdh9tKOY{OD*uM`+# zmL{--m9%B$%SBeI3x~FckYnz5Zl;MWEzK&KB;}Z}?xIeBCcY-?;bGdCrgf7Jyk&)G zN<5hjvYa#`OH+qqJ|MOjETu@htFff@OjMKzn-3DL2alGr!6W;9c80mnlnp*adorK2 zfJ73jsjHxLGiXB5#fIF+j~+g}9L+?|JQ6v{YV1&2-RFHXp=9b-YPcgl_~)CzhBZJoR!lFk{kvk6GX zaRNIIVN{U#W#(oHwq0o>Wg4}N3=$CnFW!($=Am3*JFL9EwQ=Br+diN}C+-V+qD2`C z3?SXS)7^Bs1`J{PigUsJq1$D!Eh~@1 zvP>yW7QAqnw}w0e5u;qXj=>rtDTA|!f*Y2ubD4~1F-T8lX0IH8p|lESt@L79T-}0U z=&)*2Fii8rcY3B^!<8-MKp{pgrz&|SsT3}r`7nnpvKkGF(;JC6CR$)089}=b(IsWd z{x~coJTRm02+|wiLNJxU>_$5DVQ(~`_};6N5lEafhCm0&4wYsI5}I(fm>n%GJuQ;e zP_|OcD&`1>O>Y7PgnGL4WR|fBJjt`+MThPtJE6!$tk{RXV`8tvyCjV5kBkZD%fK>9 zMq(L38=%mc8D>CSNoRt4j@$}is^%lSHd?nMX)(eAbesyf#^W^f%!^IrLIGYy7So{h ziqnq5mZb@&I%W5x5(g13Qjj2z7$Q;`@sGvnDaYWX(l9oeNIydyiAeOQMOZ|do^XAS z4oJarWHrL{z?j!%&mnn^6n$qtc8I(ZF)P7Zdn(LX%T0I}9Eh!{wlM(%0wolt>?}ZfeDXv=F(`w&)oGK9R_s?M5@oST7wrfMsCG@+2%=%7p*GMz4`3}?lFqTmR979PyZ(lg?NglRfJ zgBXa95D1qT$so=^JV#t2l7ZKw17}-=D3Xbs-Ep~U6g+j1ND`%_7lctg-pjC7TdsJqr==HQqq3r~^8-V=C5yTV_5TkTrv087Rm(dBa|g z=p(WibYR|%*lKcB*lPUHI>^n$A9RP6Z)k`{(FG06ISNlatdj8L$C9dKy6BWQ^;4f2 zD#Ae-7o?c^JT0q5sIwPiiQ+_qG9u@$+=1}m#~@@_nPuU{QzVW?FGu57BHK5BKAG1Q zh%w8g3W`t=Ulm-0w!Qiz)z zXtEs>n5-TV5oe;tV)k+hc}8h}gu7&7<0uK|lfrI*@MVbNXk7&mowNi0%3t{(!9<46!e}WtfRy8>NCNVVK z6ZM5QEPhLWKca(8j(^^`WlxE(enxRoX#DQch+NLn619Ya>iHwEK>_n*l-FcFjk>mQ zJz^T>zeARO2oU0?9wq`|Pc0;@56KF!8IWHF-ty((+KjjU?0>Qbc@Ub&})ur~u;V+?9oH60=+o#HzE14!ACq~9s95sgh@ z840%HBtIxqaTwcU@{QQYxez%r(<~8@2Q5{75yrL3@ry_X!oqPChzwZH zpa|j`iNlRqP7LO*Po5>INk31CSdig}h2bvFR~n+|8Yl`@bMc*w7CjImE?u$dw63^V zk1p4vSypT$d<;v=Vw3@(G8$!~+Cfbs={m=PSd3suIKo`i>cz3RD9`zoayDT z7%A4DY6id<@NVh`BodWF(HI%XuV>Jham}`}@7FC+XTTVUW#;s{Rut=hj!rMUpGXDr zERRHa$y$zm4QGx74w{gHGn}fBRHX5&rA3MeO~XN2XbUAVkF~2XT81H^2ZDva8$g51 z96-OL6)U?enIxD|!dsL`xUVM?5}Ihnw4h5hYCMBm0x(4^x5$--b@vKwDr3_4LmQJB zuXX)mp|+1{EY|h|E~tnb7V*MiB^4R<&L_LdaU0{5!Rg?}G??QtFi!_tlmh@lB2JNV zH@6&QAW?ETA{3F5)PS`pV9jAH4cw6GwW#>4YJD01W=g8@^2bm&@32s<=OV|@w6KKD zA;2OCz>^F+^8x*x`s>UGkPQ=2j+7Y>GoG`kCKb)$plCRmz?5(*mZSy1!$s#jkT5K2 zr)41AF>+fD+Y-UR7?Ce5Nv%uX%e?8S$7m_fj@+RVT z$*L=GB{rQX^MMEm98n|>V3zOHi$o8Hoocd;85`M#Td}dJIoOyQx#`&ym|}xc<{cQ8$Ws>#Hin zo1)EQ;^be<=X1-_R=`z}`B`fAph-xwr%H0e5FjYrPU~EAIs3|`JAK0-BMB%_-A%x1 z#!gpl$`k>kO*rwB;%Lx8Db}f*vKb006E%Bc_gukKG>N2bqwQ0R(jJIf7`=1UHJv~5F`I7ARz+ti&>V39Y&6H)UR1>_*6 z5Ns>wW0a2rN|Dir>TbzmGE~=M6djS!YOd#8O--q1@-3*d4|6k?NA_|;d#dvTz?#(U8m9d^4dDrVSr`!0nX z(D(Be&z`F$(dTl1t=;I??N)wE`-*-iXMRj&9_dqp)FrCX4&2S$P8VkTF}0>`y92nO z`t!JN6;O2&lnY&AF{Q{|3RXekT)WyGqjoytZw|@+SnT%!;5O%&a?M+{F4P#L?sUed zu}fnp6@njGTUajVI>1*(S??$_$AvP(E7}6$BLw*M8+{6n=)@W`_uLMDnJ|YI0T9Hk zFozBtT%xIqUKwK)J-Kjj;`p7;B`@;i^4t*f6N`4b&2F(K-y&Eb86X0=d~O>Idp;Cx z-a+D`U$JsI1k4G?NaXihIn)zFMQe1r6{m%3>BoVO@hcgb@_B(wa!pi+lFD$QR9il; zA(Z!iEH>qHd0P8~n$*YNF1ozU9BM|o9PbtVaEm^iUJd*3$MvpIz>Ca$(XSP(O*wCb z4RgzqajiGSsm6N!Ccf5QRqPLK2Ks$Ydh`Anlb#4zH*>i)az{34bn6kw7Yqrr!V5u`&( z9u!?iF1O!wIprF&+`+08~L!L9pYF9^;tYat%tK#-L;L z8Jjt)4wucK<)RGU2o&P{4FOP6n#lx&j#?=PXkB%L=*i*SnEC*x)g&!rE0@Ra9Ka?2 zs`m!ax*Y9~2X7*G)#;feac~v^1rWU`sfD8I;_!#CJi4|*ZWF&a9uClINL2%h9?|IU zw*2$PeU=2;X-PNQ-aRn27oizBb9Ou>@YlQ*y9`jo-9@*I;j&w~f`qQ(9_fV1q8=%s zV*)KQg29Cx@n&%nA|K{+TYwFmdQ=}6%tf1bP&CLuDXqO2v?CsjUJuJiPqSBN^ZA5@ z#mKy^oYi?X1bIdvFK6@g$7n_#`C2}gYd#JzT_I^;-*iDCEM!D)RLJi^Y(Y&Y2tiDv zX6Vy$MyW`|a1>U{^V&hD`IxC-8x)wYhm^sccobL<=MGs5Su|eLa#RQ!K;6A~i6ep9(~XKRDaOl38A1v4ZwNBhTmpAlOyR zVz%XH2-qSdA-;iy%}$2#^2t`t!dIx6C0AXEW54;FB_vcx2TXZEhN;pM^>7mk-}R76 zgAdaRnQ);ypmB0^#YG!4zC1A|)IKF}9?)UlmT>Ci4a&#QK=jE{sCt066Hxn;zJKb`%>2z%S zv12#NX5P32V$RVfMtwnUSf|?z{Epx5JnuNIV!K!m?j?WLEjA9L6QEyoy2UR4;A(=N zS@RR1$@~oUdLa@_g)t)Y)+Oi|p@yBSVgbVYMFImXBiLhV=ncwnbrOet2X?n(oFL4G zLk+_yr|b3}glo;lfm3cC?bmFl)U3CP-4OIE^=6rX4_VZGDd{{bY_La>o=n)&nhr^r zgh;0$QRqHsx`u4lX4`4&h*7p%ZM#(L+GW#mdUG^pI!03>$1yiH9MnIaKuds#H*lQ$ z$Ycp%MXA}L9mdlEAMLU2-m4Z0bCEO{`bDMMsCI4oktDFxjnH8Vfx5-`+y6eHcB9r2 z_m@-|LdgVyK&XW|cta%DYep-AtYK-`kxi7?@h|Bh_UgFWBn^iwe8DADJJm)dir99e z*$DtipgYb=L!fT(F7~S_~wou5l(JTa(T__v?iuYgwb!iWU0PMySr`xtLS;@SF3JRR| zzbqj^?fW`0$6l-}0MSaZ({<{_?xC3@hA*49aMjAo(dEn?fXWB(>PhEmr&Mh4O>|8> zu(_?XX>aCI!8Hw){2O(i*TGV-lB)P(X?%VTIfBXa1?L3^9$Be1o9*NWM*CB!Uo-4# z&C+A1Z5M0ZD)vpC2!)}b1nS!iyrV`HRF`4LM`tw9&JLNP=jdB@p>RF)VC+WY4_7Qs|ttN>Suy;5*oZ z{bmh-0XhR+oc2+J07TWFTg^5dmH?Wyj(}#d`)z@~K%NJQKm};{5U3$jU>>zH_*#J5 zsKa#Bu9^4v{A4>mNgPGk!PG<5i6L@bv!7ul>_2m;MNz^MfcaW87f04xqy|4QFo^zG zjcfZ3AQcDo;hxUeMR;xs5B1vw%iB6;Gl&D8ecs)d=K!WL`j-*sr zQ<%$2DVw+K1XvT6$QWA!B#LHKwoBD|vF3mj6q%4`l^>H(CSGh1h@w>p$%dDU$vT^g zyqzcNQZ&Ijd}L7jK&uWMx@N0eZ8kbygP8D7_KW3uCm_7?t*{B(1*hw<>_Y$0PC<|) zj(j=6Wu_r1;W2Tv4h|)DzPw*EgOfM}>iQ239WJ@g7AhQGfFD8@A>A#6VA#7xrO7lA zE>Q@}-WRHkTD4)LRdTz7g@OgqG(lho4%|5Lhm|ZA!q*YxE<#52?#zJb9uQ{}#27c8 zp~Y5c^@qidbI?5mdniXyo+LX)dHnVj-v+?-1OWnu;PzhKu*|YbYLyV$ml;&(v6ze^Y^7R4WCC z=cz)4%aaf!6ipV*f6aRnAWQGmeP2icrc|HgOVI4V9v?n$HMki69qx;L8kvl7~wkbDHs1^haMnb|1A0#eNs z5VzdNag@TaE-g7iucQNU(VM>1PYv&A5fUm94A#%cOC16yYm>=a5^TRc5j>8pzHC&C zF$+L;Jf!EbRFt4lP}D24zyK91+cmo@;>*DvM?6*M6!J5+$?46Yx6L;kJXkn8?wg^7 zR69@iYsJQ6!d$ga0;iugkBDADz9Tq@!q&29R`8nu70;c3c|PvH1O|vx%z*`PF8Oqa zDoO@_On_!M1|NwCfiK5N@n~J@{$%14VzN1naC|!zhjufBFVo(xm56D1kIH=pD9x7B* z@pL+Cd^945K$pU6U8lMK<#M%c-ur;G#1F&NQd$fI>d^h1gY)q*$chj@C{$t}M(Yzg zYm#}C!8j2TGJv3c3OmfKMJD0^LVA)HS?;u3qnGE=WI#p&)P5(kuJqmFfWt zD|^m?a{>+tI)(k0^Hg?tS`LdyK{<}PYIKj<4V^JcJJD#2w6M$Rh!sm6s#Pi|Z#bl< zW@l+h$8Hnc6#cw?0Pwaz$*HzT{L?|hpLD*`?y{Vp^@t`tSjg87Lbxc+RDqwi1t9Ho zp?tPQO>6h{1lx(a)9B853Cr}1{=J$BOX0~0>godw>i0nsU9256HO3@Jsi*$Io{w-1 z^Iqwm`AvYc4;MD?oHT>@H|0s~?GY>zH6vaQa`~8|8Yk}f1eRC9HCKfcSxW3TEfsfv zMQKyVwm&^_kk||;S^ZNId&Ob#t$W>ZP|sBYk~tc?uPIa{bVqRLBFv{mn3RPp^bIIQ za6t$`U2Q;^T?y61+aCgDqX-j64G96bGnaINnbN;=1Q1htDQ3Zi`5`kjLuGW|^1z-#H1iC6onsl!||En=m zhFO@J(5{YZ1Z4u<%6{ZxTE)VcMsa#xisYO9<_ski=G2awJnYhJ@|S z$T8sCLPlKqbkg_4c@o$`G8w&lLd}^P@Ou0V4-@20Z6DcA%esQHTW@m z5CW%1fP<_^L24r@GspzH5#nT(BC-A`Vvy1I2t1iRrns_|fn*Jx)2bS%3d$6#nVsb> z&>{u%3%~@^jLwoKAAR>JLOboi2}qJ!iWQhTgF*{~(k>lV*-7dFUKtX+HyC}t2wIcT;7 z%@u!;2QG9A2oKdFL_RukfvFI(z{=A+LW9NN$6=4dlsu0tpCcS(3hxi=>A<5~+=oL&f)#GtL8KbsDm z8s_^kCrH}4gttm4YQ^ak0gB#Z74;y~M%V}mJsS5GmRMGP0%j%^UFzM6x4mxHo9*Yp zqb3Pgu~C9$Dj@lg(H4gDDpB-?^fUNjSe^n*=~|lE4!fh%`UZO5i&)LzR3PEvrqVYU zz;R(RZg&`x4#_De{qwPIrC01p90tLi#OY!C0RjxJmRkpKJAms=SfHSc2mGPF47>59SFkG_o!6;VcO1q8u0>{OJYJ5g02 z-~v-v!OQ146Ygrq2)4532(j2f00x-KvE2BHsMixzgaur??PryC-642f%_LdncyWer>9QH?2w^8PS5UZ5SepAp{!2P>xB6-iNePdT!)M9KoGXq-H7H03SCY0Rgf>FCKVddxoXlaY^}j+8OS6W+AO>JIkJjSG))c-g zcnm&}B9%WQ)*7MCt zvkbiZ)Gj_2C{ZQDH>OLiTO5%s8rW!xQ0j6hA2f}j&g;AFa1=$6>DfE z9YxpWi_(|dT>iNyK0!nI?AMFvXa z@pJ&IEt<;=49dzy!wNp^LbIak^)VD9Tl$BnHtMD=U zUJg%3?!ZKF1giK@MJinMcZ09+q5p8?A?QV98Aplp>SaB(J<+nWVfX1^6bQHj%F3wjmU7tJ(AvSp} zk4i34yd&zpYpArCuI5ptQ59Fw;FCr%S0cwj7O)n8EU2l51#VJxH_-nDy}Hwglm#NC zI@wWJO&Do1p)Iq97YNIF0cmCxvMc&(3$lsYhIFsRHK4Su)ro)ha>nsDSZx(c(&(jE zE1<>%B}-W*ZOJh*1vy(iR*|9b@#4F2O)Q<+zlVD4OCTADxL5o#vF#4-8)C?rC7uw; zirclBs5*4dVRx9JuotHwHBm?oQlbcA3l@##ndZuh?4q+tkQRkA@%j`d zTvJ}iU?|ZTXjLTX56g&!pxhX0-mws6X?sIh6r_O(VjTh8a)<`vf}3m=0-|g36hex` zx~lNeG&`8gR#5t60==YMpl`GgyCmUd_Gn-k~7hB%qzWao)G_lNxBwE6IPJ(nun>;uHZfFbISMO492{UE2pJO>N-w;{K8F1*k4i95_;aM_@+y_A(XEb_^-AGKI1*(-#wnfXmvK#nOX`w6NGUQQ26lr2<&NuHaX z9vdO)n0p*2+V%9Vk{Wu&=_xUNEfyfChA(NznXt!;=ih=vYA=IsfK2C3DMj>i zL@CLlBMAHp>)sSWvZ?dTLO@OEZt0pr(bp8n@Vlmi5zE{G@Qmg}Pw++_0Fr^`T6Nz8 zL4$%KreEGtejM>uEf!ZrceS9wGPytTqkv~k7j*-A!h#5(u;m~!T}agFF&S{cWopxx zQTo&|pP{H64|g#CkRTLX zK->&ijZCtOi)jIeLtSMG@sS-mJk5<*AK;SvuHSjtSe}KTNdT?rQZE$xfbOyx2z05o z60{exZ6W2BWQ7n2tt1c%zja37LGh&Thd>g8$(erNN zi6G*i2=usHXgyw+lU=D2KvEg)k;ebxK%^XgJ_B3M{^G}<>4!#_G-40XlI$eTc(xSs z#!7v$5jX+qG)}sU9Ng7~F5N5}fz%@TZ~-9=GrpJzV?K?7=|vk;q%cUGnnWfZg-S++B&}ho26^o~u8WGt(PUO>ug&Zb1ja-> z=n+niJ_!Rq?R+I{yNLUMguPsb&T0RQk{UQW2Qyf&ktk}*T$2PrWDf#Fa9JOOd^C>9YQR;KMXVo{FR7Y=aS`L$kc< z+D^tJ8L+=*Qh#(Z7`4>Cty?h5TOJ`)@#Bncp70_9%Xeb2aJ|Xjo*jzZ>yPW2Rh+O#D>s>_9 z!1caQRYp2xl)*q*h6ZAG0a(!njkHasc*~#UNW?=_gVz zLISOlYf{tKquY=WYGcI(v9Bo5gcAxpt&6fpxf@GRZ;j0!rFm)6eOv}9%FOprp5qD1 zX>`Z*uNIjrEYF%05F~WT%10D(MBOYd=Hx)ugth#%l@`dA!W=n0GAhV(D!uajV zqBF<#U{kGKYzU-pM9=b{NhwiM5)+rNrfKaDXlvAhsMt)*#;j!LKP-K~7 z`v&Lnx7WXms@S4&3x0t~IL#62UG~t%A!#FXw3R5%)dXg5*#0R3+ED3$lY%j|bdpDX-1o<%hG2+2Ez)zMf0Z z&8YW+mba_6&&pLh7Z;-5nv9tUuWcs)N&zMR20Qe7>|+At^7-b-Tava7HbdF3J!kDz zy{}c#0Bm~F>$^OmN$(OpV556NnC1OsRy;o!m>36kq5u-3FPx`taq1p%E2G%k76Qu+ zOc}@#od=5?!Oe=|&z88UKFh#kXzsZ6=vCYU0_P#&_~zvk;?G)iLOUAp1Tf+NSK!?q zwvx8{)IpanoMEvR4Oa4HLTuFSZqcb$sIg`9 zv4o0;1^TCzBI-PrL0F%<2V+#I2ht}ItZlhrw1DC4;v!}hM1w*8l6ThH3*eu2$H2cZ4F=P^AuGJUp|%R2SXGsY6|Cz?A@nfV}8 z;vi+^MU`0rKJ@pZ?os$3A?gE{Qyc^c06=>$2!Oqb>%Mg4CMZDJXu; zc>ym0Tl)q2EYXe`m@M^VjBa9~IvP^(CS~ks^H8qIxgH$ zjebG>vhj=HDah*x$EVSXiaEn45YnAJ9L|<`K#^3 z3&W!Xp?T#5w$WL)d$hl3gjlIQ!|qlpae&;NL5^m8qV@^?BY>X_ABo_EA%Yy_4Pi3p zgW5Z$#^3?+pwOMcXA{`0t$7(cLwb`*7yQM+IfLD90x5|QQjH-2I~$w$8(Rt!T1sj zykGcWuaMi`+AeJEqQ6sNd#g~ec6QwNH}i$seS<(PTH`rRqkFh<(x1mQT^Nn$XVdX3 z+}CkxcCm8*zKL%dZTrBn_n(=Ym;rZI!Njh6hCkXUjU|{vnTxuzMb~$=E6VogLjntEi&vXb` zAMEVyZ0~Jan}yx&{HC?FliRhn+%KvpiyG+<<7{ zpoBE;-?l{?AciK@lzu?$aQvWmKJ3lzoAi#!@6bX}Bpf{~m|t*jm5m=1U!yHxc#5f) zsB^`5LWf^q8nI+Ni+TmfX;J67l8L?kAaA~ZXuf}e7QXm*6R$2#CKu?{^(FDn{Bq=e z3AOl9&AN}zdei>dmxf!r+vfYHn;55qV_Z%~AZgS#Rt8F=X7tCCHxA)01ZH|{iJvVympg#g zfGSBXL-4UDA7Xp}LI)W`0Kw@^r>6gsmrZn)LP+@J!FE?gR|_4f2%U3L82?<3@2g@S7!T$61Xmj0kmK99()c+!{x4i<{Bt>e=*x!j?_&HZ zj6aR>SLFCZk1;=tBE~+(u^hjM>n~ya4#q#j_}6M;yu$T0#?NB>WsF~yV{20b>$?^NR8ecJt@5T7nF+Rk|VH{u_VmKH-jPVNNHO8;Y z@w>SG9>({y#rOnQ8h;YwCoul39KVGtjqmN?{uuY zFdoVAAL2^m7cl-;j9w6gg(JzYev%duTjq$5;{64P6|AsRx$H%zR_$tQNFn;r|iSY-28F0n;emS;q-Nxu+ z3^0CKj(>aUCOCvg37j1T|17(2MqcqYdiTxon;j(>_PjgS9#F`nQ` z$FJb}s~EqH@g0os`y}wy0T^V%$nIF>s~U?+GXtjMmWpA#<~afo1O5~6U&8*Mjx+zi!T$yPKe7MAZ@akgzmWak1!w-h#lQU1TohiK z<4hM9)x}U=+0n=)Pu15wYDK2W9rbl*KY~Ui7dCPhfFZ9Tcxsj4Nw;nm*uD~NV zJu>>fii;#Y^3yn^B$#H+^rVwDk9i~mXuG-U{*%|axu}78&09=(spKA}u?D|xSbPRp*LP=7xb%3es1T-Sx|b<;HS zf|VBUu7}TVr@N@Jh0U-1QB|aAKE_#7GZ)bV+<$X*QGcfy8GsD^i<*OQ){On4<3t_A z>jWaTVlh2*=4;bM4KHpEV?qX-j-K(>8<6)YVa`OdW^S{N*O?_(Ni%;C)5=*#w-BT) z5v9y_xX{e0y#2~3ji&Bqf~H27(Icnp=(+f^<{dtbk!_7HXTD}a-STG5P~}qnPl#HkduFDb7PVDB=djF* zX5M=^s<(vQeA6=qw>PyqW>Z{f`aNURboAtXqpq<>^y;jjz|cgJs#?!nfeW=reRCfZ z%$vM>AR3rS*>SNzG&D2iz(s5$GZAOa9L}S@MC>0UaOas5&wh}#YHGE{W;l}qWH$yk zF>@e6Gdu98R&Qz!=kpHD%pF$p{9JsvBR3x=HrFHby~fBUw9q4$R8sNavh^T`haOq7 z8QPztrTK^{rkTV7xm)RxyBla2z1C(4rkJ;_^a5@4$n({aKc=nuejcVz=20!$&Rk?& zv{m%b_Scyqy?GWXYVUMb=H_vID!o{rzUV*x+ zYaLXTKEQ0o6n&MlzB2|x_0DE?x3c(jF$Y^0eu?HJ>%zaQx!k%4=w@!SE&{vjuFYDL z%zL__>}Fl-B0SiH-58G|dYk>M zi^x9aC|;N|a8$>sea-c})ztL9c+Gz1RqNps9@T82s$YnymgRL39eEPNG&M)Krsj;m z7(`+MMQLhMW=+i#t*LqARKF~GWbW@lHabR+Ea1m?j>(}%Ua5`O$kJaAt2PaDEoy*n z{7?%iW`FflG0^k|d3B0--z;F&GhKXOu4PhWDRVDV%ojXrn&Eo%4aY6191|nUvr)0J zdgON=tnfo~N(Gz)<+_OQ&6t z5XoKi@HS2G(wRpIJ#gI+*54jEHIo{+W`1TJ@3HJoWwbD>R>9R|$qvk!yuB>O2;Hy3 zSWLCBvEmPWYa^bb-Q$G$C9ljo%$-@dn5M66 zquGnkHT{hG{XW$4Se+=$Q_L*6ka?9E^t<|y?MU5aek?TOh!NKQJnpu7;7B^wUfg=q&$`R%tT#poj zfD5|I%AI^#9jj1xnOBYZkB{e54~s(e(@f7cmSvMHYUjV>)1R#O8jIzoyHxs>$8YcQ z?FwS@=q{BnGo|AhmMw0j-)+xQUE49w1gj^j`7%%JW2Vo-y3<`2J!9D(;chtQ$NJS> z^5$cErY&I3k^6c5;9DNk&18F)e97Z2$OO8}Bb9G4{}SocfG~!4oXR)-QYTHX5xn+u z<@H956uLcRo+}ztW@C1Neq&Oo9ZU*8&0+eNE0|t%G*ixO;&tytUYE&DY89Td_7@g~ zG74#aV%0m^8kYuE519R#$GZuiW`l@=RvjRn7tfe}rvl%x$u_2Jv*@(Ng4SI=ctHAl ze`B7J&G|H2TV6NY%Jfs;v2B$%^SYoQg{imsE+5tA_2$Q<&~qwl^u5CCwHcV-tjOzW zR)7B5k1gpui77)Sv()~3q;{z>YpFPo*W-$^-n`b#{}ck6?sC)`<<(dC^ms*N@mqJWJug+#l`B|j7+nVPUtkv4I zAZec1ZoO{=>2$DG_xDzwSJtfi@habF7{o{2WqMs+x7^K~+1oLt>qfTixiz1`BXK=; z25VgWmNehGa>j;jwd%FjMUN!b_$Y=HzP8#KyNMJ+t=?#At?sJ9%>RwWVcbfSW;vkSyw^Gu$VJ7c+6_`!$zz33U?yqiQkgigVAhx(T6N$3btW@#iOP` zfYM#cc{2Uep3E6>mruPqFn_r9);~b7z=&Auw5M;n>4*y2|cpdINh3-hq-lBuNW4M|gX@v+v_Kx+-gH)6}XI95{@H(&|I z&$}E~MQl?I$LvkG4q=4=-Q+dtg(F8~zb&|rFAH5rPx$E#+LCoR*KW36eEY;XT*2AH zxx#YfA-3eq${Cb*E!R__uLk3~XajP-Vi|nU#^T@BK%SCoSySn@mvJojYd_Rov6(O( z^<`NXhum>R$jK8{@_LlGeGeH&i|OPaW5iMp!C29VImU@wkUaG9;u=pA#DLx)Hc?zh z0b`zMIS~c63*$Bl><~|G;Ivch=Ze@R+LA5q7FFYL+9NiSb?+7J2I90&%<6`6`^7Y# z4u~gfa5^Y@T*dny5)XOznP@|fd06BP1F<7wH)$Rf^`b!RwD=O-#rRf?-j4z!6_s;n zl(M}bUVOB2=miqTD9iRD=UAl$)IEKi@+p_zc;%~_cs4=#f~Sef%7v)mW2GlMdy;Zy zJgS|n)ZT?|ouZuJ-6zUE5}T@IZL7H$i9`c>5iG~m?5vCLA_0xA&QI9b|-j{ z(QYMXmC=6chlY#MVGQ(Wqhnbb06Nvf8a6s-#>g98aswNTu4R|tx?A2M$kRPnB^=*7 zdJ!o-=0lV*dQRSe`g+a7yBNJM0(Fc&lh6*M?^bYOqn{h(ZlixatOsL2k0>`6W8k>X z$n*XJtUcp{dB7^;!{Ovj!-N+Z{{-Q?0_CQQqI}62qAYOLm?^Zzcs5J)!yGVXi+c_6 zY>w!S!8hg#Z-T@;@zDX4n=e*yLN5?i*qaN5S1H^r5_f@{#$qv&9lk^?2O1blMF0VG znP>_5##k;6aqfI7rh$7HD@4^>7|WI76gZQyN{k?*TP-I1if3y?anf8X62XOx9gcE4 z9p!d8%I$WP+v6y=*D8m}wwN>Ngvdf%JuAu*lrM_9n5)KZ$2;6{yu)3`JKVG0LH|j3 zk_o&Ke#D8vN}ro(%STEwacY!OraWF{w8F8(d?Za{titide6%Y1SXo&Kt)8S>;h6GsP1Jr;c~K0tUsl%d zKm#8rS%;!u9x7jXA@PZluo#{sG;tv7 z0dmK}=PADwxsV@~6@5Xupk@K0U#%Urk*B`Oh25b0EL=CfbPV*Hd`Y>WWj$Zi+^RE~ z&VUluACB$*%hF^ibp&zN(QRNGA6`Z6^OTP$aV=9aQ^;7SWF*FJRyGmB zb}MQt5Id?g#d1aGPh5&;Un?!nA@LjK2_=`O$`r!iYo&VyoPJTdV7XXqW4ihaC4(92 zO7fwZ>LFs&EVUWoVz!#41x|C-)daG6Y9GiARw4KOYmnJv(J<7Lt`4|{?pc`9V)`w_ zkqp}?)n@#*Im%{QI}X=g0Yp^qgOoUYmO?JGsQ45n!ba_<%$9HjW(+Ge^OeOYm!}&U z?}q`Lub&7@*qkaX8FIGpVn@so#mML9io_N;%@e(0$^ld8bq$3V3N;pOS|oZJi+WcgIIrii*id`KB-jYy`#vsPsG#Itq6i$JtqOamXo(2g60#7$!T zc2v7rc#!*S5f4rx%XTr6%GVC@9^qxDC{0ynmzcL273~wp33Z=|b(BvJi&CuUs2D(9 z=(q^|8RbrkOO$EPh;AA2>XuSuHWq^$b zI2HlJ3?Qp}I~1Ryti(bD`)E#?e!9|u;`|IHJLP~m$`9=M1xhnMTd1_>vqj2&O8Lu_ z>|9D~m1~q+)+wVQB3r|m_#_#&SEWRj@@>|3UO3Yiun!Ct(RS2wni+s-3*^w*v$9&7AEoAq3zp9D% z$Ty7rm46P8h3}t2dXd}@P_*dx)DMgO)EkX0{)+uw;v)EsUb6BvP$<=d@?YsWl;_Iy zpafrbCxNJ(&NnXKm+h-?&J#6Od_Zng=`7blQ!=#YE`H?S8qb;yoL)` zK+PoTB()k*ORt?f6m;sW1S0Eok8+jNt9Jz{^;c2mYM=+>x?wo4r-!Y$c_Q#fRW?vR5Q?lK0~MUuJXi*~&T3dMSP zqipfFgs>9X363SRPeXdCDO4s)?+QVBne*)DvV{m&<)*N%^7|>^Rw#K8ZLT{C>b><= z(G$rfV-^xP3Jd}jqhPtbNGbUNuS?J6;FNzKs-cxzKNSS3?$%(XmxHBO-<}L?Y%cZz z<%gNp=_At(>ZesEdxZ;li=1bhqlR1usWK(q{szZ*wq;~4)T7kk1!j#$>cRJpRbPDiQ4IfTfZSzw$d zT_ehcaGPZ-L@nz+X+SJT;T{)Sq2zCIU33Gb^(q6#Bc-Yj)#GZdD6Lg5JqqbHLO6SB zUMAzO-52MTzBq52HB+#mv+}VY+?5%a0Th_y_ks_ zdw)r3?*nx{o_@Gv8d3&r9E3cB#Z3xgLqt3|{!nq0Li{lC9h@c*3A)rm(}s)C^(Z?+ z7!;vKiaA`|qeNd$&e38SmE$pDHmCMjG2=4IjT4o)+Q$n&8XR7UYUJvlC`x^tK2tW4 z107bf(dctTapPqDSglJl;8b-gm%|Ko3YF|R>VQu`dYu|c6?eVbX*a6fsb*M>(=jz4 zwejQXaJaAZ6Y9sD&Y!E3xeiaNT{$sMsc~{8R`<>f>P?T+WY%&g#9h7JD=LEh!U(7R zgQ?IC2>cORhIJwF^q6Mt1M<0iFqzBcYJdxR2VA0M67C4BA6jzzga*pEi zE>Z*ffL?6%8N5k}G34W=PI8FLG$PX}SEUrFR;c5L>q;4EZ>Zv05A|2eLs6?{DKI>% zRo=y^uoMU+TqZA~j8*XBMH~zDd5AKFOLFcM*+5aZ=nS&cVn1S`>%~3EHcNzY8I@c> zwp1#KSW$K}(W6`-<%sevSKwITSu>Qac#y5B^nFhpD<8a#W0lTaE>&k!n5>p5BWPAH zL6%l~1ZmcpKub&AC@!XYwYWqYbRg4i_;fgqjn>0!q&LpaoJ~W>%$ohIqn74AY)Oj_ zS3sxLE6T^Mr~ZocHg%{yw{1p?bcbDwY(|!M9z-Xjh^ zlry~L8(0R7j-x3^^{4?ahcW2$Ik;XYa?rTDRm_7jX7yuY8IEH1;aI}f{a6vk8FNaB zqRf6t=|x%iin5HX?W%HuTxyM4qcK{vP7Pm<(|+|Te5F>|$T<`<@|EK;e`Yf7g8qE_ z!t-eZF1m#bVx*`EB^8TxsI%0t_9YB}CfQ+9)po{p9vV+QAx`8n-$t|O;|hT9j=%5?YTwElR!N0}_$5OM-fU)o^O zKjHgiILEn}@gV^*(@fUvwU;mNeS(sw&u_G>`3|BsTE&83aY}#YoJ zK6=S~5`vmsm(arE){*?sT_>P;{8AdnbfakV_FTYTO+SuYFN697$BaEVTA3bJLLRTK zTsz(cmhv5zbME`DVc+^)CY$r`OKBzGct=nUTmlP>9<-JAo8ZEjNqR^m+Yt7K>oKAf zb)3k_9L=ckL7mNv`$wFv74 zMpA`JUQ4Jec!h#lp_*K;g}0Mo75RaqQZx(OTx=C*K=F)RXC-zJQcE7?G%j_7&{cX> z1ag)UY;DtfQ zB{8VR+GQwP^E$)~y;f2fa@MZb0mnKkYT{UT8yR)IbexyMI&0S~q5mZCcSb-?jt$uwC!$ICgyc z0@ONr(*)4v7~i*>Cwjx0Rl$P1CEu(44yJEJe?)L8vkR((Q7$7O-pb{FaRb&;)Dga8 z-qsXuO7*5~xLjw}UMZ4Xy4tUthqX?SC)MkQ)vLD{L8NW{BWF>Y$sD7$0ki;gC_u39 zT*n*7?rkWd_Ur;HyH%4sQoN+f^VR?pVy~)0VUXb$QHoc000%HbqdOi6PGvvCW^ci zawdz@l-8z-ooDghGek``W47qd7S9vj)Cm>}PpWE5#FszfZn;?39M4vYC`zVlL_Mn5 z>qRr_2b)AMwsx}^K-RQPeD@QcZ5Ig~svTlKSNTriNp`VEd@M!RG9P`4^s=RhYUQf2 zO_erK_pjW9;&+vo6eyZ~;tul7-{eEiHuov8wSAif$M$=uBX(GTHDrzLIgy>9bY6T; zk?%`!i;VAvuq1+;!YL9w6t%fBpNev1iG!8T7l76jr5de%GnL}^@NAaSns>96tH3d6 zzEOnpgUU3{_Cv~zK%72PRCJG3Z*WtJp`q(Jdg0eNn59iVvntmqkMyd==%uMXfCE?a1gyGx?Fk%{x|=Ds)~`=IZn(83j*ZW87B>~s z@U;12nu=P6(Zkt#K3meZWM8DWZ$O2= zS%>k|`z@#RG2l6c@AqqxgMFBtQuAPOhvPC-?4y|dkvK$xBgA4V0V72yr}b#Dg}VA! zF&~x#h?}EJBFjYakhXwHBK;-goF+^fR%eLCT-URNANA8Y;xhU1JP}0gYJnKd`M5}| zsf%ith{fda%fxq6ar#s|DumN2@q#M)8j)`t?$(JWT;v->FsH&MQ6MLXZ4pPQZfq0L zw7u*U`N>&!i$&B5_lf{on)ZtjcKtyS$MN}0q$kiG5sxX{922Lw_)mzz!k2E|8{*0>)OSk^=H$8~ zc6*ZU~i!l9I9Ot@uDt?}T0?$MTa_<)+CxxCL#IOLIUW$Cw3Vsq( zsf_$0HWD6x6{~5Q`b~_aXgx$}M2tJDpe??PFK>i+)O2i<32|zO^J4%a+@8wK&iq$TdbVp@Gn(lgq(0nysy~$UZsQL^; zlP0O5Wsx{Vom(9=r>Yl-Y}3_a6lG?r<+y@ptI30qWv<%kC<@G1BiSzt)sC}~xL6Hb ziMyq0X@TO))skegE7Tqdpt4H6O0j>9`a@kbVx2mZz_USZ`xXT@sp;Wl(zmF~IBB=3 zV`$acq2^-acc~vyeA%lu<3!o7mL_{Vs9qv>|4c3M2B)KHcD~VZbvJWQ0KjU#k7droUFt6M`?Oz33UZr0N$??uvScw!LfW9g40u)c5+~*)4Tz zCp^2OF5twxr(PJ0EDuyay7InNcU?m5kJa;gQQ)b%$w1-@buT5RAJp0;{Yri2ivmBZ zB|GEUFKR=|e!r?4X(k-373B;WrkP~F!?j72^hat#sB4ebmJ&zCY3ryQOw_*f$7zzb ziZ3=pGb|sCcAG-w94$T7|M}Vp>ir9~EtFA~XtP;hspb;{VxMYz*p?OAcA9@zYb)3V zYqg#1!Sz~w!skY<6(!fr+Fq)5TeVGu=j~c~3Zpx&t!4yts>JPZoX6ws1!RG46IT;q{<>`xAq(@wYxayFxY_kR;`A2R z6O^X5x_&^(|CDPo#0)E&|FyA5kM-pUCnRGWMGT>Rgh6MH2?zG&rJx?XF{iajM-7y`N!p?2!9qH=9D!T{YNBer*r4Zk%F&$g| zPLM)>f7oa(ih)b^BX{^9%0W?$DAdQ)9}SA}VYN_mj;yrYCw)n7pYJ7SQgR&UTH!)a zlJ(-VxD-lN=IE4N%{&!qlT%jtglb3aqqGb)zP1!8&2w`ew0cFgwB4^%hB`Lj-0QNA z6uLhnOYGU2+_KLAa{B%+h;{FOLzoyWyeStC6IUr0Y4X!dBjrw`G3&+@D{{V=9v7{T$&_=rw1uX6SjFcO+yhp{AUeI9dU2VXaG zUcq}Cc?R6Yb>0G{F~-RkAj}yB8&Ux&+8`d~i=$QO%Xpd!%NXqG@_yLHW>oxw;8FEF zS5=Ls2XS57tv#;meL&H(VO#QnCU-wXdh>)Blx?*H^Tv9=$6_G7`}+5mU~HxMT>Bbp z#h-$*bsykDbw1FCkP!6bW4v{6C(eTqU#f?ZUCC-<&yi~UapGaV6~T7DX3j-+5;vew~7c#YTLy0709w(9HEtEhp0uxai=&#y?B>sNy%cjcs>s~ z_lpkL!hkI&oj73+ijBi?IwIDR{TvnBD0m$c^NBFW#St$&J0X7MWcpmZq6y@*cz-=k zXT)`>ly)va-q5A+uV{7GQdB0p_29_Q##?45`G)_(+Z4tm55jzh$%oj45@ zLBsHTn0PuAr;o&>=4k#1;oTS+M~k;yYm-G$?jM*V#&XQ&iu3z%nkOC*`Im?w4%Sl9 zn=5gJ2&9`}wQ!@6WsP`3F=?$BL-BaMa3!%#qR?Ix*esT_iCaWR3r<9B%4$0Ve}#x% zYeCk(ThyhAXs_VU(clr?#oG6a3Yh5VwQE${kBVS#H20W@^F#6D;>R1v`MFpK!PXl8 z+PAs#>daupb^CdsY4v7|M)77%p$1zy616$F&t7hWZAyq#D8Xba$4zdDT{wet{)R1= zR^B|m&G8<2(^1l`Q!)nB>h|Xhs`r>q!}{a>(Pa$=umc(<*z&DK-OXl|axb&JmI-j*-9Mp`8j09v1;fvZg>VtQMJ6x$spXtaOB?S37e6Pr4o zrHP|c8}gvew>Sm6TqT-zeM}=yx1W0;rF*l=s#<3owI5Y6&WTY$;naCzri98re z>)o=hqcV`KBYAnQ)-~-wN8$?g zYie67)j7~Ot%gN5;!dT+P1HcLj{?WGQnS6GJw5TkCcF8O=egM_VKgP2ti!n6^G&1A zH-A&A9tDb$l_dM21FX`S`hA1;2TrBF6%j;zIl2`mN8GQp%EYfFu4m87C7V>9l4aS8 zM2d=jWXP2YZbHt=`#D(E0{M2;uQkH4ZW97#Jr^>d=DoStTC}4Twe7j7$ltSAfDN_& zv%kUMg;`dGaHmlrZamrUUNJob#^{)M1f9xiY1vrn>+fwQL=CLZmL3$}js)2;!JA;^ zG_Hp(gnVOV-K#yK7PC)V$idmK72rZXpgrVk9MooTf_$dkW+M-4BXi+&M5|1h|FkxN z;?r3z$9-h^Qk%x5bV)lKgu9#CVhT48wKAoVbA-O*B5IhXXQRP>zMkxb(;EE{O%Ut# z1e!}W>9I6XZPt$uM!BteVQxy=skfn3WUs!T!*EdVPy6FxePA8j9oH{W;60^3#*bt4 zv-*_JaXPP;rTP7`ev9qAsz0TecUyl<3)EfRj|}#a-gr3@pXiHd82MiBNXYw9&&$5~ zNf#XTAx0KXfzd`SDnVn6rWDi18C|HkFEvKZ!b`6;8q*f>xp9wKo*Km}q4t?(Ocy*` zZ7!y|w8OkO5yTFeo5_Wao4F~!d|`q*1W@zBTXexA(}P*QH!lzvUz## zjC6Hhg}aYk$54%&?dnnhG?%+hqBOF?HGm+o%C&1VWZB~SJ>9LJx!zceawlBNQh&VY zswLyub=L&iFrK^K?1_qAxvt`}9__Y)hMI|PCCI`SyM0fYaE)81bGZA=tVZQgMS`Ed2_PEJ?kYm$ToPjKp(oLX~WpO&U zMQG=WbjxYD*^}-m&G$#sdCbK-TuZlrYSx2v7iXZ{t8_K5q1<54pbPF+rEf~LbxZpBT-l$cUq}!-mA)u<{9I4}J*B9J=}(fo{gi$<9gc6)mwJV} z@fi~6dYF=-I?YW>GkiOg#4_|EknG8jMCtHQhLSfy^P3D$a)Q{+3~M@~@jqpl#Hlef z#oRl%o9u%0BaW?%Yt24&Ye7iMchKhK0IAc^W5t~p6&Dcims%?Uh~4xq;I?q zaT#9q3VV#Z=U!iOpUy8{<^sI*WbZk%P+*Stu>Cl#@=h3zEStSQrYGiz_rR9r%?|i{^XNPNpy(sQZm3PzFVo^%=O)|AB|t_o4pa9ZS-A6Pxt}f z_v1nOsIRgBG%xx#YJt1!zNP6QeeN4WZ}=63mT*NXa4!mf%FCcjDaX{%l`%~-9P(3raf#}z!X|uCI?JA4l1()W=uxT zH38|aqTIHC^ORwa1T1@q)5(BL^jTdFI877Q&4Bq^arb?|D5~B+2kie2cVh$RQ`wvp zD4HV6(!j4aqDkul4|C7dk-)%~IGqh_K_%^a;2Sdk2Z1YSR(T!xwhC(aDCj8xWlGR= zZjPE6G>BHGPlJBGiqqPl_0v#bf6&|RXyB2cw-nPZ1bt2E^jeTF_ust;+Vm+%zX`en zrAwa@9P5w7xxv?IgIXPYJpvVN2|h<#^wHoK)Ed4Bo7^kn`BR%!AtmVh*cYN!#_4!SJMMD35t741@oz&`1%TMk zAxXPHWoT$pVVph*{hB)PywEBX71x9o;13@*g?>n-=V0gsItq`4E}~#}DfIIOBo#xJYxuIZi_+1Kw6T^oSZ>NSIi^ARV@B`G>*M!%Hw4v_{FT4zQhr{y; z++7SGMTzxxc$pd~@H#wCU)1nX#C-$ArbH|sg5I4I(T~4yS{u=57P4%Qc%Oc-qY>vQ zPn?SQlDjpoMAW2>=2pZ)8n=Il7(*HHbwrGT#Bq^vkMZu4BO?l-Ez2UO((txEGA|8i zM$KYJ%o3kvT$8(eS9Mw4i(vH8}*NXGKkahG#3Hy!zwW zx~Q+A_UZ?shVQ}YXw-BHu@|Gh7=aqDM`c=$YQK+qLp}P}sIpXNKFQpb;^e%{WvCXe z$-J=~PFpj7LyhNH=JwR$&Sf4#gT&3u-;@E(`sbViSR1RnkJI+pZ)giV8tYmQ&(6lqX@_#RVoxqWTOP;$K>72R z*jy7qWk{BNRKh;al9^imv@B82QSQ?$Cuu8No5d#)S@vg{u^z>bWVzcE&n{)z{}zdN zvc%FZ@=KPg)Gmj|ozITbCvjRCB+iW+PAmGlxY{uwy(6wDE!W550{uYcbllKxcy=}J z{9RDF9rq&*DL=-&AcXNsZNoOfq0>f%`U1hX}P?m-saZD2Wn-?I}g=I zpbNYA10N(lQqNJJd90p30OC*7ev~nus&(0M&(#)mq5Y&@pzb_UTT%e0S=z?@wjOg> z8BN?cs+I#BbjYePr3w}oyd*s&3~a1 z)8gt?q_=!N6ScMqp&zYv1;R(0Xv*nrzif__b}p1@+dn>yJROeFD%Y{MZmWsYw2pkI z4W!WTX2nomB22ck0%B>O1%vNK)ZqcCUyN2Ra zXknUoV-u*=VbUC;jp`Z=tZTPt#7VOsf;PSN)~Tq#MRW~^3%(&0jF4=m*lGUKRZZd6J@baf<{ z)U_JV0%LaEC&FB#k5Js8MmiF5TmiwLjxi`#Q-ua$rD}tyHYAn?G&$~9(&(S=86Ae6 zeW>i07y#kLdgj%3KT>@?s4Pto&!^jy%R^`9#kYoG(NR%8IuA2+Cilv;{2LVUK14#k zH@LSZpcSWC&<0Mb;MRnZt!h2YKS$AVT*gQ?*3 zcG__ch;JvL#RmnW(%`3UzGu*Nr-TNRq9e0UXAsTbv4-8Zy}!ML4EhxL?MgRJN>G_j~(G`P&m9HSaq{t)d{BQRbwa^ z*NCGjxpn|89rd@#F$~K~RV|{Sg<)rL^+n8K|-P zHgfS=i)quT+mlX=2DxCo*1PnbjPxO*G7Lf%fx>&{z!G2VHl_072O$$0<$s`Ys=`7H zsZsGJfuT|scr}cw_32xxnG8kNX#OMfw0MN0(ef7aw7P(!(QaA=bX)rmplBE!wvs(` zJPFf?(Pay--z$PwHF{@fllwG+3~ls%$;S3u0I)Fz4x#1Y{ld?1Jy;aynjRvCLbo-B ziWB4t!$dh~ZN>=ka~$4hq=>;_;s66{Q9Nf&%7D2dmf$+~Q4V_20&?th?fsG|zV%=Bjm=DauCmqur_UuMn$lCGE3H#ehq0FR%-?WPMlT|dj2X#Y7O{IN zyk$9%1tsGy(MlZu9oU;SUn9=b;}dzAdo!XAP#DO(hATXJGI2BZ72h-=KM^_WR+dbB z^c^VXT1!5hbf02N{sNJpp8S+s$ONW{$8fA(pQ2t3Uv3Gi89;+ttzNXU)Gkaxtj?vK$Y0lWIr7x= z;~3Sy5BWfExQ+5&qbr1q<`+r1#YR$Y`HGZVeNW1*Ym#z@TSTgk@53i&y?^XeK(-!N zn(q_;wvWxgaxNvy&NbRV-lQdj|NQkhHw&fDhGVhm`~^a(+1#5^C1Ybetv8b_p+&-c zj6$bOJyB1e%zT5scj&3=f8jEo4)CT+`TZ~IqSOcbrsL^{-$CNQcBMYBvRRD@wyeXU zLA1GtIc>y&1F(ekpafdxLc3Fh2|LDZHsQqya1lS#T@^Kx5<&D4%6l=L$)ysKV7fK3 zPXH_#IeI}|Gja}rCTG8SU)nIUFAms{LgF1KvyX;sM;MC{AEjW19j zVkuIRZ_=k#5RxA{;tcHI7A^1a69C`vE!5T{GEm-&?2B%*p2dH}ZcR+2NSXZ}ms*bT zt#HiQBRx7KPib_Tl`r-V-Q_LXV_2>GVmmnG#l5Jlm&n6KTXF$lOE2Ayl*(Kppp~6R znY`SPGPte~#5PqtM5wCt3sI!+B7ltS+N4{P( zl^5$wt+03?HT~Lk=+dc^9`cS}H~$vUu6LF-)PGC&OoP?4L8Z|t?xpVlt-U#8#88b#)#r_qm9{(RNpr_*Ar!du_vyNl$OtnaF zTAj*PIEvb<)~7I9r!Mm}%t~u%qi-J}XXEegp~fcnu`AK4!DkKGL6ILDqH~JAI)&Pc zwZS~Ko;?$DY3=zz+{ePQQnFv>Ow92y&6zo`ke%e(L$xFKM_j~7W2vF#xl7$F?nKMs?kc8(->GUox zcCb5`O`_~zcisW2kEaZCm)W$#+(qklm^;K^a)h}v^~h-KP*&p*Ey)q)E{hCv7iWjL zOE1IR#mg{v2{O!G*3@C{vZ-d`?_ut;%P@D&d})QbLlh`Sm^%}Jzw9t~stj|N(++c& zMTWV{CBxh~X*$B(r@tlWmPJXotBglxCQ_!tV@oSH!f#+!eLM+!d2y?uy%C?n>gVjjS<#qE<~{=1#u9_X@PIhB(^^{@mYS>}!YNi$Du9ggQS36ahJH&Hzgt@DeGR$3F8Ro8D z$}o5JWth7LDZ|_~lwt1D$uM_@9p+ARhPl&an7c+Y%w1zU%$@Apw8GrE%P@DYGR$3; z-^1K_$S`;L%rPY}SZc0xX@$A-Z6d?eHMPUkd3woscNt{7yNoj4U8XeR-KpuD$+&jj zGOk^78P_gY#zwm?;w*+f{Zg?S|F1sLB{wUWE2T9*=>-Cksy;pf{c@< z17vch2{O4P$mF&`#-<}dCMgY&$&(hyIka(Z-R^rs`@9i`u`R91pWzkvUO4Yx=QG2{CA-y zzzH?s|1s3${ZF7qE}s7gYLrtkPE1i%m&{Ue308ev<+L)T?4nEAMM&AjNJDn9r?H9M%3Vc6N^mO77(B#J|hk4T)!>na&`6Q#Q z1P7J6Sj*=J+7`{;4nmbtnBu3|w7#)}f zM%%)Cs#rXTlw+jrO;b;)j>Hb+&egIR2Lt4W(Y!Xa z|Cu^?p@b7t{-_SZj|HoY(}8)9QD1Fh;6_u~Hp$lj>j=sSbupbudJ# zgK<(F{5SnywmJxn(^4feXO}4Abh|iEBuAPkl2f8cE*nMMQ>ufx(?F4=v`{2ZN)*XU zbugc;4oaF*9n7D$I+#wXgC42X!7!-~7Le*-xKsy|r8-zps)L23I#@WBI#@)igGHq} z=qc5~Vp1K9km_K1sSXyG>R^eK>R?HyIv5OfuvAKQ&|k_YrKLJpMyi8lr8<~V$|um` z9Oi0wsScL6<&z9j9jqY54dl7r#jf+uiS-pVNIQXOn&tAowor4HJ)0=iq+>Y(hj;Fc-X!B)09*g7qB5ZayNt5|JQse@h; zy4$5x2ir?^utQ39u%lE5JEc?yJ4eo$L7^4U&fRh|>WaWe-D>ocjNpNK4=?!OAAJwn#pPgCo zhdDmk)K5CI`b%e4KRB}nNN3hSr!(t)+nJT;Z$Qci(wQYc*(3+`-}z+IP|KTz7%)Qh z{fO7pSkBgUq6>CO#7bjh$R9KoSo=JoW2^CTk|V@Rj-W}7kRUmNA~lw*Hb+pU#*$5H zEQwNM$(~wc$)TD#f7e)YNfzSFmlg}bhY20KB=AB~W6`C?l4NTviqu&0NUU+vbYM;1 zG_fY1#G3pz*4T8U#!?^+tVvD_YYL{snnHijSl|P6ds3e+;m=WP2rSwpUWJy;3&YE3Jw$swgYjUb%O%z4DUnRdBMsimIQp3sYz;cJn3M ztCX7URZh+Js@QC=YD%_OO|re}HruQ5F1Baa3bt3%W_z+5gKMQ^d$n!0S0^pDhfNO- zwg(4P3I~=`W2v8#?KO~WuVG5I*GRIx#wpoe6Up}ej>ghdIdsvfounMqIi(!c#VJQc$z2j%QwmeT zf5r#+{2lnvP2xj$i4Wa?5AR8Q=;6eNo;E%d{2TZHW4_~)e!c9?4s!O#_qI1X^!e+} z4r*p>KX53j_%va*zN%k8353xE!u|ll0RX~**xB(u!0-cr;fDajLHHD4%3TslEDZVf zb_m$NoUSXcKcGppM3WeaCa`un_S`w`Us)uYIPG6@&z;l$^>6ANYS7=?b0;L4{CoB< zr;z)<_OBe+G^zb#d+wx-#uGkKd|LK@?O!QAE$iHK_jl0bKeK;1T`m8C{mZ#WEJzwE zyrrSSx#tdB?P3n$!>0cKq5aE88Y-N7@j|4bA~@AvJU^+e`=-{`L#4Lv+=~|`we|nf zUOa!PtvmPPg-dNcKx*s%dM{qkySGDd=bf~F<%GhL%T`$aTXx?4AFzK-=<382Xedrh ziBf%>+Zm+&3O^jRzhSIMLzwd$##$PNFg3l?;AO~pd;AQ?d z7`!CSe_`-)lS{}o^%4q}OUP;P3Xx0bzhv-omrKZL@Cubn$U`one{JvzlY&}GtCw#& zThQ_UJLWIA@Eku0aGJl&)aEbG|IqxE{&(Fq!(W@f%>S3nUv^`q9{4|G{<3TRgZWE# z+CO9da_)xs$IV|}w)rcg)BKg`Z<@cHE~-C#{rzv6zoMNkDtx3ICa@xZbf)|fOlbW| zv5otmaHjkn%h#W_am(@i&zvbM5zgax1tsPW<}Ua*9L^L&Vu&g+1kmA-QS>x0MDDGN zm8x?V=}d`}nlKoDX&TTn#!F2&Tw+U@#FhlKxRxETM3h zI4q&wX`xAFX=kir+Zl68G^uLa8LOqVGp4b(PDrcbf1@+S`HCs5igsiFhtb5Y^$%zw zJMEuA6W@Q@nSxDlj&1S(Hk!Z<WdukpgRKxs33 z-)S@Z;NSRx(1+4yHpsS_$+3+eENr9M5b@VmGq@WZ9u)84PDs&Ims}E3qE(+b2`O$8 zQk?#IxaA#?f-T*Dwe7<(@KVS4O zwrfjgNUH7HUQ%7jlv-WMDj}t~gp_O&Qc6fjDJdbvM?wnB7w(AAqnYO|JP#@*A*Hm0 z6kiD`WhA5|N=WgOkWyAcO1YGfqB|ia4vA@WDZCH zuXjL-bGvpG8&dqGf>KpNigQrYf)qtUO2F@s66jP=s!2$xo_f1>4I5Hw{!2(vC8X4{ z9aXiZqpFVWsH&@qda9@|9aRn9<)~^X9aW8-j;hA0pYs({KuW6Z+D%eBs+y*DR5i05 zRn1d6s#-`#RZH7Z)#_c2s^7P3w@$rXyG=?*Ra@Ip)h;bZ6%76kM-}|;DI8TH5>kRw zI;uKIM^(p^j;c=5QPnx6qpFK^R7FWh3AYuLP^W?tCKZ&fY5M0QB&6h&kn)G^+L01c z3Q3PtR9cXdj32=}{PW#ZzwXj4k%J~Ln7VSn)Rhxhk_%Xp8(5MAEXmUsc+w9a?~r%` zKZA`Y*xc&y!3>aiGEm~l0N}~{5>GyG;>m|Lo)rEYKA1rgPXHfNDu7!D%8mH(z>&pF zNgVnvKvDAzqgNikvr*$e5{Ooe5^L4r!aVjdwTBJr2%(2RMsN%rqP|YbSVk zx%~+G5S4Tk$E?X4am=ysOB|ENFunMr&u}cYm!G<41`ZD^7=% zz^`yRu2f{^3dzppf6l@FAIEdE3(z6+<>YB1Y9 zPyON;PK(r6q_S9jy~z!4j93)mD(S`ivKizOSAd$8x>aq??-%S*eHfYhn0jD6PG{6} zxKqxlT{?7iQO>JfTJ%FqM78%$JiDr1V{JFouh>7g)t={Zx~Fzv(;uq$*_n^k$NO;l zPF=#5yinh=h9A|DpX2n4dgd@rZ`G{q*df|eR{N2*;5berwS^=-M$5(zrjFO9vcEsp zzF_ewT0g$)G;PZ%oMvioNP3R8i_hk3UaWnQww0%)+FjQ0sWzQMx=QP|4yUzRGAr7k zmF386)-vzGX`8lqJ5D>bQ1l7D(&7;}2<_*j-1o>>SqP+EQjYsr6-+Gg{a- zoX%-w*rcztJ$!aS%eo4u%i3MuUDHOhdv0orI8W|qrw`(EUpvY-`c~V(UV5T6=ZE{A zX~S9H_u8)<;FnqsHvTuQ9KZK4RG-Q&AFhXREJx{YIHAVsXV_U2^rh_2NxH%}`b6Ks za-=+A+&iV+H5#4C4#ZoNZ*}0L(M)vIiF$0W7e@c*E{lY2;&n zt}&W0%X*_Hr^Y5D6Nzm#hO_t%qa+)@+qlP9*=Lkli_<}4B5OEoOkjayMoUhx&y9J^ za@t5w(&vn|OuS&Y@pReP%4c_sX>9d9i zoHxc>cF$0A7dvaXIgyinlsTF?$C?{iZi4xcR3@1-*-M|8ZtUdg=E)5>%{5&~Wr6vG z&0TDMO47^B(<^aWVGd&P)n*fG_|2Up{hjM>zU>RwuQ^69T|+qzZ(KXEzTaGHaBzmY zo#03hcYDb08ReF56Ha5@yg3!;x?N=ri`~kz)hpfRkk}fx{cPEKw?pjYEpGMLXWQMX zlFBZ(Go*RIEfY_lxp{GHkGeHw%TBoE<2#&n>&bGL+;VW`TzC6~_1$rM&UyX7tvzSR zW4D%kzh`c)oTfjxd2=28 z1-M|RyHDZ*n(Ka!cMII-aK0>dAHY{x=KhMqzsCL2Nu1WZpXaD-a$m!t zQE&r~g;b2EQMeo$Y7{w#YK@|8vCfTRyVu}Ydb%ljryS{jK*J(a+BMhh2N`sc5;DW75@H)fv{VTLRUde&dYpD~Q9WTUv{X7z=iY7S zPkHeRUWaa&*4}M3eHN($I`?SDNgeRdd$i-F4wxWyz^qaS%$8aQOjOP6sdPZ+9&Kmf z2WKgV4)`|%Kgj*m8E?JOT~wd{Lf{8T^MA2NyFl7z#lNvfJ6Y<0&OO=%r4Cp~>VSo% z4p=0W4)|xYqH~Y7)2#UCJ=*`;tQaX>Rw-?Zz8R#;3fkVkG%`AW!0R+JI(KYKBct;N zyiOydbBNQ@2%Sd8G=ISRCnKYCpX%Q?GFF!wVGUa&tSL3ZTDC^W?b@oSD>cG;@6rhC zOO3FBQzLAs`Z-@Qg+^#MRvH-_rPc@=r`8CY*cxHelp0|(sS!4}HNqC}(g^KZVPtHX zddGIFlp0}cTO(|fmPUw;+76AdT`G;x>9T774{3z320Dz4s;v?J9^gs5TO)*5DwUD( z4?DJDflL)-!#^#JFdr--j?HS3a9MRzi)5xUn98`A=4Nf^%(fzkP2d0FX6?Td4&oo& ztWD)k$-c&kCinqR1{+NxGD_B-NwRh?$=bbBvvwcV^!+Q=?kCNA&QcE6?w_W44;JQ` zuT2*w03SyK}t z%nN*8JkpG=jB|99Zg#@wL$HsOw}mt70V*QUt0D4D^zb%KG&o(N^}uyQ1oE{<_gM0gh_S&#-KoTyvr)PF5#qhME@AePII5F{yV=OP?ZVs3B2M?KfOw^9SiI^d z>oYf2VLKxe%rALij%U`aSN7>RzqjwMlEIKp3@MJRx|q} z(z&K)&nK;hf7sTbJFSNKrPVNtZ8daaL{_r~0*0z}3#7CfE=FRiAP>nBBMRCWQAlD$ zVH+cgsG_JUib;$p{w|CtAu*z)6C+CfVNlb=i1TdeO>A^*ik*p?e$N<%2(0RTqfBay zD63oF@>GkIO9>L?B}i1TL89W{1BpthL85X>kf>s2_!Ld+P&F-(fW_7U64g_IgoiX6 z)<_8wi0HH%-}6%AYo#ZCLq)|F;MMS_H@4HAaaY-mc5s3-Tg*LR9^ zkNr8;Y3*;v7Ip`AxJhf`AFu=aA05~cEUk&y{Qfn5IH{R0tYepwxVB7X{})Cyu(YZ_ z29wQWefPBhzx%2evA&I2()v_=IqM6Vm8~yi*08=>-zrBOVxayz!Dp??^3Fr_TchOg zXRxJ}DTnB}M$NF9sI2ZjgdsPY76sSTTfV`^XpN4e@hu)>(B}w(Zj~G@K3{+u{}jPi z#;Ta1KBy%eSyRTeJs_^|3mAV0ZTqJ{wXDF=C`WS~4RJIiE)DnlU`^DaE&p-@HgYz|WGcQyU|gyVck{ z-57@Z!vKDc>l5*U;h?9AYzXqM&lX<1n)wxHz3+;LgHh2vF{~Ym-xnVI7|~-fmc^fnlKe!#b1{&?#(xn%e1rmTMEf!z zHdxum$l*hjO8nx}NTn8Iq>ooJU|%slPanb1)RUF&h?lHSQC2dn@ie75BM?tlI`D%v zGnDKhC@@F)fjz%KX~t&@mG*qLNZHTu;>(om9GtbvHB35uiGFlrJKA_$Wq$i4=P1U) zFH(b_m?*ZI=9v;>_`TXvC$Sq|FVlz--OE*B`0WaH_?5#-89h-&71w&8SuGDgPE)hg zBS$>=zncG!nU8PO&O;RD-y@Fjm8z8jv6)J7d{aZ8rL^YVY~?BzFJ38%!Qc-n)A(_r zL&^NQ$q)QhW_bExv}TW|$OT)u3=GggEo1rKn&jS#2>%wlzMR?OaVvDJI#!3(RgyvT6S=FozVJa@vAZE-5(WwgsmoRpe0- z|4f-{{gNZ!y9B5FQgABZ6r7S(KW7)F5S;AhOXb=twcu1Rwcu39R;~-Dl$(l3xv8iv zHx+xA++^1Z<+`{nH_2`cE|F4hDrqa%rP7j{N=vz^Oe(nvQC=O8GAQx+*VWk^GAQlp_Y*s3#j1UOXZs?vvAP5Mx)!iQR2`cP{)eW*2UA8Op+@S&>G zhg!>ap~}&UuWfr!>-_bO95u48`FJ%rnzTDUYno82&}t~&WWS@ z7ddeB$jzso&v{JmjdU`=Z}x)$-iOkyy5I)~ip>B8eu_lmx;7-q-9^s_^7Hg|K9{iS*0y1Dz#KorIuQx znY=)7sZGcWi6mi6f}%wylVm~$CNptn5)wt4Dpgc!(V|64Ep64JrIuROqRU#`(w17S z)Vh^b+NBn|Y^6$Fw^FtC|NEVL&fMqDI|-l9e?AP!H}~z_^YVM1^PF?<;p#KiVc-Po z`}7j5-*FK!tC7nHSUp@)z$&9vvcANnc&uskBCXfCHi7jtSEjbsaxny}lJ?))#+5^? zCtu+{f9HA`)}e=BxvV3Y3p2s`C>L+Dp5syt)+u~}zg3Ab5RFt3vHqm;kqc+ zJ=gQ^Ptq5$)^SNY>rTvxoM4^BqBE?o`lhL!xk7)xW|f37BHg%rXHIl58)fv3MK@&x|a_9CRE@@6EdS z7XIZ~EU7)g8n}?Z*KvsmtC8#ESZ}B^)X_h&HmK{~qH^pCtWPw-dLI{hvQFbleAZ05 zMb-%2YD@X3)**To)>U+ntRJfL^w3MPuBW$YJwaE=y19c}l{0Jk9_8Pkd7Wu%+QHv1 zD&QIJ`UCG}4Ofx2c5opnE5@~Gt<$-@i1jcR%(LD{=h3>GE7DkhA7V;ETz10xJRMGJ zH`iXVUc>@h6Rbz!J=RE>>teN5|BE_7o3My2z7F7s-AMCHcSs@=7G znESt=TKzxO@{Znu6e9Py+Madb7XBaPDmm6gTuRG2bSeM;q{@LuRKCqy!E=6zi%waG zZ(*7*{vRIoJ_zju>sqB4U*;l<)&hFS)>f{PZ57kUwoVOl|8vy+zR5*Htgot;at+tc zwr=98KUPfr{+Mb73%Cf2b&)z-gUW}a^t7#Et{P(fFV|PH?&Ly#)&;7bd{6Z!CY%cg|O;EpIcsI{*16K~R?%|3_)<*UJs~9FkZYw>x zox{x5H_CbJeOzM2I*seYSyNQYx=yvkPjD?JtIuvzAJ-$Tr@b{DUGP917NaTZc^s2s zi=1JWholG18t*d<)dh6MMMA8jjIe_jyo*6 zHhM0GIImlW&SKH3Ey(4f>+gjg6|MdP>)(w9r?PS1UU2$@IPNP27qh>+v7jESYGHJA z{8DV&R4~L4!dDCa$n|127Yso6u=3bx6oPvT);x*hzFzPki)>3lGY&8MM!~7+#dAJfa3Shj(PQ>;kK4!nt9{%q`?!Czk9$HLhyLxicH_9G z3O-Kl+*eQ!;Vt@uo%lm`;$N{7|3{Vh3C9ZF&$4~D;0%huNZ}v?DihWe&ZP*gEv#$6 zJ={{rLY#1Gp*q=Zg)Gk8Es))zj6)pv^SC{)S4vyjO}ceN5_jDG6fT>s~u!nYZ) z*;F`_(SxrRF5|K|_p0M2e7*3~RP=AC3!(Em153XZeapVyefIV4x3BkreZB34M`*Zr z6kf=s(svbpkgmb*!uN6U_dSI#ay_ZNg@0?s)t@eWgUj8%RJa`rBo!Sl{3O>6`k%u8 zI2C{VbKwO$@Z+_@+h|db7Pg_24c`N6EZ#b$&?-FF=kr=c=N)D5^MdJY>Ysd)m443k z6wu1w^8dM?;s33bl(x3VxB%Xgaa<7jivCUbed&vPasI2Gr|1VRr}*|9<^R_n{5Pcc zx>x7ms8u`IMZf+YX4UFn-hll-_Y#fbnu1!Y{uc_SV&NdH;`B9Y!7T-oC_=XtEdCg_ ztt_c;8I z1z)Dt|GD5(SoaGn6uqSu^DOA1yYr8Ni`cSnE381aO}MLYHCHmdw{Q(Z4G$EaHx=8y zS2&phx})$1)TdpAc8bjZ(*4->n?nC{_~Q$Of2LV_wa`nO^LAlB7czUN zun+A-W%vKz*VsCtKNAepFRs0FTn}=xNN=}h#fJOh{!aXiN9~`z=C^Pp9+zx0RV)~sMSi2vh( zA^hJ1z@|vIKkm0?1$uowQGZ{+*V~OF4cSNd{L!d?*gnGizPt;&;pG0lU>7bN!3pu- zEOiz8jGeKVHLEMq*B1z5V|So)U>OefhnEHLcN>G@o{0I~-`N=r3>pdr!vXU<^2Pk> zKD^K06^)?O(|lm6)d#&7^>eEI1I+@#M|^q{jEECHQ_)cQ!6O&yCzb_QA5?7hvkC!L zexO|H=SYI>UygoC{TbU46XU1E{xQyi6(c4X-79=L5{v*MJ|joe4;(*9{jxj3?^nF1 z*iP^`>jR3Hlo zFZg`$LBSV+4-38od=zZX*9Cr4@G9^z!5hHu3WnEVS$}q}|5NZpusPo$@Fcw&6){jv!0(_z1{oq-GUjctg@EhO~!C1D}@(7*;lU6Et z8n{gGr@-Zc=YcB(H-cviz6@LmHurxEc%I;IgYScW(sEEgF&!rHp}t~TEauvx&Fby{ z055@l+vht|>Fw6PIOnI{ZU^JGRQ^zJcM7K7?iNhF-7A=SyAN#AOTB$wF!gr7VCwAw z!PMJ>U~_%y?P0N>g_RcJoVPX8o?$#)Z2+*bAIaWWU-xkJ4G<{cB)|N z?KHvE+hW1g+v$R-w=)D&|7HrN{*?%({*{Aq8kPUlze=&4`ZrH7^{+}W^{-Yi^{+uN z^{+`V_0KDq`qwU)`nN3+Q>R*Ro>R-2D>R+#5>R&(Dc< zf4c=!|Mr4Seo+7R38wz-7yDEH4hZf59~4aeJ1mZ;{v8$DY46_@OnZM!Fzx-jf@$w9 zjOv>FroA68nD&06VA}ghf~mKY!Dyzcyr{RQ2&UeiDwukEnqcbf6v5Qn(*;v+xq7@g zKlS!Z!PMKSf~mJ35=^~4OEC3z8ra+~^|n~>JiCj6yWu{6`3L>gCb6CR=>;R1>VB!8 zO9WFtI|Nfddj(TJ`@!b=)X%tJ>gSMP>gOuK)Xx#HxjyxCt=LZeTql_Nxn3~!bE7z( z`ng4Hr+#h~+o_-1#dhlF4#CvVor0;Ky984|cMGO|?h#D=+$)&%_i4ebzxxEU{ys05 z^>@Eu*53nyS$_`-X8k=Rn0kF!F!lO~VCwZzFp{mxn|l4G*iOAZCYXBtu3+l5g$_A? z&>x{*j~7h6o+y}lJxMV2da_{Z^%TL>>#2gN*V6=3uZsm!ucr&9Ue5rV`b51h5lp?V z6imIY5=^~r0Gs=xUN;G*UV8;ouiFJvua^j>UN03)z3vc9z3vuFz3vrEy$%VcUiS;8 zUdIJfuZILvuSdWpKd9Gh1yirri~XtB8w7WNHwva+ZxP2+ueXZr)X!~TG*eYSsGr{z zO#OUVF!l3$f~lX|1yeu2FPQrIh+yjH4+K*`cL=6_{)=Gh=c9tDpF6>(ys4kN1TRdZ zpCkY0>`(n%3q~^4{Zc>I3#NW<6iofxBAEKQ6>P3g{oE#)`ng>&^>c?{>gP_dxjyxC zx7beo+#{I!xmPgtbDub#`ng|hr+yw3+o_+2#dhlF5y8~Yqk^fQZwjV<9urLcd{;2_ zlTNCQ z*#S27iTc?qnEKf-nEE*+nEE*aMzU4@P(RlQrhcv!O#NIZnEJV1F!ghTVCv^a!PL*q zf~lWd1XDln6HNWwDwz7YO)&LyyI|_)PO!-j>gR63)X%+Qf9mJcf;+(b1XDlvi{q)E z2gP>k(ILUqqr-x)OwyxX@YC&L(AH-N`2wyaNUeg<46_|M?$!SnU@ z=?G!}2z;;RE5TP?hB|D{2fhQ$NG{L+Gw{RUt2F-|d@_QrhA*0g`Xe|3{t4Jz?|$(6 z(AmFHAO8aQR`49nliqJxPl6E=P}i#izYTsz^BVB~U13>1%|8LRUuj`hhP^*S?6-dw z>DByc@OPG4*5~#9Bj75;!`Fff5D!OITa*6o)L-iRWH5?J)o1GaRKe8uV!^!b48hd* z60m6x)c111)b~ok)c1LUsqa-_bA9T2gV;`eZxT#>_X?)IFA>L6-#f&1>U*!)PJQne z+o|ty!PNI5!PNIvf~oH#f~oIo1XJJF3Z}lV6HI+yFPQqiK``}wqhRX$X2I0=ErO}< z_X(!HZxu{^-zJ#)z8#EYtMaD4?-1Lm?>hxk-**Y7zV8-HecvOP`o32%_5EqV)c1XY zsqfDVroQhNOnpBfnEHNDF!lYAVCwr}u&Gbf_oITT@5cmF->vtY{i*L0!AQ2sAL{!g z!PNK3f~oIQ1XJIq3Z}kK6HI+C7EFDgE|~g0LooGyreNxOiD2q`xnSyhrC{oN71-nl z^}Rtb_1!D>r@prf?f@?lOnvVV$5Y>X#di9~AuyV$%0K$YeS+y9hXvC=jtHiI+%K5^ z@il_!A4dh#KaL5ee;gM~|9C(!{o_Hwv`0f=Q{J>ks|4Q;{WKrO7dBH*ac7Wmb$`DD zH{myqWU{~bQ4Dc*;5QE0kvqV<@mrPVEgS+ZaE|{icoNtg|6%;{Q@>;1sMpVn^iZ$& zgOM%j{M74%f~nVs1yiq&3Z`Bk1DpG$UcW1tdTsr~*-pJ4FPM5g5p1qcy`C(#Q?I88 zre04KOua4^$5XFoi0#zt60x0nT`9IxujdJ-URMdGUe^kyUN;D)UN;G*UV8;ouiFJv zua^j>UN03)z3vc9z3vuFz3vrEy$%VcUiS;8UdIJfuZO@$wkmJx^(wKQdOaeTdc8(4 z^?I#f>h(Io)a&(vsn;6>Q?EA)re1FrOugPBn0kGmVCwZ&!PM(*f~nWr!KOY@uXhTj zUhfu6z1}OBdc6;fWUKt4UOz9Gdc9vT_4h(dv)ayfnsn>@EQ?HK*rd}TvOuc?n zF!lPFVCwa|f~nU`xk*3udLr252laZgVCwZ$u|M^Cn&1v_v0&=;3^0D+|My$e>k_e@ zdR-1iGgaHE*A;@P*RusvujdG+URMgHUe6Uwy}n2=_4=O$Q?KU;4cIxL+!PL(V z!PL)g!PL)Q!PL)?VCrYTVCq?1F!gLmF!gK|7^hMBPdytE+o@-31XIt}3Z|Z|6HGl@ zFPM6^K``}fqhRXUX2I06ErO|M_X(z+Z52#C+a{QLwp}pwY$w>15A|%fVCvak!PK*T zf~jZw!AQ2sAL`iw!PK*Zf~jYR1XIrr3#OhO5llThDwulqreNyXF~QWccLh_=F!?)? zKI++c!PK*ff~jYd!6rYbXHx}J&x*zV)U)Y=JHRspQ_o7o@zk?Qv7PpNo?zPVD#5hh zwSsBC8wAsSHwmWw_6nx`ZWm1bTmnWjRpmwfyh1Sb^GdSu>w>Ze~Y^|Mnj^|Kpn>KFC1S8#ojelq?t^Yc#pr5)QZ0n7MH7x>e-f5uA~ zf7v3qAN&6n9Ms#t3$DKb^JEL`{SSi|-e_5vps$WU`xG3%#U{|q*{aHi{&J<@^TAbusrL&98bL;5!iuTH)cY-hsrUB@rrvKA%=WfTFx%U9!EA3k1hc*E6wLOvOEBBpZozDCdj!+I z>=jJ=^0Z*umwjL)Ta`EM%kyG8?aO|_v@Zt))4m)OO#5<3Fzw4>!L%<&1k=786-@i` zreNBaV}fa4-W5#y!bz4mtx7-b%Xq=GFB8G0KGD8R7EJpxRWR*Kv0&Pl8DMjM+LxJv zXx|FW>Cwd*P{w zMT3`PC+hn};A7BR$TsfZ*4tg;eE8McjsI|4Du1ZAdj(T(_X(!n?iWnGJqR}GrQRMA zOuaoUn0k9e@Ppu^U~_%y?J=>Pdi$aBH>b3N+qM6fxYdOKNcr`}E#+o`w3VmtMA zx?t+<48hdfnS!aeC4#B9<$|fVm4c~%^8{1>ssvO2YQZ>-%75x#gV;{}YZ6TT^9rW^ zwF{>HEfGxpTPm3P*CCkt*DaX(*DIL%7ZObU>laM@iwmay4GE_Hjet%0Q2*8nrv9xL zO#Ry^nEJN`jAX0)q5j<`nEJO>F!gVnVCvs?!PLJUf~kKy1ylca38wz-7EJxyBbfTP zS1|SOX~ERLeS)cf`@tqZsDB3qQ~wT&{i%OP1b2Xs3a0)Y6US5ktdpJmqP-t4nD&06 zVA}ghf@$w33#PrFBAE7ms$kmtX@aS@#b7p5_SdPm9~Df!Jy$UG_B_GV+v$R-w;vNs zy**zr_4ea}skbu(Q*S>Zn0kAGVCwBmu&H0v+Y-SI&`l(q-*R_JFuj|F})Ypw-JN0#o*iL=jDz;N!w+W`cZWl~_-65Fzx>GRqb(di3 z>u$lU-+KhJe(x2``u((E*6)3SS-+nb%=*1wFzfdL!PN7Ef~n_+1XIrsgOO}i-qiCW zVmtNxs9@^(n}Vt5#{^T)-xW+f#{fj4K2Xoc3#Oh=6ihvzB$#?WSupi{ieT#bRKe8q zX@aTe#b8sPsOK{TQ_o8TQ_m{}Q_riwybbCD^}JRv^}Ina^}IUoD?>UpUpnV>Ul^o^}Js&^?V3y@`HLlBA9x{jOl@ z>%)SnuiL?xlC&nx_KL`E-c)R8^rXYU)WrzLXSHPE}o%8$~!SlX?HmdjE11`bIKd1SFr(?dL z;70JQdr-&p_BG(!1@8gB1~%89cn0RSY_hB$>;0R-e!Q~+x2UfFCGe}@yEOj_JhIuc zzNPt$Ghsi!<{W<|_>bU!pn@>{4}f3!I?@9{BJ=f+b>GCCMZLXrs%5=}lijb+cRhIX zea`iN3_c$l2lVzcKV(^71)KczgHL+E+5diU)tUlpFZMV6jXkG0M!l# zKEbqy`vub;9u!P_co=Nz6Yb#+QXTGX%9;T(;k)!rai0_OnW#_FzsQLVA{i4!L)}B zf@u$%1k)aR1=Ak33#L6>BAE7YsbJc}4#BjC-GXTkd%;MyDsS4ukl0Rp*e{s&FfN$( za7Zxi;VQwjha-Y%57!8$JzOi8_HdnG+QapNX%9CDrajy!nD%h9VA{hiU{fDx54Q@Y zJ=`vs_Hd_Q+QZ#oBwOVV?cpB5w1;~I(;hx8nD%g=VA{jy1=Akx7fgG2Krrp$LBX_# zhXm6e9u`b{ctkMm;Zeb~hsVGsKWGmvynMkh?cqeQxnJ7DNrF4Td|89pPJ1|298Y^# zEVk1gP6x9YoBqbf1k)a#FPQf5mjk7dc8_8 z^?F1w^?Hq9>h)T|)a!MEsn_cTQ$IHdrhaY|O#R#p#%WakQ$M$e?bOfv1XDk^3Z{N; z6HNWwE|~hcLooGor(o*mF2U5#-GZr~djwNI_X?(dJ}sE~xlb_lb3fRWFZJ`FVCv^# z!PL*Af~lX!z(}^rAL{43f~lW;>4Di!{Twft`Z-ZB^>dP7>gQy^)Xyn`sh?8?Q$ME( zrhXO+rhZNrO#Pf8nEF`)Hu*vQtQ1WBtP=ZEKWhbdfExr;KfU63>gN)%o&Lg7!Sok8 z1k+#W7EFJkS1|pBkYM@?{etN)#068Yhrnp2s=U~L85T^vzE&{x`Z~eX>s5lO*VhZC zUauBRz5bkF>h*|V>h=4*?-v%eqt5pDB1ir zcosTKoc77>ADsq$>U8=?^T314Evr~>zZJamHm5)LAh-&H+l|;x|KYFTV{f61HJ|bk z*q3L~$I-`!!3X{LYQ6=0b+dE+Z-XCw!Fe9xIq=Ah1=dV;zB8;TXX9Ax@6pGXf_q{A z&GiPrHw-%Wdj!0_4QbH(&pikIO{C{i&A$YPzF^AZ3~OpJ+E#JfPt@0Y9en#GPWyiUg-9FjAI(nf-v+*V7-Jlo9|6BH8#Z0@v*3%- zcuo5~Wfo#Hd!6*(0-lEZIaBZd0=RAnHdFJZpTf4)NT24vfHypVcdBTfjE=!UQJpNNr~dp5 zyhG&AX{D&EpSG-T=0e_?y3S^mH}K;;em+UcCh#|BhY1c)n9B(f|06qp#iI-XGzd z1$O@J2Up?v89IG)=7Qh0tQwu3)!?gt;MmuDz(@b;*vtO}H%xK*qvxU_KPA$)1^g%6 zJY-9i*L&bSXm5}u#oxib&i_yNkeUyGSNA#TYn+Gv5&W-7Iz4N^?|#=Q&)#9zOyfMEkr#r*8u4!fe!6$b`E8YVZi|&(yCw!QH!@`hIE^+6vNx zVnY2m(>e$IDYR$SU)nD}*n<7~gyz-Y8K|!&zkUdw`jn$L=TxKrit|mz{yd)#{0Q>j z)ZbO$?rWX*Bk@7W^{e1>>GNL&wuHS{0WK~su+CNId%txDc;kcuRURro!Jod`i8r5y zygy5nPb>I>Co%u9(7vCqg3bE^3#`+v?}M)u`@any`krMW3)KDJ3`4j6ZKu9}6MTCN z@$mwC`|rVbFLLbJXX+4-_?@NvKjz;T!R^0w^!I+SHQv#K*TFNJo%TElLUHSWlb@G^ zXNde5089VtPVl~KocjEC@b15H&b-~;KeGV!|0TzN{4BUwoUaSK_bsQrtp@+@1@tNP z{ofDn{JEn?&w;B%eJXB%|Nng_|L+FBhBkJqKK@_9EeG(97|o|3ueXZhec;Fp1LW&Jz@$5tJ~HL#ua z=Q8j{asOP-ZWHvy)c+rXA82#VcNqNC9;f|8pw(yZb;|2m@KMpeUjnav8e?WUJquCR z^M2yk_aA|)P+q9UDm@cg&|iPbX}`7LwR6xU^zjjJ=}M>lKM9^L%JaX#pBr}0e=+K2 z74!$mQ0KoAJUN2;qR;mO@M%b2T=Oz7%15;C`@!Y!;23@UW8gn+ciKn$rSL}|a{S3H z;8(AA&OfacdG~w72=w_Y!8alOXKKC?d?&==Q<@(D*F)b-`TLOf(*IZuJ{Q+xezAT1 z96WoUQ$AHVR|o6`WKP}hjo^cReD(hKf>$HY@h5fs>)@gnq3N1WUW~lM#``t*g7*qN zdl-B#(tn}e{v!CYUpnQn@G{&V@~Bg9{}%Xd)M0bIqu_$oPX2^0x2$K;J}2n?KLDc%G0)#3P{;tzs z`7L(W+t6PckNr75dn0%r z+QV7;`188ZesI6bHLnCmd!7F27r{~w_Jg|*SQd&zmGAg&)UR!hzBGeJkYA`$s{FnR zmj3W#;5|71x%&8nVA;QZ2Yl8`PX2v3fV#ThDZeW4wR4^P=>$)Me>+iM?;GHCqQ30| zKe`t8q_1}v+=26dMDsYbh2dwM@>>V~CdAz6-GktnxZeqS|5w1YdBx`VWte~abEkgZ z0(QlRz_XCQAJ+Rn4?Yb2G40_a$O~Ct%fOXyIrhF8d_c6{c5pBBbe2BfE#nzx~{3^S@5qPcJ%z>5U!2(GhOfh zS+MMXe*=8rRi{7k5O|`nuaENhMyGuK5B$*YFhx?I@BMwaSF!&T@NW2f&DhTS3xKbL zjWgwcGkEDGj{kQ*_*QH`NuTdG;BO+oFVtKZhAn-@sZYJ&qv%hbqR)RlcsJ@RPN}Z< z3ve-3=3sl^_5T8X;b!Oje+Mr?ewgbOM=a~fVMpJt13wMD!xAp4Jw6Sd_@s0Fntu2L zw_6rg8c^HUgZaL2?5_9$@b{o$_iMi38u-SjuhTSd0v{9g<2T?Z_Br+Max|><(CagF z`mX`Mcd^qy{|0!wsLzMN|%XsmJP*$ta{?F0J&jsU6@rnC=27K>>&ii0yVB2L#1MiRi z%;&)6KX=OeyWp$E{r)HT2=ta8>g_Aw4?X7`-@g*wHP{$b5p})~4Wa#bpwYT~E&?AE z?Y$m+rKr!hfkR^Zv*3-dTc|m9{W%Dh?X3ZIrRZVjdI!Ms%Mf$c*LxQ%?ah>H(e`e2 z>RT)L-bdlXX+5|RY~J6_`&$n_g8FcgzMrGu@uGdb4KBIV(YxmBaJ^M%qk8{ef#3L* z?I+T$~?M?B|cr@!)X@OxE!X4%fq8gSJCM}L-sx2=P{*Y~>;uol`B8+bylw%vcR2ZZ^5>ur!oGXKZ=<~YdjGG1|GLPz z|6hQ2!hfHF?QHMUM$ms+0Q;cR*9o2qy`7}De*@fsjc5{T{{!GnyO2gO>tpHXVQ*32 zW~%LHSl5H4{n`ZHgZlbmz5ma_8}~cq`x;orqehN zZ})=BalOxI-UKdu&}py7z|udexe5Nu?;Lw_1$ggMPJY}2?!3xwKg`d^!Rtl&jE5Gl z7Ufq8Zo&PXsjq(vSdPCu0A^t};|I(4EwCK_Iejhc|971Hh=Q-&=J=mK26w<7u|4tl zf?MGK*W;N~eZ6MzBQH6}4}oR;{B>~Mc1O=IM_ZQTJ@3y>``#BD6eRUNjj^DI`A4U6bFSPSJ z3~mtD+XQZ1hWb)qZ~ry88~R$I)7N%4;*nv84}*t9{h0j~)SosdeapZyUb+W7v&yj_ z2f=%P>%?=8f#vzXxDglrg|q$id(gjH?v(FZa1Y8Kva0IOL2woP$rdp6qI8qHy(|KU zy-s~u4gS<~PWycaEXOaWeihm)>f<@!jnFgG9PI*n(?Czhe0FR)) z%-8ArKDV!e51`ZkzOTU_hfVyY&j0D)Rlju3_XTk40>{3*0N&8*^#9Jg7yZ50o&HNX zSjHblz<+)j8mX^$H~4B?-?Z1GU^#v@@9QZ4F8C}uJpu6ZVto2>@KNm`uTxxxcgI|1j~3v z1NdCjKQs|lAJ&6=Q9n)l_yyQ2>g#FWME|4H8PAyomgAQT!TsX;gW%5JBYpb(cY>#h z`mqTt>+>VvS^tXqRbZ#*oNu|~ODn;0Jo9ewy)QZa$>+fvalLYVy}y8q;or{zvwqLK z&pjTv3H+w;hrb2hF~O;?KL&3U+g}39_&w*k%lQAr;6I|hLHSgEZUWDF#%X_NJ%H-^EaQzM;0E{?rhYsHu0`gW_V9mTIUYOdLF7lTGhT8rc>3GW zJbnEo;8RhbFV*RP5j!UJUmpj{@wgiBW~6VTKL6*z!IjSa zzYdo6bMAMLU#Kj|5|#g-1E2pBCw~us<@npV+fYAOJMqa%@ULHR?!Om&;D8g~+5n!6 z`ZP(W=N0fIVSmcLi+JxL*v$9Y*S{Dn%XbL87mep6oge=WE(tpI=^gNlzd8AN`on0i z&|7o89`NpCcD$1H|2yEzhMn<`!{B$3`R4p*eGm4rP#h1w8TY$JU;k_1!=gQW3w-rc zPW68mn$9r`5N$h zRZf5Pi{Qr_kw-dx`@nD3IsKc-{{sK-(5~+dKZLzm?)bYw@BFS+xcySc zA9)Qd;}I>7HW{OSZpg&uqfEa&GHq3*o4-|;sqz&mjK zWSo!V>8rsVB0awVd&T^yDgWlK&t>3AIG?GXSA$1HdcMy6#rggMej53GmQH{D6VT_M zIpy;JcoowBDZTwU@Eb_Opf0a7e}wr}B0ug1UyJLT{P-zYj*lDwf57XEpU>Uxo^R0! zmhs>J0L%E`Wltg@=ntSutM>JEa6`nYKS#haUQqGx@b^S|dce=a23~>V*FxgkUL%fw2mIoTPWwFb$IvFx{|SPpzvSfq&0sk{Cl z6#G96J|^nVzk=obh5g_|h`*Tj{%5cpFOUBe`U%bG)9ve<;9A_DX`g$+az589WTd%R z=YKisqV(r41)seFZKBXFzq`QZb1HuMeiA>E#QzQc6Uyfd?0YK8|IbO=)q{ungghU| z(#|;G?Ef*a`4r=q@+58moAokJMXt1PyEuL^_cU=-!I4|_~LUa*H`U|#$)k;o}O7yG%Ag(98)kgq!)iN<{XfguY^*Y<}3@j&;i*`<}0ICGkvd|X7= zUJ}=bWp1Oxmc58>_ds9YFb)yq688DS-M;Ps*1;XL}yl%At z*BqEX5bh4)0QvU{{Jpxr-}T2*BzYiI9g79xH6ed2=H7_(4S0KpW5F(es4*Vsb8Yp^ z!PeS9e=W1_bjUO9CTJ4*N#>0WA>nx?ns)1&IIM{=1PTA5> zJrM704|c5x#Kp-?*A2y^{zj~}-0UAp zlv%hf5XI8b^&$VV7BmfYNoIrido}9YVA?Hhfv$n5y@f?8j;RfFqx{fr)P*X|ZfLCa$+ARpy6VCMeSs*hQy&S1A}g_~w$3ir4m7lyUVpqf5chL^YqN#N zbpn{nc7F1=+F;aNGihtHKatil)SslS>exW6D;n%)Ls#cuDY~zaxY^WA?fzvkbrc$3 z(oyQ%TeQPR*>*Lqo9>!pk9TCeamwp>=-)L3h8Vb0h42P4rSGD6l3Rbq0B`CT2S zYJvF+k86PPMxcni9Hk(PT&f902DkX)_t_J8qQ(C;B zrU4?z+Mm#!vgD%{_oH9}Df_W0;&@)QEgnTFJY?w#NAcPl-BR%c4g6Fn9?(ePeU8Z+>-KowI-4d~tAH zTcg-gOK958ZYAP*lYiwE2ROf51Yp!41QsZrJ^|du#S;sTC zcuLwLs7ir`NMr?4($?NOe{sF9sjdZE7c?!JU)=;BXQ0#9=v!vz%H@&hikKB!xeQeo zH4FAgdqYiSB?|&^idI{HpexuD?1BO82`+04!=LN%cLlr)yIR{ye7NeBEu|$Yi`B{0 zA?i$?a-5+l*ctUlhrRxIZ{1*>r>q};P&@N4`oa`+b=la;o=9}1KiVBrxGWZi12!12 zN!8@Wm~*A3h#&T9koo2*Wn$aBksy<&{#0601GR|%0qty><;xd*JfKc27mD&(|2cth%Ny?C%T(y1j{P_xe|cJ>`ww(7>`_ z82J^4kI56OB$neaq*Ardu10U3M^(CyqNkPTksg&yJCpJ}gh_0(OT89llHXCKypTD{ zk>mUh_LSKNYrCB1K}=_33>h2_bivcf^QaR0Qmq4_K%Pf1aW$cUKgwfbc^)(e2h~T| z2ytM%6Lm1Z150@|%6o%9))ef5?!ys^(njP}ze-sx(;eQJZ~n~12~a_6Lh$S2iS}Y7 zC0pHARRD+b^2#4{~rFoyCVorurq?}?7f<=S1vP&wKto5ZH)QL8A5NlH`aU@Da)i+&8YUA-#77y#WKA08OK6_sE%%e4& zhvcusr4%0C434rBn*XuN*yv;HLy^3-gqrNS!^Jim-AOFcPm*Yn+~+_} zFN%62vAB|96k#;KyHm{or(!&*6Vb6eO^c^g9@9GPE%l_WGgSF9JGJ3%Q4H1LZoAJ4 zyU>sLPo9<9V`rZ0RC(SfOR+Z411CV#==^FCwF!Y51`ZI7JpSXgr)eK(->zNcj1%OS zd{vWC#;NBxj%rh?q{Mxa`H}A7<48t^GaQFc%W}{+Qj1V6l(!pQ^<`0Lo40H9ZK&11 zlC__=lV6UO@mAbzNSvcS8tG$XAl8qf^P}X^$L7TG-lj2HQ<6 z7+z*t855O%S(RzO-cF8k+-TOTm%)prqnF=pmFvEbI16n;5G8(DAd3EPpt~jzjk6<+ zPGx@QEK5CSbti(z1Mz?sRYRu>wI-BwHRx&2j2AW zSGLT(Bp6q1H0mi^7Kr;`_xtfL604)jlN4Ft*Kl(~(zQ^g2lZ7|mFk9YOfl4Is&E%seM3zs zzpfd=H_gK))ioabLKzHvt-ZOut>wgAj`!YvnWwDAXlEk^D;t}Fp4oOBZeiNkou>o= z_!!1*yzyvba|@zpj9XzW48b*y#?{q#dY9LE>pPj#ZF78e$_duTwD$&0>7{0-x&1UL zs;onCnqqIOU5K$Ld)TwovnZT^Sam35hl=c7E8M;2^re#2-K*@2!2yZHBX%e&?FK%BTU3fHi7MGUQCHIl-M0ght1}jaR5T$@Z zXshrA+h(IIs(pz}oa>air_yO72-T>-Woac`oggBb0e1E5K}%!TeDS7EPhDMEE5;kp zO-YK^RyNl+`gA=)PI=h>tse+?(S|iPSGarO$ps=bEm=wGJtcKc%ze3ca5-+PuC8vd z-PhXE=JR-(1AXQ?Dq}0=x}+=1rP8SI98?01f@Y`#P8DcLQ&&+xbVE(kws2@J?ea8w zm#3;%jjdkgQoY(dKKpDUV4jrYr5-0hB(hhv(QLUl>VooA)Hs61icn5z^ks%PL9fnQG;votQ_D_|Xyk6PgM(;}_>WD|t+1SrU_G)7fNrsPLw_{fwx9e`g zt(xl?papF$_F$Qo&=!x_*p}F6dtL39C1MI}1E{HO4aSvX(%I2yq4vcA@l~SUuR=SLW9Ms{S&cw+U0oSa7*2V^-@_*{WwDrZG}2`MIGL zqPj7uqONJ*8YNMw2bP-|JMQbV2Z8OzH0GzDr%F6Gu}9 zZFZyH0V7dS_MlW=q*uAJAbjm$7p4byAr8{$bs1a{`f$9-l&)=QiRfkL)lM_@Y)x3i zom5Y0vwuavSm?AZ%H!*-t7CsIDVo!co{rPh%6xX*CaqYRYv(9x&zuEq_9OvJPKZVZ zjm0-+H_6f_b*siyA9HoS+_^SdPfTliWm|)#TD*76<_i zVRCMqF-aBGDQQF}1f|ek%7TDpL^p;JG-x3DH7$@mx?hQDTUjb#6G7=r3)1pR+jJ?;nT->bzacnf3X(DcOB*Q%>op1ahdIzLYMa6df&xjGDOc zsN7>$pWB>D^fu=EV*yht?)XG$Iif1QMPW`o?Td7KnKAa9VHg)Xe@;l>8&}T}e@E=`2ve0iooLog z^~Vz!XUWz0bM~ZBW70TJxlZdbMp{hBOA~-jDOkEP*&A`{yk6EXx9LsQpORnt6o$Kj>nn`z=w}T;j5b68LnZufP$fvoj1};OH z&+b~gf}2Suaa4)2yEO=r+v6VSk)a0<=fUp8r;kjfD=0kxHnzBFavWTh{h0j5(e@XF z58-xWGl(y=mr*^2p6y{$?f0b}XlZZDRY`Mqbydqt4Q}fOoYN7*Bunker>X>Xu<=B= z1gYwfcNI+zk>+kC)i8dHB)D2g4qK5S)Rq#K*5fg9oNx^HmZw{uG7y=^2uQ7x3N&Fg zdg;mvx6@P3G2gnN*9l(DVeATFH(F@MYIE7yOnEn|4to1#IZ7&nRad1jrf#>IrfdfD zIn!+Za6F*L+Y{p?@F$ngty>&Mm^m5?cuMQ^mcmuaG+HxpyF0Lhpb#l6N<%{r;OB7Fy^R$ z;j^c4UtB#O?d}!J5eDOzkJfOFy5*#|V|n&_GDU2h?u2|?%k2QA8*0LF7=BelO&E?D zn|VtK=#Q=)r6?XsD#_)^eP4Bm+&dn%s%6rQCP&*cSyDzz5)n6N%+2Fj$+?GkL_c0u zTF1H95RFlciQ2VamRR0KNjh^`{U%d0Mw7nTh~Q#Eh;n`0k}z8j@|#Y(t6P`%O(1ZE ziAMIAdSy+df0%Pg8`H!O5mmGeNb5pwtuR4I#Gv>*rJX=oz^U=C)bN?zNoDLzb#6R9 zm~8JLf?>(AuzvM$UT+|TheFkGMO!XaVuH{;bakGk_;7p5n0{-Z4{=PVKW$sJG!F!M z2RpMi2+p2US(3vRWQu^9V9uE2pj?H-z392?XFeCz*SE1TRnNzBqpbNkQdgR@ccjyq zG-7y7^#sD`K?J zo@fS#WYmM0DKWMbl}MIbArwio7jx+?9=2ZIhDb%JPg><{(IQS_T1@{}d(cUB?1Z#I z`g5ZTPo@ifq@9aJS2ocv(A8y>I+x=0+5KE4d}Fdh8BR>Ygi4a<0WttUJNO-QcTxq23C*qo}2(NQsdIos{$oLnzYlr{*fYTq(nznRO;tj<0P zQ=WAcMqbd|4TocJQ|R~c-qiR^f_S|Xn8kA%V|CXI_%VYx;Zdleq-1Y6w*|}T4yIO0 zcR$gTrpH~H$Z*pIZb?L0%J8^b_BcyY+`xUQyk{oa)1NDpKb+!e#QFoaua)M`@|lZ) zF}yT=skC!3U@S5OYFHhzn~_W|TXJjjl(5@|$Ii?{B+lH1O#N>?pF6b+7f3~6i`p2c#FPN2fBq^(@DaU16v-(D9pJ+qV%&W3zx&>9mujR=QiyuQ_WsR}qIB%wS9ONZ!1&}#tTFEH&6l#{gp8C3m z{JwrZWic3x#^Kzt?x%Gh)U1f={ve)S=X-=~!96igzn*}Gl|EXO*ECnxti_DtoW}nu zYqUq>Z8roCh#sTI)18=$X?r8K=@qZD(;}PGN6u7%P(Fy=h!bYE$2nD2#>ny*1;%r5 zIKnmhJGSn;3rt1dKb=7FW&IQ>9(*UjArC3C2*T>C@H-wk~CsHy1P$Ug`}>$o*~Nl z$g19tu9GLj9BKX4gg_1t?+#OBql$`V7!D7?8OD)-Dq z(^5y@r;$&_C+W6v$#c3?Ime#N1V;mG0TF;1d#o*m0QwLjmWr>zGm!%S*|d&1txj$F#*mV^OH z_4g8+Traus@NK91<-I1vCC!tk!hXmk>1{jdhr259-WY_!ISz*hB}P3Qt5h*@Mvcq2@v{;sEFaoDW!V`_$M0Xi+|<}>gikG|npAk?F(taMsd3F!gOidqkujF`peu-&)X+v#}Ji0Wn ztX{lUFVhHU((4hlII8h66Q08Ouo`b$jvuy%ctU%?3k!Oj%Ch7a_xoCYl%YyneO-e>uEFB$ z&!VS^&Db&A3|1g%?%)ZC=8Y{xoLqDB4jd$paq1Vc;}ue2K9nopx`XIy<}NEDtiGYj z*|V16t*8B6_RF7Ubq=A>a>`ozenoCs%XdHmX>ip9_Y;N9X^KAM=!WZ(4Dn~E9yw!) znM5unt;rtPm}fp2-wggc+_Th~|LMa#I?9v2!{p)IPIicefwJA5oUb#>9j`!+FmgAV zdBw>hlkGWX{nCCuBd;c4rd1cuY;+*)7fi+ETU%u(B)iUxsg>t^3rkXr%)%%upT(zuPau$eWGhSP8dPwLLZ*&g z(ks;S>DXm2S7Fq|X!(hHj4EUAOy-4(IN%*Q@-@TBF1aa)915A;Cb&oY?Y#3K9_o6} zzJ4<@hq-*+v53!}E|9Cd(%oqC`|i^hmUEdNFiePjm z=SYT(-)9-LP;<%bIU(5|=yX;1ywf06E&DXU+%IylUv~oE(7cJnHIXGpzGrf4vrZ99 z>chIiH+jpRZE5UT#9uukT1GdOotm`GB@wSnygtdCB11Qc54?zXlqO!4kFHXN z(1@CelI@PwOh9Ee?N`2yT3B80v_w>JEWs<)xYOjK_P5I2>*OWP=e7-F^3=-{V-}q$ znxlShA-s%^vqrqfzFO*j16+O?=mow%msUGF+5#$-cN`1)@ zyJN{K-$0ylc$K5?Wy%h2IZeMY?Xfn$UZkSOMiY;4J@q^n9-Cuc*jvZ8X2~uUrE(2ub!8!XX?E=EnYI?EgSlUCGDea1=nMCso9lJEOm@`>xEA3jgN)Kl6%?FoqA z**#qh*&jy;FL?sFyX@GTz*Ikb=2u=e&+WLG!SnQ?&cqa)T)s=L$uF#}=`WGcfV6p@ zGnSEe93e}fqrB0H9pp7d6Mc-aIOQrc(l0N}X=Uu4C#_UN`z<={Nn3q!cF|qSbLgj* z)6DXM?3xIH%R@>HBzWewM6inKa3Zq6Ic|L58qZs|H7EY6^gZXP;G-q3;2PH$eQ(X} z9HgD5nYZ(q^!8AbL)oJq>Xl@P=O1%5kxW9a7Wzwx?Tx8-onn4-r7eALTBQsgZkk9z zlDCzAK8ttBWq7D1PlqRKd&n_a#Wm74$F`a&?|w-ySL&%`yR(TmS;oz)fn4I1s?f<% zW3g0-d9)BgS*t%}&j?D>Y@Nj*l@pR?4>WA|6rU5|_hfWRa|B5;^u|*{9eL0B$e}N~ z8zvXC)h~Y>=)~Ju>w2k=V|{aG^5|kF#}-q4l~Kc(RYLL_d;DF2%tp|3BlCQTau!dR z*FdSo1OC3tBheKxy&$h=Zkjg~YOf(b?>kcmLtQYXFTocyQIP|K{*Z4uR>V`gx!u)F zYXrK&tl8%#WOyTqD=uUET-nz#O`Y(@3ENqE6}g|x5}vIXgLB8W>>A|G6;krJSxWZu z!31NYOm{fxi3>F)#O>>qVhLf#3S&qifc4Z9(?`hC2S!O7;B*kl1IW&;@ zHLKJY5pyzwQ^~avY(Mj3o-I5vxskh)97iGL{bnP2hn<{KojqSMA=ND3geOq=+9LJD ziF$33dVvw0=knCI6`jCwl)Me<*hD{LoR5!Wje7Vc#XZPe_l?0%Biv{i8Qm7QKX1I& zQFiQEE3)A^&GxuVBlUE1|L zTy2h@2ff?omn%omd-=N zvK-46g{#An@Ni#b!0wLHIUP%UDytJ*kC&RM84gQ#MI8^6l)CK2yKTf& z{j$sXrrLB*)n$E9H0_k_gbawsQxmVhFm)kUgUcFi5|2>lT1F*O!T)AVw8Owr;lVmf0cN%AYPl@faTMv0cIa4#qoHq87%VX-VmNs zN3)LNW{KA&PX;s1&CDop_d#_?Ob;aKSN$Z)B4ynllXIRj7!59Fn#f+%l3ep?GFPzC zRj-t8WsYv0Jsqnj5?$$!cH7HbyZsaQJ8+eW#EaJ3dI#d&k(FUzb(eX!T6*U)rwx%( zWSYLoQ93!|#r!9*qmXlId_K?RsX0n=1m<{Nr8bwV+uCnaQ+|FfMa$xWBzX`ik8h=! z^qwXhcB1A-C!PS#-;YamC3AVuSpv@XTrE_c#B&THdRlHjT+@bihp{-$FvX4oIu(t0 zk3k%NXpgK2gnery_a57hRk2CJQ_-5$IDd9-=(pW!<*@5b2uhygkf4 zvXrb``e{F72W2e6m}%3Bq#vn`M((&>20d~OHmUlW&_hoN7ece2u}ZsksSMVuRb>-S zPWJpubmmcz>J3eoyeFy6DBBR{>x#rQhGh=9{YT9(ttb_~$L(Ddjy`?4g%XKh$ zyDt*1QTg6jiNUpx zYVvq@&R4Kz3uh>2B1I`uR?L{490KF}?XxbJkv(M3Oc+gfDz(b^t}L^)!U@m$xLj15 zzejuK%j5C5$5UsUIxd{Wb)Wc%T{G`HX>8v;nw{YpHhVcBWC7niqJ$=Uyg%OtkT8Kc z7N%%Pezr`#(^$=%_3ad#TTPr&aoh zVvgaa3>ofDd-B8Bc;Tz9GG?YN9>iAdH8t#RR+t*A7f**2deMw;J$gR+H8vTXKy5N| zzPcdeB+5ivPdtB>=n%^%>+)&>NDQRTo=hw~e@{iTzbhJP4fHhFYZKz_S?clbMbY3g zJf~>uHhP(fbs>~{IlA&p3EibwX@td7hLgEgka8k2Du&a|O&8-z@5H6sGuI-u?l=Sk zbIA+YruBg_Sg#d3;ewipjk1GaVuvPzl&i94nHFVKL!RFBKe(=%c|1wI#b7W{=S}k@ z7L)9<%XVYq8o>ypsF$;<_f!~g&6`UtMK(eA3?Sh$>iBoAQRxgaA)a{7`O4uenMUov z0O5%-4Yucys|a%rJg9mjC(PJS^d`zTb9W(4r#<@%ct$@mYL@BbGFSGydR+=5LsX`q z^BdsJGWg|M?ZfT#{XlE&0} z=TvQMl*T0313vs zSI#<~n8UPYsO3)O$teQ4g77K1bOJ*wVy#ix?vsLe8M;}nDWOVuXlgRN3oR)|nSG7W z9C@C>qp~e}LVV>7Wf!tkYcY0_O6#d-8&7q&-+bNaT$Ly5D>o90KElCSKDTahIEY6y zV*yWTU3FJiWFQ=;+sxK9dIupnl!7ZI38cFtn0BBiWwzzmUw@}(I%R$R-3gMS9F;kP zfN1wL<=N!C5|zaTH4*AI5tcy6F6$~%OBqHDPv=iGiEV%4$G+euz zQ?Ttx_?Sy^qNh!|y3%~D9%c%empW&y*6Ai%yMh~eWo~w}=jvRH#^G^|$C=VT>3uqhSOSs-K8gWEj(dh0sGcxh|Va zU2*4WB5SE(1of(Vx*iA!>oJC5HTaOaE5i4>pNyzXQbsE&K5=zAmlm72blOFrQ@i)J zN3424)r0c89RPJrtTK9n06)-t6lRn3VJu5L0L?n~1GQ!+G4+f*U zhKBr|!9hHCU48woLsaENHSve=0$FE^ zT|JX;54Rdib9ZU;Ocxe1AQ-ofy`B5Z?QR^iKI)%mb-D!#uW=nwbhrvcx8=E?A$!q@CKh~Jr3B+If&?C*K}U4OVAKiA-E_A9}D>Z`Wc|MA@1cNM;7zYgrj zZ}BdBAO6q%__+aJv){-O+y}l>)E4_cbKSLiKi=$ zBla`fxUczrH-6`Jx!-2&w>iUpKf!jE1^3&6{kC8~9%#B;%m;g<@4C@nu3)4 z{#5CoFXJb#uQuI;eFh4wnM{cO6ziY=ji3B8 zieG)W-*o*ue{dVWNA*wqP@l&bGqAp67f@mrE~zNg>$fHm3K zEpgq8llD6>;e*!No%&?@T%=R*71?ifKk-3pAupsq=2!l7asgWPBh*GT>T~h;+0X{o Yfyww%3*`B>S4_5k^%VZ7KjwV@4>QJYY5)KL literal 0 HcmV?d00001 diff --git a/plugins/profilestatus.smx b/plugins/profilestatus.smx new file mode 100644 index 0000000000000000000000000000000000000000..40d32e223f62ffd9a84f8375a71fc8c03e4e6769 GIT binary patch literal 18740 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

D2^!??g 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 literal 0 HcmV?d00001 diff --git a/scripting/include/SteamWorks.inc b/scripting/include/SteamWorks.inc new file mode 100644 index 0000000..565969f --- /dev/null +++ b/scripting/include/SteamWorks.inc @@ -0,0 +1,413 @@ +#if defined _SteamWorks_Included + #endinput +#endif +#define _SteamWorks_Included + +/* results from UserHasLicenseForApp */ +enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated +}; + +/* General result codes */ +enum EResult +{ + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection +// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha + k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned + k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) + k_EResultInvalidItemType = 104 // the type of thing we were requested to act on is invalid +}; + +/* This enum is used in client API methods, do not re-number existing values. */ +enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT +}; + + +/* HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions + of each of these. */ +enum EHTTPStatusCode +{ + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +}; + +/* list of possible return values from the ISteamGameCoordinator API */ +enum EGCResults +{ + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage +}; + +native bool:SteamWorks_IsVACEnabled(); +native bool:SteamWorks_GetPublicIP(ipaddr[4]); +native SteamWorks_GetPublicIPCell(); +native bool:SteamWorks_IsLoaded(); +native bool:SteamWorks_SetGameData(const String:sData[]); +native bool:SteamWorks_SetGameDescription(const String:sDesc[]); +native bool:SteamWorks_SetMapName(const String:sMapName[]); +native bool:SteamWorks_IsConnected(); +native bool:SteamWorks_SetRule(const String:sKey[], const String:sValue[]); +native bool:SteamWorks_ClearRules(); +native bool:SteamWorks_ForceHeartbeat(); +native bool:SteamWorks_GetUserGroupStatus(client, groupid); +native bool:SteamWorks_GetUserGroupStatusAuthID(authid, groupid); + +native EUserHasLicenseForAppResult:SteamWorks_HasLicenseForApp(client, app); +native EUserHasLicenseForAppResult:SteamWorks_HasLicenseForAppId(authid, app); +native SteamWorks_GetClientSteamID(client, String:sSteamID[], length); + +native bool:SteamWorks_RequestStatsAuthID(authid, appid); +native bool:SteamWorks_RequestStats(client, appid); +native bool:SteamWorks_GetStatCell(client, const String:sKey[], &value); +native bool:SteamWorks_GetStatAuthIDCell(authid, const String:sKey[], &value); +native bool:SteamWorks_GetStatFloat(client, const String:sKey[], &Float:value); +native bool:SteamWorks_GetStatAuthIDFloat(authid, const String:sKey[], &Float:value); + +native Handle:SteamWorks_CreateHTTPRequest(EHTTPMethod:method, const String:sURL[]); +native bool:SteamWorks_SetHTTPRequestContextValue(Handle:hHandle, any:data1, any:data2=0); +native bool:SteamWorks_SetHTTPRequestNetworkActivityTimeout(Handle:hHandle, timeout); +native bool:SteamWorks_SetHTTPRequestHeaderValue(Handle:hHandle, const String:sName[], const String:sValue[]); +native bool:SteamWorks_SetHTTPRequestGetOrPostParameter(Handle:hHandle, const String:sName[], const String:sValue[]); +native bool:SteamWorks_SetHTTPRequestUserAgentInfo(Handle:hHandle, const String:sUserAgentInfo[]); +native bool:SteamWorks_SetHTTPRequestRequiresVerifiedCertificate(Handle:hHandle, bool:bRequireVerifiedCertificate); +native bool:SteamWorks_SetHTTPRequestAbsoluteTimeoutMS(Handle:hHandle, unMilliseconds); + +#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 9 +typeset SteamWorksHTTPRequestCompleted +{ + function void (Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode); + function void (Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, any data1); + function void (Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, any data1, any data2); +}; + +typeset SteamWorksHTTPHeadersReceived +{ + function void (Handle hRequest, bool bFailure); + function void (Handle hRequest, bool bFailure, any data1); + function void (Handle hRequest, bool bFailure, any data1, any data2); +}; + +typeset SteamWorksHTTPDataReceived +{ + function void (Handle hRequest, bool bFailure, int offset, int bytesreceived); + function void (Handle hRequest, bool bFailure, int offset, int bytesreceived, any data1); + function void (Handle hRequest, bool bFailure, int offset, int bytesreceived, any data1, any data2); +}; + +typeset SteamWorksHTTPBodyCallback +{ + function void (const char sData[]); + function void (const char sData[], any value); + function void (const int data[], any value, int datalen); +}; + +#else + +funcenum SteamWorksHTTPRequestCompleted +{ + public(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode), + public(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode, any:data1), + public(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode, any:data1, any:data2) +}; + +funcenum SteamWorksHTTPHeadersReceived +{ + public(Handle:hRequest, bool:bFailure), + public(Handle:hRequest, bool:bFailure, any:data1), + public(Handle:hRequest, bool:bFailure, any:data1, any:data2) +}; + +funcenum SteamWorksHTTPDataReceived +{ + public(Handle:hRequest, bool:bFailure, offset, bytesreceived), + public(Handle:hRequest, bool:bFailure, offset, bytesreceived, any:data1), + public(Handle:hRequest, bool:bFailure, offset, bytesreceived, any:data1, any:data2) +}; + +funcenum SteamWorksHTTPBodyCallback +{ + public(const String:sData[]), + public(const String:sData[], any:value), + public(const data[], any:value, datalen) +}; + +#endif + +native bool:SteamWorks_SetHTTPCallbacks(Handle:hHandle, SteamWorksHTTPRequestCompleted:fCompleted = INVALID_FUNCTION, SteamWorksHTTPHeadersReceived:fHeaders = INVALID_FUNCTION, SteamWorksHTTPDataReceived:fData = INVALID_FUNCTION, Handle:hCalling = INVALID_HANDLE); +native bool:SteamWorks_SendHTTPRequest(Handle:hRequest); +native bool:SteamWorks_SendHTTPRequestAndStreamResponse(Handle:hRequest); +native bool:SteamWorks_DeferHTTPRequest(Handle:hRequest); +native bool:SteamWorks_PrioritizeHTTPRequest(Handle:hRequest); +native bool:SteamWorks_GetHTTPResponseHeaderSize(Handle:hRequest, const String:sHeader[], &size); +native bool:SteamWorks_GetHTTPResponseHeaderValue(Handle:hRequest, const String:sHeader[], String:sValue[], size); +native bool:SteamWorks_GetHTTPResponseBodySize(Handle:hRequest, &size); +native bool:SteamWorks_GetHTTPResponseBodyData(Handle:hRequest, String:sBody[], length); +native bool:SteamWorks_GetHTTPStreamingResponseBodyData(Handle:hRequest, cOffset, String:sBody[], length); +native bool:SteamWorks_GetHTTPDownloadProgressPct(Handle:hRequest, &Float:percent); +native bool:SteamWorks_GetHTTPRequestWasTimedOut(Handle:hRequest, &bool:bWasTimedOut); +native bool:SteamWorks_SetHTTPRequestRawPostBody(Handle:hRequest, const String:sContentType[], const String:sBody[], bodylen); +native bool:SteamWorks_SetHTTPRequestRawPostBodyFromFile(Handle:hRequest, const String:sContentType[], const String:sFileName[]); + +native bool:SteamWorks_GetHTTPResponseBodyCallback(Handle:hRequest, SteamWorksHTTPBodyCallback:fCallback, any:data = 0, Handle:hPlugin = INVALID_HANDLE); /* Look up, moved definition for 1.7+ compat. */ +native bool:SteamWorks_WriteHTTPResponseBodyToFile(Handle:hRequest, const String:sFileName[]); + +forward SW_OnValidateClient(ownerauthid, authid); +forward SteamWorks_OnValidateClient(ownerauthid, authid); +forward SteamWorks_SteamServersConnected(); +forward SteamWorks_SteamServersConnectFailure(EResult:result); +forward SteamWorks_SteamServersDisconnected(EResult:result); + +forward Action:SteamWorks_RestartRequested(); +forward SteamWorks_TokenRequested(String:sToken[], maxlen); + +forward SteamWorks_OnClientGroupStatus(authid, groupid, bool:isMember, bool:isOfficer); + +forward EGCResults:SteamWorks_GCSendMessage(unMsgType, const String:pubData[], cubData); +forward SteamWorks_GCMsgAvailable(cubData); +forward EGCResults:SteamWorks_GCRetrieveMessage(punMsgType, const String:pubDest[], cubDest, pcubMsgSize); + +native EGCResults:SteamWorks_SendMessageToGC(unMsgType, const String:pubData[], cubData); + +public Extension:__ext_SteamWorks = +{ + name = "SteamWorks", + file = "SteamWorks.ext", +#if defined AUTOLOAD_EXTENSIONS + autoload = 1, +#else + autoload = 0, +#endif +#if defined REQUIRE_EXTENSIONS + required = 1, +#else + required = 0, +#endif +}; + +#if !defined REQUIRE_EXTENSIONS +public __ext_SteamWorks_SetNTVOptional() +{ + MarkNativeAsOptional("SteamWorks_IsVACEnabled"); + MarkNativeAsOptional("SteamWorks_GetPublicIP"); + MarkNativeAsOptional("SteamWorks_GetPublicIPCell"); + MarkNativeAsOptional("SteamWorks_IsLoaded"); + MarkNativeAsOptional("SteamWorks_SetGameData"); + MarkNativeAsOptional("SteamWorks_SetGameDescription"); + MarkNativeAsOptional("SteamWorks_IsConnected"); + MarkNativeAsOptional("SteamWorks_SetRule"); + MarkNativeAsOptional("SteamWorks_ClearRules"); + MarkNativeAsOptional("SteamWorks_ForceHeartbeat"); + MarkNativeAsOptional("SteamWorks_GetUserGroupStatus"); + MarkNativeAsOptional("SteamWorks_GetUserGroupStatusAuthID"); + + MarkNativeAsOptional("SteamWorks_HasLicenseForApp"); + MarkNativeAsOptional("SteamWorks_HasLicenseForAppId"); + MarkNativeAsOptional("SteamWorks_GetClientSteamID"); + + MarkNativeAsOptional("SteamWorks_RequestStatsAuthID"); + MarkNativeAsOptional("SteamWorks_RequestStats"); + MarkNativeAsOptional("SteamWorks_GetStatCell"); + MarkNativeAsOptional("SteamWorks_GetStatAuthIDCell"); + MarkNativeAsOptional("SteamWorks_GetStatFloat"); + MarkNativeAsOptional("SteamWorks_GetStatAuthIDFloat"); + + MarkNativeAsOptional("SteamWorks_SendMessageToGC"); + + MarkNativeAsOptional("SteamWorks_CreateHTTPRequest"); + MarkNativeAsOptional("SteamWorks_SetHTTPRequestContextValue"); + MarkNativeAsOptional("SteamWorks_SetHTTPRequestNetworkActivityTimeout"); + MarkNativeAsOptional("SteamWorks_SetHTTPRequestHeaderValue"); + MarkNativeAsOptional("SteamWorks_SetHTTPRequestGetOrPostParameter"); + + MarkNativeAsOptional("SteamWorks_SetHTTPCallbacks"); + MarkNativeAsOptional("SteamWorks_SendHTTPRequest"); + MarkNativeAsOptional("SteamWorks_SendHTTPRequestAndStreamResponse"); + MarkNativeAsOptional("SteamWorks_DeferHTTPRequest"); + MarkNativeAsOptional("SteamWorks_PrioritizeHTTPRequest"); + MarkNativeAsOptional("SteamWorks_GetHTTPResponseHeaderSize"); + MarkNativeAsOptional("SteamWorks_GetHTTPResponseHeaderValue"); + MarkNativeAsOptional("SteamWorks_GetHTTPResponseBodySize"); + MarkNativeAsOptional("SteamWorks_GetHTTPResponseBodyData"); + MarkNativeAsOptional("SteamWorks_GetHTTPStreamingResponseBodyData"); + MarkNativeAsOptional("SteamWorks_GetHTTPDownloadProgressPct"); + MarkNativeAsOptional("SteamWorks_SetHTTPRequestRawPostBody"); + MarkNativeAsOptional("SteamWorks_SetHTTPRequestRawPostBodyFromFile"); + + MarkNativeAsOptional("SteamWorks_GetHTTPResponseBodyCallback"); + MarkNativeAsOptional("SteamWorks_WriteHTTPResponseBodyToFile"); +} +#endif diff --git a/scripting/include/morecolors.inc b/scripting/include/morecolors.inc new file mode 100644 index 0000000..3a416d8 --- /dev/null +++ b/scripting/include/morecolors.inc @@ -0,0 +1,674 @@ +// MOAR COLORS +// By Dr. McKay +// Inspired by: https://forums.alliedmods.net/showthread.php?t=96831 + +#if defined _colors_included + #endinput +#endif +#define _colors_included + +#include + +#define MORE_COLORS_VERSION "1.9.1" +#define MAX_MESSAGE_LENGTH 256 +#define MAX_BUFFER_LENGTH (MAX_MESSAGE_LENGTH * 4) + +#define COLOR_RED 0xFF4040 +#define COLOR_BLUE 0x99CCFF +#define COLOR_GRAY 0xCCCCCC +#define COLOR_GREEN 0x3EFF3E + +#define GAME_DODS 0 + +new bool:CSkipList[MAXPLAYERS + 1]; +new Handle:CTrie; +new CTeamColors[][] = {{0xCCCCCC, 0x4D7942, 0xFF4040}}; // Multi-dimensional array for games that don't support SayText2. First index is the game index (as defined by the GAME_ defines), second index is team. 0 = spectator, 1 = team1, 2 = team2 + +/** + * Prints a message to a specific client in the chat area. + * Supports color tags. + * + * @param client Client index. + * @param message Message (formatting rules). + * @noreturn + * + * On error/Errors: If the client is not connected an error will be thrown. + */ +stock CPrintToChat(client, const String:message[], any:...) { + CCheckTrie(); + if(client <= 0 || client > MaxClients) { + ThrowError("Invalid client index %i", client); + } + if(!IsClientInGame(client)) { + ThrowError("Client %i is not in game", client); + } + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + SetGlobalTransTarget(client); + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 3); + CReplaceColorCodes(buffer2); + CSendMessage(client, buffer2); +} + +/** + * Prints a message to all clients in the chat area. + * Supports color tags. + * + * @param client Client index. + * @param message Message (formatting rules). + * @noreturn + */ +stock CPrintToChatAll(const String:message[], any:...) { + CCheckTrie(); + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + for(new i = 1; i <= MaxClients; i++) { + if(!IsClientInGame(i) || CSkipList[i]) { + CSkipList[i] = false; + continue; + } + SetGlobalTransTarget(i); + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 2); + CReplaceColorCodes(buffer2); + CSendMessage(i, buffer2); + } +} + +/** + * Prints a message to a specific client in the chat area. + * Supports color tags and teamcolor tag. + * + * @param client Client index. + * @param author Author index whose color will be used for teamcolor tag. + * @param message Message (formatting rules). + * @noreturn + * + * On error/Errors: If the client or author are not connected an error will be thrown + */ +stock CPrintToChatEx(client, author, const String:message[], any:...) { + CCheckTrie(); + if(client <= 0 || client > MaxClients) { + ThrowError("Invalid client index %i", client); + } + if(!IsClientInGame(client)) { + ThrowError("Client %i is not in game", client); + } + if(author <= 0 || author > MaxClients) { + ThrowError("Invalid client index %i", author); + } + if(!IsClientInGame(author)) { + ThrowError("Client %i is not in game", author); + } + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + SetGlobalTransTarget(client); + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 4); + CReplaceColorCodes(buffer2, author); + CSendMessage(client, buffer2, author); +} + +/** + * Prints a message to all clients in the chat area. + * Supports color tags and teamcolor tag. + * + * @param author Author index whose color will be used for teamcolor tag. + * @param message Message (formatting rules). + * @noreturn + * + * On error/Errors: If the author is not connected an error will be thrown. + */ +stock CPrintToChatAllEx(author, const String:message[], any:...) { + CCheckTrie(); + if(author <= 0 || author > MaxClients) { + ThrowError("Invalid client index %i", author); + } + if(!IsClientInGame(author)) { + ThrowError("Client %i is not in game", author); + } + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + for(new i = 1; i <= MaxClients; i++) { + if(!IsClientInGame(i) || CSkipList[i]) { + CSkipList[i] = false; + continue; + } + SetGlobalTransTarget(i); + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 3); + CReplaceColorCodes(buffer2, author); + CSendMessage(i, buffer2, author); + } +} + +/** + * Sends a SayText2 usermessage + * + * @param client Client to send usermessage to + * @param message Message to send + * @noreturn + */ +stock CSendMessage(client, const String:message[], author=0) { + if(author == 0) { + author = client; + } + decl String:buffer[MAX_MESSAGE_LENGTH], String:game[16]; + GetGameFolderName(game, sizeof(game)); + strcopy(buffer, sizeof(buffer), message); + new UserMsg:index = GetUserMessageId("SayText2"); + if(index == INVALID_MESSAGE_ID) { + if(StrEqual(game, "dod")) { + new team = GetClientTeam(author); + if(team == 0) { + ReplaceString(buffer, sizeof(buffer), "\x03", "\x04", false); // Unassigned gets green + } else { + decl String:temp[16]; + Format(temp, sizeof(temp), "\x07%06X", CTeamColors[GAME_DODS][team - 1]); + ReplaceString(buffer, sizeof(buffer), "\x03", temp, false); + } + } + PrintToChat(client, "%s", buffer); + return; + } + new Handle:buf = StartMessageOne("SayText2", client, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS); + if(GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf) { + PbSetInt(buf, "ent_idx", author); + PbSetBool(buf, "chat", true); + PbSetString(buf, "msg_name", buffer); + PbAddString(buf, "params", ""); + PbAddString(buf, "params", ""); + PbAddString(buf, "params", ""); + PbAddString(buf, "params", ""); + } else { + BfWriteByte(buf, author); // Message author + BfWriteByte(buf, true); // Chat message + BfWriteString(buf, buffer); // Message text + } + EndMessage(); +} + +/** + * This function should only be used right in front of + * CPrintToChatAll or CPrintToChatAllEx. It causes those functions + * to skip the specified client when printing the message. + * After printing the message, the client will no longer be skipped. + * + * @param client Client index + * @noreturn + */ +stock CSkipNextClient(client) { + if(client <= 0 || client > MaxClients) { + ThrowError("Invalid client index %i", client); + } + CSkipList[client] = true; +} + +/** + * Checks if the colors trie is initialized and initializes it if it's not (used internally) + * + * @return No return + */ +stock CCheckTrie() { + if(CTrie == INVALID_HANDLE) { + CTrie = InitColorTrie(); + } +} + +/** + * Replaces color tags in a string with color codes (used internally by CPrintToChat, CPrintToChatAll, CPrintToChatEx, and CPrintToChatAllEx + * + * @param buffer String. + * @param author Optional client index to use for {teamcolor} tags, or 0 for none + * @param removeTags Optional boolean value to determine whether we're replacing tags with colors, or just removing tags, used by CRemoveTags + * @param maxlen Optional value for max buffer length, used by CRemoveTags + * @noreturn + * + * On error/Errors: If the client index passed for author is invalid or not in game. + */ +stock CReplaceColorCodes(String:buffer[], author=0, bool:removeTags=false, maxlen=MAX_BUFFER_LENGTH) { + CCheckTrie(); + if(!removeTags) { + ReplaceString(buffer, maxlen, "{default}", "\x01", false); + } else { + ReplaceString(buffer, maxlen, "{default}", "", false); + ReplaceString(buffer, maxlen, "{teamcolor}", "", false); + } + if(author != 0 && !removeTags) { + if(author < 0 || author > MaxClients) { + ThrowError("Invalid client index %i", author); + } + if(!IsClientInGame(author)) { + ThrowError("Client %i is not in game", author); + } + ReplaceString(buffer, maxlen, "{teamcolor}", "\x03", false); + } + new cursor = 0; + new value; + decl String:tag[32], String:buff[32], String:output[maxlen]; + strcopy(output, maxlen, buffer); + // Since the string's size is going to be changing, output will hold the replaced string and we'll search buffer + + new Handle:regex = CompileRegex("{[a-zA-Z0-9]+}"); + for(new i = 0; i < 1000; i++) { // The RegEx extension is quite flaky, so we have to loop here :/. This loop is supposed to be infinite and broken by return, but conditions have been added to be safe. + if(MatchRegex(regex, buffer[cursor]) < 1) { + CloseHandle(regex); + strcopy(buffer, maxlen, output); + return; + } + GetRegexSubString(regex, 0, tag, sizeof(tag)); + CStrToLower(tag); + cursor = StrContains(buffer[cursor], tag, false) + cursor + 1; + strcopy(buff, sizeof(buff), tag); + ReplaceString(buff, sizeof(buff), "{", ""); + ReplaceString(buff, sizeof(buff), "}", ""); + + if(!GetTrieValue(CTrie, buff, value)) { + continue; + } + + if(removeTags) { + ReplaceString(output, maxlen, tag, "", false); + } else { + Format(buff, sizeof(buff), "\x07%06X", value); + ReplaceString(output, maxlen, tag, buff, false); + } + } + LogError("[MORE COLORS] Infinite loop broken."); +} + +/** + * Gets a part of a string + * + * @param input String to get the part from + * @param output Buffer to write to + * @param maxlen Max length of output buffer + * @param start Position to start at + * @param numChars Number of characters to return, or 0 for the end of the string + * @noreturn + */ +stock CSubString(const String:input[], String:output[], maxlen, start, numChars=0) { + new i = 0; + for(;;) { + if(i == maxlen - 1 || i >= numChars || input[start + i] == '\0') { + output[i] = '\0'; + return; + } + output[i] = input[start + i]; + i++; + } +} + +/** + * Converts a string to lowercase + * + * @param buffer String to convert + * @noreturn + */ +stock CStrToLower(String:buffer[]) { + new len = strlen(buffer); + for(new i = 0; i < len; i++) { + buffer[i] = CharToLower(buffer[i]); + } +} + +/** + * Adds a color to the colors trie + * + * @param name Color name, without braces + * @param color Hexadecimal representation of the color (0xRRGGBB) + * @return True if color was added successfully, false if a color already exists with that name + */ +stock bool:CAddColor(const String:name[], color) { + CCheckTrie(); + new value; + if(GetTrieValue(CTrie, name, value)) { + return false; + } + decl String:newName[64]; + strcopy(newName, sizeof(newName), name); + CStrToLower(newName); + SetTrieValue(CTrie, newName, color); + return true; +} + +/** + * Removes color tags from a message + * + * @param message Message to remove tags from + * @param maxlen Maximum buffer length + * @noreturn + */ +stock CRemoveTags(String:message[], maxlen) { + CReplaceColorCodes(message, 0, true, maxlen); +} + +/** + * Replies to a command with colors + * + * @param client Client to reply to + * @param message Message (formatting rules) + * @noreturn + */ +stock CReplyToCommand(client, const String:message[], any:...) { + decl String:buffer[MAX_BUFFER_LENGTH]; + SetGlobalTransTarget(client); + VFormat(buffer, sizeof(buffer), message, 3); + if(GetCmdReplySource() == SM_REPLY_TO_CONSOLE) { + CRemoveTags(buffer, sizeof(buffer)); + PrintToConsole(client, "%s", buffer); + } else { + CPrintToChat(client, "%s", buffer); + } +} + +/** + * Replies to a command with colors + * + * @param client Client to reply to + * @param author Client to use for {teamcolor} + * @param message Message (formatting rules) + * @noreturn + */ +stock CReplyToCommandEx(client, author, const String:message[], any:...) { + decl String:buffer[MAX_BUFFER_LENGTH]; + SetGlobalTransTarget(client); + VFormat(buffer, sizeof(buffer), message, 4); + if(GetCmdReplySource() == SM_REPLY_TO_CONSOLE) { + CRemoveTags(buffer, sizeof(buffer)); + PrintToConsole(client, "%s", buffer); + } else { + CPrintToChatEx(client, author, "%s", buffer); + } +} + +/** + * Shows admin activity with colors + * + * @param client Client performing an action + * @param message Message (formatting rules) + * @noreturn + */ +stock CShowActivity(client, const String:message[], any:...) { + CCheckTrie(); + if(client < 0 || client > MaxClients) { + ThrowError("Invalid client index %d", client); + } + if(client != 0 && !IsClientInGame(client)) { + ThrowError("Client %d is not in game", client); + } + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 3); + CReplaceColorCodes(buffer2); + ShowActivity(client, "%s", buffer2); +} + +/** + * Shows admin activity with colors + * + * @param client Client performing an action + * @param tag Tag to prepend to the message (color tags supported) + * @param message Message (formatting rules) + * @noreturn + */ +stock CShowActivityEx(client, const String:tag[], const String:message[], any:...) { + CCheckTrie(); + if(client < 0 || client > MaxClients) { + ThrowError("Invalid client index %d", client); + } + if(client != 0 && !IsClientInGame(client)) { + ThrowError("Client %d is not in game", client); + } + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 4); + CReplaceColorCodes(buffer2); + strcopy(buffer, sizeof(buffer), tag); + CReplaceColorCodes(buffer); + ShowActivityEx(client, tag, "%s", buffer2); +} + +/** + * Shows admin activity with colors + * + * @param client Client performing an action + * @param tag Tag to prepend to the message (color tags supported) + * @param message Message (formatting rules) + * @noreturn + */ +stock CShowActivity2(client, const String:tag[], const String:message[], any:...) { + CCheckTrie(); + if(client < 0 || client > MaxClients) { + ThrowError("Invalid client index %d", client); + } + if(client != 0 && !IsClientInGame(client)) { + ThrowError("Client %d is not in game", client); + } + decl String:buffer[MAX_BUFFER_LENGTH], String:buffer2[MAX_BUFFER_LENGTH]; + Format(buffer, sizeof(buffer), "\x01%s", message); + VFormat(buffer2, sizeof(buffer2), buffer, 4); + CReplaceColorCodes(buffer2); + strcopy(buffer, sizeof(buffer), tag); + CReplaceColorCodes(buffer); + ShowActivity2(client, buffer, "%s", buffer2); +} + +/** + * Determines whether a color name exists + * + * @param color The color name to check + * @return True if the color exists, false otherwise + */ +stock bool:CColorExists(const String:color[]) { + CCheckTrie(); + new temp; + return GetTrieValue(CTrie, color, temp); +} + +/** + * Returns the hexadecimal representation of a client's team color (will NOT initialize the trie) + * + * @param client Client to get the team color for + * @return Client's team color in hexadecimal, or green if unknown + * On error/Errors: If the client index passed is invalid or not in game. + */ +stock CGetTeamColor(client) { + if(client <= 0 || client > MaxClients) { + ThrowError("Invalid client index %i", client); + } + if(!IsClientInGame(client)) { + ThrowError("Client %i is not in game", client); + } + new value; + switch(GetClientTeam(client)) { + case 1: { + value = COLOR_GRAY; + } + case 2: { + value = COLOR_RED; + } + case 3: { + value = COLOR_BLUE; + } + default: { + value = COLOR_GREEN; + } + } + return value; +} + +stock Handle:InitColorTrie() { + new Handle:hTrie = CreateTrie(); + SetTrieValue(hTrie, "aliceblue", 0xF0F8FF); + SetTrieValue(hTrie, "allies", 0x4D7942); // same as Allies team in DoD:S + SetTrieValue(hTrie, "ancient", 0xEB4B4B); // same as Ancient item rarity in Dota 2 + SetTrieValue(hTrie, "antiquewhite", 0xFAEBD7); + SetTrieValue(hTrie, "aqua", 0x00FFFF); + SetTrieValue(hTrie, "aquamarine", 0x7FFFD4); + SetTrieValue(hTrie, "arcana", 0xADE55C); // same as Arcana item rarity in Dota 2 + SetTrieValue(hTrie, "axis", 0xFF4040); // same as Axis team in DoD:S + SetTrieValue(hTrie, "azure", 0x007FFF); + SetTrieValue(hTrie, "beige", 0xF5F5DC); + SetTrieValue(hTrie, "bisque", 0xFFE4C4); + SetTrieValue(hTrie, "black", 0x000000); + SetTrieValue(hTrie, "blanchedalmond", 0xFFEBCD); + SetTrieValue(hTrie, "blue", 0x99CCFF); // same as BLU/Counter-Terrorist team color + SetTrieValue(hTrie, "blueviolet", 0x8A2BE2); + SetTrieValue(hTrie, "brown", 0xA52A2A); + SetTrieValue(hTrie, "burlywood", 0xDEB887); + SetTrieValue(hTrie, "cadetblue", 0x5F9EA0); + SetTrieValue(hTrie, "chartreuse", 0x7FFF00); + SetTrieValue(hTrie, "chocolate", 0xD2691E); + SetTrieValue(hTrie, "collectors", 0xAA0000); // same as Collector's item quality in TF2 + SetTrieValue(hTrie, "common", 0xB0C3D9); // same as Common item rarity in Dota 2 + SetTrieValue(hTrie, "community", 0x70B04A); // same as Community item quality in TF2 + SetTrieValue(hTrie, "coral", 0xFF7F50); + SetTrieValue(hTrie, "cornflowerblue", 0x6495ED); + SetTrieValue(hTrie, "cornsilk", 0xFFF8DC); + SetTrieValue(hTrie, "corrupted", 0xA32C2E); // same as Corrupted item quality in Dota 2 + SetTrieValue(hTrie, "crimson", 0xDC143C); + SetTrieValue(hTrie, "cyan", 0x00FFFF); + SetTrieValue(hTrie, "darkblue", 0x00008B); + SetTrieValue(hTrie, "darkcyan", 0x008B8B); + SetTrieValue(hTrie, "darkgoldenrod", 0xB8860B); + SetTrieValue(hTrie, "darkgray", 0xA9A9A9); + SetTrieValue(hTrie, "darkgrey", 0xA9A9A9); + SetTrieValue(hTrie, "darkgreen", 0x006400); + SetTrieValue(hTrie, "darkkhaki", 0xBDB76B); + SetTrieValue(hTrie, "darkmagenta", 0x8B008B); + SetTrieValue(hTrie, "darkolivegreen", 0x556B2F); + SetTrieValue(hTrie, "darkorange", 0xFF8C00); + SetTrieValue(hTrie, "darkorchid", 0x9932CC); + SetTrieValue(hTrie, "darkred", 0x8B0000); + SetTrieValue(hTrie, "darksalmon", 0xE9967A); + SetTrieValue(hTrie, "darkseagreen", 0x8FBC8F); + SetTrieValue(hTrie, "darkslateblue", 0x483D8B); + SetTrieValue(hTrie, "darkslategray", 0x2F4F4F); + SetTrieValue(hTrie, "darkslategrey", 0x2F4F4F); + SetTrieValue(hTrie, "darkturquoise", 0x00CED1); + SetTrieValue(hTrie, "darkviolet", 0x9400D3); + SetTrieValue(hTrie, "deeppink", 0xFF1493); + SetTrieValue(hTrie, "deepskyblue", 0x00BFFF); + SetTrieValue(hTrie, "dimgray", 0x696969); + SetTrieValue(hTrie, "dimgrey", 0x696969); + SetTrieValue(hTrie, "dodgerblue", 0x1E90FF); + SetTrieValue(hTrie, "exalted", 0xCCCCCD); // same as Exalted item quality in Dota 2 + SetTrieValue(hTrie, "firebrick", 0xB22222); + SetTrieValue(hTrie, "floralwhite", 0xFFFAF0); + SetTrieValue(hTrie, "forestgreen", 0x228B22); + SetTrieValue(hTrie, "frozen", 0x4983B3); // same as Frozen item quality in Dota 2 + SetTrieValue(hTrie, "fuchsia", 0xFF00FF); + SetTrieValue(hTrie, "fullblue", 0x0000FF); + SetTrieValue(hTrie, "fullred", 0xFF0000); + SetTrieValue(hTrie, "gainsboro", 0xDCDCDC); + SetTrieValue(hTrie, "genuine", 0x4D7455); // same as Genuine item quality in TF2 + SetTrieValue(hTrie, "ghostwhite", 0xF8F8FF); + SetTrieValue(hTrie, "gold", 0xFFD700); + SetTrieValue(hTrie, "goldenrod", 0xDAA520); + SetTrieValue(hTrie, "gray", 0xCCCCCC); // same as spectator team color + SetTrieValue(hTrie, "grey", 0xCCCCCC); + SetTrieValue(hTrie, "green", 0x3EFF3E); + SetTrieValue(hTrie, "greenyellow", 0xADFF2F); + SetTrieValue(hTrie, "haunted", 0x38F3AB); // same as Haunted item quality in TF2 + SetTrieValue(hTrie, "honeydew", 0xF0FFF0); + SetTrieValue(hTrie, "hotpink", 0xFF69B4); + SetTrieValue(hTrie, "immortal", 0xE4AE33); // same as Immortal item rarity in Dota 2 + SetTrieValue(hTrie, "indianred", 0xCD5C5C); + SetTrieValue(hTrie, "indigo", 0x4B0082); + SetTrieValue(hTrie, "ivory", 0xFFFFF0); + SetTrieValue(hTrie, "khaki", 0xF0E68C); + SetTrieValue(hTrie, "lavender", 0xE6E6FA); + SetTrieValue(hTrie, "lavenderblush", 0xFFF0F5); + SetTrieValue(hTrie, "lawngreen", 0x7CFC00); + SetTrieValue(hTrie, "legendary", 0xD32CE6); // same as Legendary item rarity in Dota 2 + SetTrieValue(hTrie, "lemonchiffon", 0xFFFACD); + SetTrieValue(hTrie, "lightblue", 0xADD8E6); + SetTrieValue(hTrie, "lightcoral", 0xF08080); + SetTrieValue(hTrie, "lightcyan", 0xE0FFFF); + SetTrieValue(hTrie, "lightgoldenrodyellow", 0xFAFAD2); + SetTrieValue(hTrie, "lightgray", 0xD3D3D3); + SetTrieValue(hTrie, "lightgrey", 0xD3D3D3); + SetTrieValue(hTrie, "lightgreen", 0x99FF99); + SetTrieValue(hTrie, "lightpink", 0xFFB6C1); + SetTrieValue(hTrie, "lightsalmon", 0xFFA07A); + SetTrieValue(hTrie, "lightseagreen", 0x20B2AA); + SetTrieValue(hTrie, "lightskyblue", 0x87CEFA); + SetTrieValue(hTrie, "lightslategray", 0x778899); + SetTrieValue(hTrie, "lightslategrey", 0x778899); + SetTrieValue(hTrie, "lightsteelblue", 0xB0C4DE); + SetTrieValue(hTrie, "lightyellow", 0xFFFFE0); + SetTrieValue(hTrie, "lime", 0x00FF00); + SetTrieValue(hTrie, "limegreen", 0x32CD32); + SetTrieValue(hTrie, "linen", 0xFAF0E6); + SetTrieValue(hTrie, "magenta", 0xFF00FF); + SetTrieValue(hTrie, "maroon", 0x800000); + SetTrieValue(hTrie, "mediumaquamarine", 0x66CDAA); + SetTrieValue(hTrie, "mediumblue", 0x0000CD); + SetTrieValue(hTrie, "mediumorchid", 0xBA55D3); + SetTrieValue(hTrie, "mediumpurple", 0x9370D8); + SetTrieValue(hTrie, "mediumseagreen", 0x3CB371); + SetTrieValue(hTrie, "mediumslateblue", 0x7B68EE); + SetTrieValue(hTrie, "mediumspringgreen", 0x00FA9A); + SetTrieValue(hTrie, "mediumturquoise", 0x48D1CC); + SetTrieValue(hTrie, "mediumvioletred", 0xC71585); + SetTrieValue(hTrie, "midnightblue", 0x191970); + SetTrieValue(hTrie, "mintcream", 0xF5FFFA); + SetTrieValue(hTrie, "mistyrose", 0xFFE4E1); + SetTrieValue(hTrie, "moccasin", 0xFFE4B5); + SetTrieValue(hTrie, "mythical", 0x8847FF); // same as Mythical item rarity in Dota 2 + SetTrieValue(hTrie, "navajowhite", 0xFFDEAD); + SetTrieValue(hTrie, "navy", 0x000080); + SetTrieValue(hTrie, "normal", 0xB2B2B2); // same as Normal item quality in TF2 + SetTrieValue(hTrie, "oldlace", 0xFDF5E6); + SetTrieValue(hTrie, "olive", 0x9EC34F); + SetTrieValue(hTrie, "olivedrab", 0x6B8E23); + SetTrieValue(hTrie, "orange", 0xFFA500); + SetTrieValue(hTrie, "orangered", 0xFF4500); + SetTrieValue(hTrie, "orchid", 0xDA70D6); + SetTrieValue(hTrie, "palegoldenrod", 0xEEE8AA); + SetTrieValue(hTrie, "palegreen", 0x98FB98); + SetTrieValue(hTrie, "paleturquoise", 0xAFEEEE); + SetTrieValue(hTrie, "palevioletred", 0xD87093); + SetTrieValue(hTrie, "papayawhip", 0xFFEFD5); + SetTrieValue(hTrie, "peachpuff", 0xFFDAB9); + SetTrieValue(hTrie, "peru", 0xCD853F); + SetTrieValue(hTrie, "pink", 0xFFC0CB); + SetTrieValue(hTrie, "plum", 0xDDA0DD); + SetTrieValue(hTrie, "powderblue", 0xB0E0E6); + SetTrieValue(hTrie, "purple", 0x800080); + SetTrieValue(hTrie, "rare", 0x4B69FF); // same as Rare item rarity in Dota 2 + SetTrieValue(hTrie, "red", 0xFF4040); // same as RED/Terrorist team color + SetTrieValue(hTrie, "rosybrown", 0xBC8F8F); + SetTrieValue(hTrie, "royalblue", 0x4169E1); + SetTrieValue(hTrie, "saddlebrown", 0x8B4513); + SetTrieValue(hTrie, "salmon", 0xFA8072); + SetTrieValue(hTrie, "sandybrown", 0xF4A460); + SetTrieValue(hTrie, "seagreen", 0x2E8B57); + SetTrieValue(hTrie, "seashell", 0xFFF5EE); + SetTrieValue(hTrie, "selfmade", 0x70B04A); // same as Self-Made item quality in TF2 + SetTrieValue(hTrie, "sienna", 0xA0522D); + SetTrieValue(hTrie, "silver", 0xC0C0C0); + SetTrieValue(hTrie, "skyblue", 0x87CEEB); + SetTrieValue(hTrie, "slateblue", 0x6A5ACD); + SetTrieValue(hTrie, "slategray", 0x708090); + SetTrieValue(hTrie, "slategrey", 0x708090); + SetTrieValue(hTrie, "snow", 0xFFFAFA); + SetTrieValue(hTrie, "springgreen", 0x00FF7F); + SetTrieValue(hTrie, "steelblue", 0x4682B4); + SetTrieValue(hTrie, "strange", 0xCF6A32); // same as Strange item quality in TF2 + SetTrieValue(hTrie, "tan", 0xD2B48C); + SetTrieValue(hTrie, "teal", 0x008080); + SetTrieValue(hTrie, "thistle", 0xD8BFD8); + SetTrieValue(hTrie, "tomato", 0xFF6347); + SetTrieValue(hTrie, "turquoise", 0x40E0D0); + SetTrieValue(hTrie, "uncommon", 0xB0C3D9); // same as Uncommon item rarity in Dota 2 + SetTrieValue(hTrie, "unique", 0xFFD700); // same as Unique item quality in TF2 + SetTrieValue(hTrie, "unusual", 0x8650AC); // same as Unusual item quality in TF2 + SetTrieValue(hTrie, "valve", 0xA50F79); // same as Valve item quality in TF2 + SetTrieValue(hTrie, "vintage", 0x476291); // same as Vintage item quality in TF2 + SetTrieValue(hTrie, "violet", 0xEE82EE); + SetTrieValue(hTrie, "wheat", 0xF5DEB3); + SetTrieValue(hTrie, "white", 0xFFFFFF); + SetTrieValue(hTrie, "whitesmoke", 0xF5F5F5); + SetTrieValue(hTrie, "yellow", 0xFFFF00); + SetTrieValue(hTrie, "yellowgreen", 0x9ACD32); + return hTrie; +} \ No newline at end of file diff --git a/scripting/include/stocksoup/version.inc b/scripting/include/stocksoup/version.inc new file mode 100644 index 0000000..22bd104 --- /dev/null +++ b/scripting/include/stocksoup/version.inc @@ -0,0 +1,71 @@ +/** + * Stock functions for game version identification. + */ + +#if defined __stocksoup_version_included + #endinput +#endif + +#define __stocksoup_version_included + +/** + * Returns a StringMap containing key-value entries from steam.inf. + */ +static stock StringMap GetSteamINFData() { + static StringMap s_VersionInfo; + + if (!s_VersionInfo) { + s_VersionInfo = new StringMap(); + + File hSteam = OpenFile("steam.inf", "r"); + + char buffer[32]; + while (hSteam.ReadLine(buffer, sizeof(buffer))) { + int assign = FindCharInString(buffer, '='); + if (assign != -1) { + // copy everything up to equals sign + char[] key = new char[assign + 1]; + strcopy(key, assign + 1, buffer); + + s_VersionInfo.SetString(key, buffer[assign + 1]); + } + } + + delete hSteam; + } + + return s_VersionInfo; +} + +stock int GetNetworkPatchVersion() { + char buffer[16]; + if (GetSteamINFData().GetString("PatchVersion", buffer, sizeof(buffer))) { + return StringToInt(buffer); + } + return 0; +} + +stock int GetApplicationClientVersion() { + char buffer[16]; + if (GetSteamINFData().GetString("ClientVersion", buffer, sizeof(buffer))) { + return StringToInt(buffer); + } + return 0; +} + +stock int GetApplicationServerVersion() { + char buffer[16]; + if (GetSteamINFData().GetString("ServerVersion", buffer, sizeof(buffer))) { + return StringToInt(buffer); + } + return 0; +} + +stock int GetAppID() { + char buffer[16]; + if (GetSteamINFData().GetString("appID", buffer, sizeof(buffer))) { + return StringToInt(buffer); + } + return 0; +} + diff --git a/scripting/profilestatus.sp b/scripting/profilestatus.sp new file mode 100644 index 0000000..ef793d2 --- /dev/null +++ b/scripting/profilestatus.sp @@ -0,0 +1,640 @@ +#include +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +#define PLUGIN_VERSION "2.1" + +public Plugin myinfo = { + + name = "[ANY] Profile Status", + author = "ratawar", + description = "Limits server entrance to players based on game playtime or VAC/Steam Bans status.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/member.php?u=282996" +}; + +/* Global Handles */ + +ConVar + g_cvEnable, + g_cvApiKey; +ConVar + g_cvDatabase; +ConVar + g_cvEnableHourCheck, + g_cvMinHours, + g_cvWhitelist; +ConVar + g_cvEnableBanDetection, + g_cvVACDays, + g_cvVACAmount, + g_cvCommunityBan, + g_cvGameBans, + g_cvEconomyBan; + +Regex + r_ApiKey, + r_SteamID; + +Database +g_Database; + +/* Global Variables */ + +char + cAPIKey[64], + cvDatabase[16], + EcBan[10]; + +int iMinHours, + iVACDays, + iVACAmount, + iGameBans, + iEconomyBan; + +/* On Plugin Start */ + +public void OnPluginStart() { + + /* Plugin Version */ + CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); + + /* Basic Data */ + g_cvEnable = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); + + /* Database Name */ + g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Hour Check module's database name. Change this value only if you're using another database. (Only SQLite supported.)"); + + /* Hour Check Module */ + g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); + g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + + /* Ban Check Module */ + g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); + g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); + g_cvCommunityBan = CreateConVar("sm_profilestatus_community_ban", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); + g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); + g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", + "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state.", + _, true, 1.0, true, 2.0); + + /* RegEx */ + r_ApiKey = CompileRegex("^[0-9A-Z]*$"); + r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Generic Hour Check command."); + + LoadTranslations("profilestatus.phrases"); + + AutoExecConfig(true, "ProfileStatus"); + +} + +public void OnConfigsExecuted() { + + /* Global CVAR Assigns */ + + g_cvApiKey.GetString(cAPIKey, sizeof(cAPIKey)); + g_cvDatabase.GetString(cvDatabase, sizeof(cvDatabase)); + + iMinHours = g_cvMinHours.IntValue; + iVACDays = g_cvVACDays.IntValue; + iVACAmount = g_cvVACAmount.IntValue; + iGameBans = g_cvGameBans.IntValue; + iEconomyBan = g_cvEconomyBan.IntValue; + + /* Global CVAR Checks */ + + if (!g_cvEnable.BoolValue) + SetFailState("[PS] Plugin disabled!"); + + if (!IsAPIKeyCorrect()) + SetFailState("[PS] Please set your Steam API Key properly!"); + + if (g_cvEnableHourCheck.BoolValue) + Database.Connect(SQL_ConnectDatabase, "storage-local"); + else + PrintToServer("[PS] Hours Check module disabled! Aborting database connection."); + + if (!g_cvEnableBanDetection.BoolValue) + PrintToServer("[PS] Ban Detection module disabled!"); + +} + +/* Database connection and tables creation */ + +public void SQL_ConnectDatabase(Database db, const char[] error, any data) { + + if (db == null) + { + LogError("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + PrintToServer("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + return; + } + + PrintToServer("[PS] Database connection to \"%s\" successful!", cvDatabase); + g_Database = db; + CreateTable(); +} + +public void CreateTable() { + + char sQuery[1024] = ""; + StrCat(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS ps_whitelist("); + StrCat(sQuery, sizeof(sQuery), "entry INTEGER PRIMARY KEY, "); + StrCat(sQuery, sizeof(sQuery), "steamid VARCHAR(17), "); + StrCat(sQuery, sizeof(sQuery), "unique (steamid));"); + g_Database.Query(SQL_CreateTable, sQuery); +} + +public void SQL_CreateTable(Database db, DBResultSet results, const char[] error, any data) { + + if (db == null || results == null) + { + LogError("[PS] Create Table Query failure! %s", error); + PrintToServer("[PS] Create Table Query failure! %s", error); + return; + } + + PrintToServer("[PS] Tables successfully created or were already created!"); +} + +/* Hour Check Module */ + +public void QueryDBForClient(int client, char[] auth) { + + char WhitelistReadQuery[512]; + Format(WhitelistReadQuery, sizeof(WhitelistReadQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + pack.WriteCell(client); + + g_Database.Query(SQL_QueryDBForClient, WhitelistReadQuery, pack); +} + +public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + int client = pack.ReadCell(); + delete pack; + + if (db == null || results == null) { + LogError("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + PrintToServer("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + return; + } + + char logResponse[128]; + Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); + + if (!g_cvWhitelist.BoolValue) + Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); + + if (!results.RowCount) { + PrintToServer("%s", logResponse); + RequestHours(client, auth); + return; + } + + PrintToServer("[PS] User %s is whitelisted!", auth); +} + +void RequestHours(int client, char[] auth) { + + Handle request = CreateRequest_RequestHours(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestHours(int client, char[] auth) { + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", cAPIKey, GetAppID(), auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestHours_OnHTTPResponse); + return request; +} + +public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Hours Request failure!"); + delete request; + return; + } + + int bufferSize; + + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + + char[] responseBody = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBody, bufferSize); + delete request; + + int playedTime = GetPlayerHours(responseBody); + int totalPlayedTime = playedTime / 60; + + PrintToServer("hours %i", GetPlayerHours(responseBody) / 60); + + if (!totalPlayedTime) { + KickClient(client, "%t", "Invisible Hours"); + return; + } + + if (totalPlayedTime < iMinHours) { + KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, iMinHours); + return; + } + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvWhitelist.BoolValue) + AddPlayerToWhitelist(auth); +} + +public void AddPlayerToWhitelist(char[] auth) { + + char WhitelistWriteQuery[512]; + Format(WhitelistWriteQuery, sizeof(WhitelistWriteQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + + g_Database.Query(SQL_AddPlayerToWhitelist, WhitelistWriteQuery, pack); +} + +public void SQL_AddPlayerToWhitelist(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + delete pack; + + if (db == null || results == null) + { + LogError("[PS] Error while trying to whitelist user %s! %s", auth, error); + PrintToServer("[PS] Error while trying to whitelist user %s! %s", auth, error); + return; + } + + PrintToServer("[PS] Player %s successfully whitelisted!", auth); +} + +public Action Command_Generic(int client, int args) { + + char arg1[30], arg2[30]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); + + if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")) { + CReplyToCommand(client, "%t", "Command Generic Usage"); + return Plugin_Handled; + } + + if (!MatchRegex(r_SteamID, arg2)) { + CReplyToCommand(client, "%t", "Invalid STEAMID"); + return Plugin_Handled; + } + + Command(arg1, arg2, client); + return Plugin_Handled; +} + +public void Command(char[] arg1, char[] arg2, int client) { + + char query[256]; + + if (StrEqual(arg1, "add")) + Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); + if (StrEqual(arg1, "remove")) + Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); + if (StrEqual(arg1, "check")) + Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); + + DataPack pack = new DataPack(); + + pack.WriteCell(client); + pack.WriteString(arg1); + pack.WriteString(arg2); + + g_Database.Query(SQL_Command, query, pack); + +} + +public void SQL_Command(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + int client = pack.ReadCell(); + char arg1[30], arg2[30]; + pack.ReadString(arg1, sizeof(arg1)); + pack.ReadString(arg2, sizeof(arg2)); + delete pack; + + if (StrEqual(arg1, "add")) { + + if (db == null) { + + LogError("[PS] Error while issuing add command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); + return; + } + + if (results == null) { + CPrintToChat(client, "%t", "Nothing Added", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Added", arg2); + return; + } + + if (StrEqual(arg1, "remove")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); + return; + } + + if (!results.AffectedRows) { + CPrintToChat(client, "%t", "Nothing Removed", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Removed", arg2); + return; + } + + if (StrEqual(arg1, "check")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing check command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); + return; + } + + if (!results.RowCount) { + CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); + return; + } + + CPrintToChat(client, "%t", "Check Whitelisted", arg2); + return; + } + +} + +int GetPlayerHours(char[] responseBody) { + + char str[8][64]; + + ExplodeString(responseBody, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 8; i++) { + + if (StrContains(str[i], "playtime_forever") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +/* Ban Check Module */ + +void RequestBans(int client, char[] auth) { + + Handle request = CreateRequest_RequestBans(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestBans(int client, char[] auth) { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/ISteamUser/GetPlayerBans/v1?key=%s&steamids=%s", apikey, auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestBans_OnHTTPResponse); + return request; +} + +public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Bans Request failure!"); + delete request; + return; + } + + int bufferSize; + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + char[] responseBodyBans = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBodyBans, bufferSize); + delete request; + + if (g_cvEnableBanDetection.BoolValue) { + + if (IsVACBanned(responseBodyBans)) { + + if (!GetDaysSinceLastVAC(responseBodyBans) || !GetVACAmount(responseBodyBans)) + KickClient(client, "%t", "VAC Kicked"); + else if (GetDaysSinceLastVAC(responseBodyBans) < iVACDays) + KickClient(client, "%t", "VAC Kicked Days", iVACDays); + else if (GetVACAmount(responseBodyBans) > iVACAmount) + KickClient(client, "%t", "VAC Kicked Amount", iVACAmount); + } + + if (IsCommunityBanned(responseBodyBans)) + if (g_cvCommunityBan.BoolValue) + KickClient(client, "%t", "Community Ban Kicked"); + + if (GetGameBans(responseBodyBans) > iGameBans) + KickClient(client, "%t", "Game Bans Exceeded", iGameBans); + + GetEconomyBans(responseBodyBans); + + if (iEconomyBan == 1) + if (StrContains(EcBan, "banned", false) != -1) + KickClient(client, "%t", "Economy Ban Kicked"); + if (iEconomyBan == 2) + if (StrContains(EcBan, "banned", false) != -1 || StrContains(EcBan, "probation", false) != -1) + KickClient(client, "%t", "Economy Ban/Prob Kicked"); + + } + +} + +int GetDaysSinceLastVAC(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "DaysSinceLastBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetVACAmount(char[] responseBodyBans) { + + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfVACBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetGameBans(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfGameBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +bool IsVACBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "VACBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +bool IsCommunityBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "CommunityBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +void GetEconomyBans(char[] responseBodyBans) { + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "EconomyBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + strcopy(EcBan, 15, str2[1]); + + } + } + +} + +/* On Client Authorized */ + +public void OnClientAuthorized(int client) { + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvEnableHourCheck.BoolValue) + QueryDBForClient(client, auth); + + if (g_cvEnableBanDetection.BoolValue) + RequestBans(client, auth); + +} + +/* Extra Checks */ + +bool IsAPIKeyCorrect() { + + if (cAPIKey[0] == '\0') + return false; + else if (MatchRegex(r_ApiKey, cAPIKey) == 0) + return false; + + return true; +} \ No newline at end of file diff --git a/scripting/swag.sp b/scripting/swag.sp new file mode 100644 index 0000000..840078c --- /dev/null +++ b/scripting/swag.sp @@ -0,0 +1,112 @@ +/* + This file is part of SourcePawn SteamWorks. + + SourcePawn SteamWorks is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, as per version 3 of the License. + + SourcePawn SteamWorks is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with SourcePawn SteamWorks. If not, see . + + Author: Kyle Sanderson (KyleS). +*/ + +#pragma semicolon 1 +#include +#include + +new Handle:g_hSteamServersConnected = INVALID_HANDLE; +new Handle:g_hSteamServersDisconnected = INVALID_HANDLE; + +public Plugin:myinfo = { + name = "SteamWorks Additive Glider", /* SWAG */ + author = "Kyle Sanderson", + description = "Translates SteamTools calls into SteamWorks calls.", + version = "1.0", + url = "http://AlliedMods.net" +}; + +public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) +{ + CreateNative("Steam_IsVACEnabled", native_IsVACEnabled); + CreateNative("Steam_GetPublicIP", native_GetPublicIP); + CreateNative("Steam_SetGameDescription", native_SetGameDescription); + CreateNative("Steam_IsConnected", native_IsConnected); + CreateNative("Steam_SetRule", native_SetRule); + CreateNative("Steam_ClearRules", native_ClearRules); + CreateNative("Steam_ForceHeartbeat", native_ForceHeartbeat); + + g_hSteamServersConnected = CreateGlobalForward("Steam_SteamServersConnected", ET_Ignore); + g_hSteamServersDisconnected = CreateGlobalForward("Steam_SteamServersDisconnected", ET_Ignore); + return APLRes_Success; +} + +public native_IsVACEnabled(Handle:plugin, numParams) +{ + return SteamWorks_IsVACEnabled(); +} + +public native_GetPublicIP(Handle:plugin, numParams) +{ + new addr[4]; + SteamWorks_GetPublicIP(addr); + SetNativeArray(1, addr, sizeof(addr)); + return 1; +} + +public native_SetGameDescription(Handle:plugin, numParams) +{ + decl String:sDesc[PLATFORM_MAX_PATH]; + GetNativeString(1, sDesc, sizeof(sDesc)); + return SteamWorks_SetGameDescription(sDesc); +} + +public native_IsConnected(Handle:plugin, numParams) +{ + return SteamWorks_IsConnected(); +} + +public native_SetRule(Handle:plugin, numParams) +{ + decl String:sKey[PLATFORM_MAX_PATH], String:sValue[PLATFORM_MAX_PATH]; + GetNativeString(1, sKey, sizeof(sKey)); + GetNativeString(2, sValue, sizeof(sValue)); + return SteamWorks_SetRule(sKey, sValue); +} + +public native_ClearRules(Handle:plugin, numParams) +{ + return SteamWorks_ClearRules(); +} + +public native_ForceHeartbeat(Handle:plugin, numParams) +{ + return SteamWorks_ForceHeartbeat(); +} + +public SteamWorks_SteamServersConnected() +{ + if (GetForwardFunctionCount(g_hSteamServersConnected) == 0) + { + return; + } + + Call_StartForward(g_hSteamServersConnected); + Call_Finish(); +} + +public SteamWorks_SteamServersDisconnected() +{ + if (GetForwardFunctionCount(g_hSteamServersDisconnected) == 0) + { + return; + } + + Call_StartForward(g_hSteamServersDisconnected); + Call_Finish(); +} diff --git a/shit/.gitignore b/shit/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/profilestatus-updater.txt b/shit/profilestatus-updater.txt similarity index 100% rename from profilestatus-updater.txt rename to shit/profilestatus-updater.txt diff --git a/profilestatus.phrases.txt b/shit/profilestatus.phrases.txt similarity index 100% rename from profilestatus.phrases.txt rename to shit/profilestatus.phrases.txt diff --git a/profilestatus.smx b/shit/profilestatus.smx similarity index 100% rename from profilestatus.smx rename to shit/profilestatus.smx diff --git a/profilestatus.sp b/shit/profilestatus.sp similarity index 100% rename from profilestatus.sp rename to shit/profilestatus.sp diff --git a/profilestatus_testing.sp b/shit/profilestatus_testing.sp similarity index 96% rename from profilestatus_testing.sp rename to shit/profilestatus_testing.sp index cbeb716..ff31435 100644 --- a/profilestatus_testing.sp +++ b/shit/profilestatus_testing.sp @@ -1,495 +1,495 @@ -#include -#include -#include -#include - -#pragma semicolon 1 -#pragma newdecls required - -#define PLUGIN_VERSION "2.0" - -public Plugin myinfo = { - - name = "[ANY] Profile Status", - author = "ratawar", - description = "Limits server entrance to players based on game playtime or VAC/Steam Bans status.", - version = PLUGIN_VERSION, - url = "https://forums.alliedmods.net/member.php?u=282996" -}; - -/* Global Handles */ - -ConVar - g_cvEnabled, - g_cvApiKey; -ConVar - g_cvDatabase; -ConVar - g_cvEnableHourCheck, - g_cvMinHours, - g_cvWhitelist; -ConVar - g_cvEnableBanDetection, - g_cvVACDays, - g_cvVACAmount, - g_cvCommunityBan, - g_cvGameBans, - g_cvEconomyBan; - -Regex - r_Numbers, - r_ApiKey, - r_SteamID; - -Database -g_Database; - -/* Global Variables */ - -char - cAPIKey[64], - cvDatabase[16], - EcBan[10]; - -int iMinHours, - iVACDays, - iVACAmount, - iGameBans, - iEconomyBan; - -/* On Plugin Start */ - -public void OnPluginStart() { - - /* Plugin Version */ - CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); - - /* Basic Data */ - g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); - - /* Database Name */ - g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Hour Check module's database name. Change this value only if you're using another database. (Only SQLite supported.)"); - - /* Hour Check Module */ - g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); - g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - - /* Ban Check Module */ - g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); - g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); - g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); - g_cvCommunityBan = CreateConVar("sm_profilestatus_community_ban", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); - g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); - g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", - "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state.", - _, true, 1.0, true, 2.0); - - /* RegEx */ - r_Numbers = CompileRegex("^[0-9]*$"); - r_ApiKey = CompileRegex("^[0-9A-Z]*$"); - r_SteamID = CompileRegex("^7656119[0-9]{10}$"); - - /* Global CVAR Assigns */ - - g_cvApiKey.GetString(cAPIKey, sizeof(cAPIKey)); - - g_cvDatabase.GetString(cvDatabase, sizeof(cvDatabase)); - - iMinHours = g_cvMinHours.IntValue; - iVACDays = g_cvVACDays.IntValue; - iVACAmount = g_cvVACAmount.IntValue; - iGameBans = g_cvGameBans.IntValue; - iEconomyBan = g_cvEconomyBan.IntValue; - - RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Generic Hour Check command."); - - LoadTranslations("profilestatus.phrases"); - - AutoExecConfig(true, "ProfileStatus"); - -} - -/* On Map Start */ - -public void OnMapStart() { - - if (!AreCvarsNumeric()) - SetFailState("[PS] Please configure all cvars properly!"); - - if (!g_cvEnabled.BoolValue) - SetFailState("[PS] Plugin disabled!"); - - if (!IsAPIKeyCorrect()) - SetFailState("[PS] Please set your Steam API Key properly!"); - - if (g_cvEnableHourCheck.BoolValue) - Database.Connect(SQL_ConnectDatabase, "storage-local"); - else - PrintToServer("[PS] Hours Check module disabled! Aborting database connection."); - - if (!g_cvEnableBanDetection.BoolValue) - PrintToServer("[PS] Ban Detection module disabled!"); - -} - -/* Database connection and tables creation */ - -public void SQL_ConnectDatabase(Database db, const char[] error, any data) { - - if (db == null) - { - LogError("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); - PrintToServer("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); - return; - } - - PrintToServer("[PS] Database connection to \"%s\" successful!", cvDatabase); - g_Database = db; - CreateTable(); -} - -public void CreateTable() { - - char sQuery[1024] = ""; - StrCat(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS ps_whitelist("); - StrCat(sQuery, sizeof(sQuery), "entry INTEGER PRIMARY KEY, "); - StrCat(sQuery, sizeof(sQuery), "steamid VARCHAR(17), "); - StrCat(sQuery, sizeof(sQuery), "unique (steamid));"); - g_Database.Query(SQL_CreateTable, sQuery); -} - -public void SQL_CreateTable(Database db, DBResultSet results, const char[] error, any data) { - - if (db == null || results == null) - { - LogError("[PS] Create Table Query failure! %s", error); - PrintToServer("[PS] Create Table Query failure! %s", error); - return; - } - - PrintToServer("[PS] Tables successfully created or were already created!"); -} - -/* Hour Check Module */ - -public void QueryDBForClient(int client, char[] auth) { - - char WhitelistReadQuery[512]; - Format(WhitelistReadQuery, sizeof(WhitelistReadQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", auth); - - DataPack pack = new DataPack(); - pack.WriteString(auth); - pack.WriteCell(client); - - g_Database.Query(SQL_QueryDBForClient, WhitelistReadQuery, pack); -} - -public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); - int client = pack.ReadCell(); - delete pack; - - if (db == null || results == null) { - LogError("[PS] Error while checking if user %s is whitelisted! %s", auth, error); - PrintToServer("[PS] Error while checking if user %s is whitelisted! %s", auth, error); - return; - } - - char logResponse[128]; - Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); - - if (!g_cvWhitelist.BoolValue) - Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); - - if (!results.RowCount) { - PrintToServer("%s", logResponse); - RequestHours(client, auth); - return; - } - - PrintToServer("[PS] User %s is whitelisted!", auth); -} - -void RequestHours(int client, char[] auth) { - - Handle request = CreateRequest_RequestHours(client, auth); - SteamWorks_SendHTTPRequest(request); - -} - -Handle CreateRequest_RequestHours(int client, char[] auth) { - - char request_url[512]; - - Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", cAPIKey, GetAppID(), auth); - Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); - - SteamWorks_SetHTTPRequestContextValue(request, client); - SteamWorks_SetHTTPCallbacks(request, RequestHours_OnHTTPResponse); - return request; -} - -public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { - - if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { - PrintToServer("[PS] HTTP Hours Request failure!"); - delete request; - return; - } - - int bufferSize; - - SteamWorks_GetHTTPResponseBodySize(request, bufferSize); - - char[] responseBody = new char[bufferSize]; - SteamWorks_GetHTTPResponseBodyData(request, responseBody, bufferSize); - delete request; - - int playedTime = GetPlayerHours(responseBody); - int totalPlayedTime = playedTime / 60; - - PrintToServer("hours %i", GetPlayerHours(responseBody) / 60); - - if (!totalPlayedTime) { - KickClient(client, "%t", "Invisible Hours"); - return; - } - - if (totalPlayedTime < iMinHours) { - KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, iMinHours); - return; - } - - char auth[40]; - GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); - - if (g_cvWhitelist.BoolValue) - AddPlayerToWhitelist(auth); -} - -public void AddPlayerToWhitelist(char[] auth) { - - char WhitelistWriteQuery[512]; - Format(WhitelistWriteQuery, sizeof(WhitelistWriteQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", auth); - - DataPack pack = new DataPack(); - pack.WriteString(auth); - - g_Database.Query(SQL_AddPlayerToWhitelist, WhitelistWriteQuery, pack); -} - -public void SQL_AddPlayerToWhitelist(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - char auth[40]; - pack.ReadString(auth, sizeof(auth)); - delete pack; - - if (db == null || results == null) - { - LogError("[PS] Error while trying to whitelist user %s! %s", auth, error); - PrintToServer("[PS] Error while trying to whitelist user %s! %s", auth, error); - return; - } - - PrintToServer("[PS] Player %s successfully whitelisted!", auth); -} - -public Action Command_Generic(int client, int args) { - - char arg1[30], arg2[30]; - GetCmdArg(1, arg1, sizeof(arg1)); - GetCmdArg(2, arg2, sizeof(arg2)); - - if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")) { - CReplyToCommand(client, "%t", "Command Generic Usage"); - return Plugin_Handled; - } - - if (!MatchRegex(r_SteamID, arg2)) { - CReplyToCommand(client, "%t", "Invalid STEAMID"); - return Plugin_Handled; - } - - Command(arg1, arg2, client); - return Plugin_Handled; -} - -public void Command(char[] arg1, char[] arg2, int client) { - - char query[256]; - - if (StrEqual(arg1, "add")) - Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); - if (StrEqual(arg1, "remove")) - Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); - if (StrEqual(arg1, "check")) - Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); - - DataPack pack = new DataPack(); - - pack.WriteCell(client); - pack.WriteString(arg1); - pack.WriteString(arg2); - - g_Database.Query(SQL_Command, query, pack); - -} - -public void SQL_Command(Database db, DBResultSet results, const char[] error, DataPack pack) { - - pack.Reset(); - int client = pack.ReadCell(); - char arg1[30], arg2[30]; - pack.ReadString(arg1, sizeof(arg1)); - pack.ReadString(arg2, sizeof(arg2)); - delete pack; - - if (StrEqual(arg1, "add")) { - - if (db == null) { - - LogError("[PS] Error while issuing add command on %s! %s", arg2, error); - PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); - CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); - return; - } - - if (results == null) { - CPrintToChat(client, "%t", "Nothing Added", arg2); - return; - } - - CPrintToChat(client, "%t", "Successfully Added", arg2); - return; - } - - if (StrEqual(arg1, "remove")) { - - if (db == null || results == null) - { - LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); - PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); - CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); - return; - } - - if (!results.AffectedRows) { - CPrintToChat(client, "%t", "Nothing Removed", arg2); - return; - } - - CPrintToChat(client, "%t", "Successfully Removed", arg2); - return; - } - - if (StrEqual(arg1, "check")) { - - if (db == null || results == null) - { - LogError("[PS] Error while issuing check command on %s! %s", arg2, error); - PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); - CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); - return; - } - - if (!results.RowCount) { - CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); - return; - } - - CPrintToChat(client, "%t", "Check Whitelisted", arg2); - return; - } - -} - -int GetPlayerHours(char[] responseBody) { - - char str[8][64]; - - ExplodeString(responseBody, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 8; i++) { - - if (StrContains(str[i], "playtime_forever") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return StringToInt((str2[1])); - - } - } - return -1; -} - -/* Ban Check Module */ - -void RequestBans(int client, char[] auth) { - - Handle request = CreateRequest_RequestBans(client, auth); - SteamWorks_SendHTTPRequest(request); - -} - -Handle CreateRequest_RequestBans(int client, char[] auth) { - - char apikey[40]; - GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); - - char request_url[512]; - - Format(request_url, sizeof(request_url), "http://api.steampowered.com/ISteamUser/GetPlayerBans/v1?key=%s&steamids=%s", apikey, auth); - Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); - - SteamWorks_SetHTTPRequestContextValue(request, client); - SteamWorks_SetHTTPCallbacks(request, RequestBans_OnHTTPResponse); - return request; -} - -public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { - - if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { - PrintToServer("[PS] HTTP Bans Request failure!"); - delete request; - return; - } - - int bufferSize; - SteamWorks_GetHTTPResponseBodySize(request, bufferSize); - char[] responseBodyBans = new char[bufferSize]; - SteamWorks_GetHTTPResponseBodyData(request, responseBodyBans, bufferSize); - delete request; - - if (g_cvEnableBanDetection.BoolValue) { - - if (IsVACBanned(responseBodyBans)) { - - if (!GetDaysSinceLastVAC(responseBodyBans) || !GetVACAmount(responseBodyBans)) - KickClient(client, "%t", "VAC Kicked"); - else if (GetDaysSinceLastVAC(responseBodyBans) < iVACDays) - KickClient(client, "%t", "VAC Kicked Days", iVACDays); - else if (GetVACAmount(responseBodyBans) > iVACAmount) - KickClient(client, "%t", "VAC Kicked Amount", iVACAmount); - } - +#include +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +#define PLUGIN_VERSION "2.0" + +public Plugin myinfo = { + + name = "[ANY] Profile Status", + author = "ratawar", + description = "Limits server entrance to players based on game playtime or VAC/Steam Bans status.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/member.php?u=282996" +}; + +/* Global Handles */ + +ConVar + g_cvEnabled, + g_cvApiKey; +ConVar + g_cvDatabase; +ConVar + g_cvEnableHourCheck, + g_cvMinHours, + g_cvWhitelist; +ConVar + g_cvEnableBanDetection, + g_cvVACDays, + g_cvVACAmount, + g_cvCommunityBan, + g_cvGameBans, + g_cvEconomyBan; + +Regex + r_Numbers, + r_ApiKey, + r_SteamID; + +Database +g_Database; + +/* Global Variables */ + +char + cAPIKey[64], + cvDatabase[16], + EcBan[10]; + +int iMinHours, + iVACDays, + iVACAmount, + iGameBans, + iEconomyBan; + +/* On Plugin Start */ + +public void OnPluginStart() { + + /* Plugin Version */ + CreateConVar("sm_profilestatus_version", PLUGIN_VERSION, "Plugin version.", FCVAR_REPLICATED | FCVAR_NOTIFY | FCVAR_DONTRECORD); + + /* Basic Data */ + g_cvEnabled = CreateConVar("sm_profilestatus_enable", "1", "Enable the plugin?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvApiKey = CreateConVar("sm_profilestatus_apikey", "", "Your Steam API key (https://steamcommunity.com/dev/apikey).", FCVAR_PROTECTED); + + /* Database Name */ + g_cvDatabase = CreateConVar("sm_profilestatus_database", "storage-local", "Hour Check module's database name. Change this value only if you're using another database. (Only SQLite supported.)"); + + /* Hour Check Module */ + g_cvEnableHourCheck = CreateConVar("sm_profilestatus_hourcheck_enable", "1", "Enable Hour Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvMinHours = CreateConVar("sm_profilestatus_minhours", "", "Minimum of hours requiered to enter the server."); + g_cvWhitelist = CreateConVar("sm_profilestatus_whitelist", "1", "Whitelist members that have been checked automatically?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + + /* Ban Check Module */ + g_cvEnableBanDetection = CreateConVar("sm_profilestatus_bans_enable", "1", "Enable Ban Checking functions?", FCVAR_NOTIFY, true, 0.0, true, 1.0); + g_cvVACDays = CreateConVar("sm_profilestatus_vac_days", "0", "Minimum days since the last VAC ban to be allowed into the server (0 for zero tolerance)."); + g_cvVACAmount = CreateConVar("sm_profilestatus_vac_amount", "0", "Amount of VAC bans tolerated until prohibition (0 for zero tolerance)."); + g_cvCommunityBan = CreateConVar("sm_profilestatus_community_ban", "0", "0- Don't kick if there's a community ban | 1- Kick if there's a community ban"); + g_cvGameBans = CreateConVar("sm_profilestatus_game_bans", "5", "Amount of game bans tolerated until prohibition (0 for zero tolerance)."); + g_cvEconomyBan = CreateConVar("sm_profilestatus_economy_bans", "0", + "0- Don't check for economy bans | 1- Kick if user is economy \"banned\" only. | 2- Kick if user is in either \"banned\" or \"probation\" state.", + _, true, 1.0, true, 2.0); + + /* RegEx */ + r_Numbers = CompileRegex("^[0-9]*$"); + r_ApiKey = CompileRegex("^[0-9A-Z]*$"); + r_SteamID = CompileRegex("^7656119[0-9]{10}$"); + + /* Global CVAR Assigns */ + + g_cvApiKey.GetString(cAPIKey, sizeof(cAPIKey)); + + g_cvDatabase.GetString(cvDatabase, sizeof(cvDatabase)); + + iMinHours = g_cvMinHours.IntValue; + iVACDays = g_cvVACDays.IntValue; + iVACAmount = g_cvVACAmount.IntValue; + iGameBans = g_cvGameBans.IntValue; + iEconomyBan = g_cvEconomyBan.IntValue; + + RegAdminCmd("sm_ps", Command_Generic, ADMFLAG_GENERIC, "Generic Hour Check command."); + + LoadTranslations("profilestatus.phrases"); + + AutoExecConfig(true, "ProfileStatus"); + +} + +/* On Map Start */ + +public void OnMapStart() { + + if (!AreCvarsNumeric()) + SetFailState("[PS] Please configure all cvars properly!"); + + if (!g_cvEnabled.BoolValue) + SetFailState("[PS] Plugin disabled!"); + + if (!IsAPIKeyCorrect()) + SetFailState("[PS] Please set your Steam API Key properly!"); + + if (g_cvEnableHourCheck.BoolValue) + Database.Connect(SQL_ConnectDatabase, "storage-local"); + else + PrintToServer("[PS] Hours Check module disabled! Aborting database connection."); + + if (!g_cvEnableBanDetection.BoolValue) + PrintToServer("[PS] Ban Detection module disabled!"); + +} + +/* Database connection and tables creation */ + +public void SQL_ConnectDatabase(Database db, const char[] error, any data) { + + if (db == null) + { + LogError("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + PrintToServer("[PS] Could not connect to database %s! Error: %s", cvDatabase, error); + return; + } + + PrintToServer("[PS] Database connection to \"%s\" successful!", cvDatabase); + g_Database = db; + CreateTable(); +} + +public void CreateTable() { + + char sQuery[1024] = ""; + StrCat(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS ps_whitelist("); + StrCat(sQuery, sizeof(sQuery), "entry INTEGER PRIMARY KEY, "); + StrCat(sQuery, sizeof(sQuery), "steamid VARCHAR(17), "); + StrCat(sQuery, sizeof(sQuery), "unique (steamid));"); + g_Database.Query(SQL_CreateTable, sQuery); +} + +public void SQL_CreateTable(Database db, DBResultSet results, const char[] error, any data) { + + if (db == null || results == null) + { + LogError("[PS] Create Table Query failure! %s", error); + PrintToServer("[PS] Create Table Query failure! %s", error); + return; + } + + PrintToServer("[PS] Tables successfully created or were already created!"); +} + +/* Hour Check Module */ + +public void QueryDBForClient(int client, char[] auth) { + + char WhitelistReadQuery[512]; + Format(WhitelistReadQuery, sizeof(WhitelistReadQuery), "SELECT * FROM ps_whitelist WHERE steamid='%s';", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + pack.WriteCell(client); + + g_Database.Query(SQL_QueryDBForClient, WhitelistReadQuery, pack); +} + +public void SQL_QueryDBForClient(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + int client = pack.ReadCell(); + delete pack; + + if (db == null || results == null) { + LogError("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + PrintToServer("[PS] Error while checking if user %s is whitelisted! %s", auth, error); + return; + } + + char logResponse[128]; + Format(logResponse, sizeof(logResponse), "[PS] User %s is not whitelisted! Checking hours...", auth); + + if (!g_cvWhitelist.BoolValue) + Format(logResponse, sizeof(logResponse), "[PS] Whitelist disabled!"); + + if (!results.RowCount) { + PrintToServer("%s", logResponse); + RequestHours(client, auth); + return; + } + + PrintToServer("[PS] User %s is whitelisted!", auth); +} + +void RequestHours(int client, char[] auth) { + + Handle request = CreateRequest_RequestHours(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestHours(int client, char[] auth) { + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=%s&include_played_free_games=1&appids_filter[0]=%i&steamid=%s&format=json", cAPIKey, GetAppID(), auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestHours_OnHTTPResponse); + return request; +} + +public int RequestHours_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Hours Request failure!"); + delete request; + return; + } + + int bufferSize; + + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + + char[] responseBody = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBody, bufferSize); + delete request; + + int playedTime = GetPlayerHours(responseBody); + int totalPlayedTime = playedTime / 60; + + PrintToServer("hours %i", GetPlayerHours(responseBody) / 60); + + if (!totalPlayedTime) { + KickClient(client, "%t", "Invisible Hours"); + return; + } + + if (totalPlayedTime < iMinHours) { + KickClient(client, "%t", "Not Enough Hours", totalPlayedTime, iMinHours); + return; + } + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvWhitelist.BoolValue) + AddPlayerToWhitelist(auth); +} + +public void AddPlayerToWhitelist(char[] auth) { + + char WhitelistWriteQuery[512]; + Format(WhitelistWriteQuery, sizeof(WhitelistWriteQuery), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", auth); + + DataPack pack = new DataPack(); + pack.WriteString(auth); + + g_Database.Query(SQL_AddPlayerToWhitelist, WhitelistWriteQuery, pack); +} + +public void SQL_AddPlayerToWhitelist(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + char auth[40]; + pack.ReadString(auth, sizeof(auth)); + delete pack; + + if (db == null || results == null) + { + LogError("[PS] Error while trying to whitelist user %s! %s", auth, error); + PrintToServer("[PS] Error while trying to whitelist user %s! %s", auth, error); + return; + } + + PrintToServer("[PS] Player %s successfully whitelisted!", auth); +} + +public Action Command_Generic(int client, int args) { + + char arg1[30], arg2[30]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); + + if (!StrEqual(arg1, "add", false) && !StrEqual(arg1, "remove", false) && !StrEqual(arg1, "check", false) || StrEqual(arg2, "")) { + CReplyToCommand(client, "%t", "Command Generic Usage"); + return Plugin_Handled; + } + + if (!MatchRegex(r_SteamID, arg2)) { + CReplyToCommand(client, "%t", "Invalid STEAMID"); + return Plugin_Handled; + } + + Command(arg1, arg2, client); + return Plugin_Handled; +} + +public void Command(char[] arg1, char[] arg2, int client) { + + char query[256]; + + if (StrEqual(arg1, "add")) + Format(query, sizeof(query), "INSERT INTO ps_whitelist (steamid) VALUES (%s);", arg2); + if (StrEqual(arg1, "remove")) + Format(query, sizeof(query), "DELETE FROM ps_whitelist WHERE steamid='%s';", arg2); + if (StrEqual(arg1, "check")) + Format(query, sizeof(query), "SELECT * FROM ps_whitelist WHERE steamid='%s';", arg2); + + DataPack pack = new DataPack(); + + pack.WriteCell(client); + pack.WriteString(arg1); + pack.WriteString(arg2); + + g_Database.Query(SQL_Command, query, pack); + +} + +public void SQL_Command(Database db, DBResultSet results, const char[] error, DataPack pack) { + + pack.Reset(); + int client = pack.ReadCell(); + char arg1[30], arg2[30]; + pack.ReadString(arg1, sizeof(arg1)); + pack.ReadString(arg2, sizeof(arg2)); + delete pack; + + if (StrEqual(arg1, "add")) { + + if (db == null) { + + LogError("[PS] Error while issuing add command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing add command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing add command on %s! %s", arg2, error); + return; + } + + if (results == null) { + CPrintToChat(client, "%t", "Nothing Added", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Added", arg2); + return; + } + + if (StrEqual(arg1, "remove")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing remove command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing remove command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing remove command on %s! %s", arg2, error); + return; + } + + if (!results.AffectedRows) { + CPrintToChat(client, "%t", "Nothing Removed", arg2); + return; + } + + CPrintToChat(client, "%t", "Successfully Removed", arg2); + return; + } + + if (StrEqual(arg1, "check")) { + + if (db == null || results == null) + { + LogError("[PS] Error while issuing check command on %s! %s", arg2, error); + PrintToServer("[PS] Error while issuing check command on %s! %s", arg2, error); + CPrintToChat(client, "[PS] Error while issuing check command on %s! %s", arg2, error); + return; + } + + if (!results.RowCount) { + CPrintToChat(client, "%t", "Check Not Whitelisted", arg2); + return; + } + + CPrintToChat(client, "%t", "Check Whitelisted", arg2); + return; + } + +} + +int GetPlayerHours(char[] responseBody) { + + char str[8][64]; + + ExplodeString(responseBody, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 8; i++) { + + if (StrContains(str[i], "playtime_forever") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +/* Ban Check Module */ + +void RequestBans(int client, char[] auth) { + + Handle request = CreateRequest_RequestBans(client, auth); + SteamWorks_SendHTTPRequest(request); + +} + +Handle CreateRequest_RequestBans(int client, char[] auth) { + + char apikey[40]; + GetConVarString(g_cvApiKey, apikey, sizeof(apikey)); + + char request_url[512]; + + Format(request_url, sizeof(request_url), "http://api.steampowered.com/ISteamUser/GetPlayerBans/v1?key=%s&steamids=%s", apikey, auth); + Handle request = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, request_url); + + SteamWorks_SetHTTPRequestContextValue(request, client); + SteamWorks_SetHTTPCallbacks(request, RequestBans_OnHTTPResponse); + return request; +} + +public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int client) { + + if (!bRequestSuccessful || eStatusCode != k_EHTTPStatusCode200OK) { + PrintToServer("[PS] HTTP Bans Request failure!"); + delete request; + return; + } + + int bufferSize; + SteamWorks_GetHTTPResponseBodySize(request, bufferSize); + char[] responseBodyBans = new char[bufferSize]; + SteamWorks_GetHTTPResponseBodyData(request, responseBodyBans, bufferSize); + delete request; + + if (g_cvEnableBanDetection.BoolValue) { + + if (IsVACBanned(responseBodyBans)) { + + if (!GetDaysSinceLastVAC(responseBodyBans) || !GetVACAmount(responseBodyBans)) + KickClient(client, "%t", "VAC Kicked"); + else if (GetDaysSinceLastVAC(responseBodyBans) < iVACDays) + KickClient(client, "%t", "VAC Kicked Days", iVACDays); + else if (GetVACAmount(responseBodyBans) > iVACAmount) + KickClient(client, "%t", "VAC Kicked Amount", iVACAmount); + } + if (IsCommunityBanned(responseBodyBans)) if (g_cvCommunityBan.BoolValue) KickClient(client, "%t", "Community Ban Kicked"); - if (GetGameBans(responseBodyBans) > iGameBans) - KickClient(client, "%t", "Game Bans Exceeded", iGameBans); - - GetEconomyBans(responseBodyBans); - - if (iEconomyBan == 1) - if (StrContains(EcBan, "banned", false) != -1) + if (GetGameBans(responseBodyBans) > iGameBans) + KickClient(client, "%t", "Game Bans Exceeded", iGameBans); + + GetEconomyBans(responseBodyBans); + + if (iEconomyBan == 1) + if (StrContains(EcBan, "banned", false) != -1) KickClient(client, "%t", "Economy Ban Kicked"); if (iEconomyBan == 2) if (StrContains(EcBan, "banned", false) != -1 || StrContains(EcBan, "probation", false) != -1) @@ -497,159 +497,159 @@ public int RequestBans_OnHTTPResponse(Handle request, bool bFailure, bool bReque } -} - -int GetDaysSinceLastVAC(char[] responseBodyBans) { - - char str[7][64]; - - ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "DaysSinceLastBan") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return StringToInt((str2[1])); - - } - } - return -1; -} - -int GetVACAmount(char[] responseBodyBans) { - - - char str[7][64]; - - ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "NumberOfVACBans") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return StringToInt((str2[1])); - - } - } - return -1; -} - -int GetGameBans(char[] responseBodyBans) { - - char str[7][64]; - - ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "NumberOfGameBans") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return StringToInt((str2[1])); - - } - } - return -1; -} - -bool IsVACBanned(char[] responseBodyBans) { - - char str[10][64]; - - ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "VACBanned") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return (StrEqual(str2[1], "false")) ? false : true; - - } - } - return false; -} - -bool IsCommunityBanned(char[] responseBodyBans) { - - char str[10][64]; - - ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "CommunityBanned") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - - return (StrEqual(str2[1], "false")) ? false : true; - - } - } - return false; -} - -void GetEconomyBans(char[] responseBodyBans) { - char str[7][64]; - - ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); - - for (int i = 0; i < 7; i++) { - - if (StrContains(str[i], "EconomyBan") != -1) { - - char str2[2][32]; - ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); - strcopy(EcBan, 15, str2[1]); - - } - } - -} - -/* On Client Authorized */ - -public void OnClientAuthorized(int client) { - - char auth[40]; - GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); - - if (g_cvEnableHourCheck.BoolValue) - QueryDBForClient(client, auth); - - if (g_cvEnableBanDetection.BoolValue) - RequestBans(client, auth); - -} - -/* Extra Checks */ - -bool IsAPIKeyCorrect() { - - if (StrEqual(cAPIKey, "", false && MatchRegex(r_ApiKey, cAPIKey) == -1 )) - return false; - - return true; -} - -bool AreCvarsNumeric() { - char minhours[10], enable[2], whitelist[2]; - IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); - IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); - IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); - if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { - return false; - } - return true; +} + +int GetDaysSinceLastVAC(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "DaysSinceLastBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetVACAmount(char[] responseBodyBans) { + + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfVACBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +int GetGameBans(char[] responseBodyBans) { + + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "NumberOfGameBans") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return StringToInt((str2[1])); + + } + } + return -1; +} + +bool IsVACBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "VACBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +bool IsCommunityBanned(char[] responseBodyBans) { + + char str[10][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "CommunityBanned") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + + return (StrEqual(str2[1], "false")) ? false : true; + + } + } + return false; +} + +void GetEconomyBans(char[] responseBodyBans) { + char str[7][64]; + + ExplodeString(responseBodyBans, ",", str, sizeof(str), sizeof(str[])); + + for (int i = 0; i < 7; i++) { + + if (StrContains(str[i], "EconomyBan") != -1) { + + char str2[2][32]; + ExplodeString(str[i], ":", str2, sizeof(str2), sizeof(str2[])); + strcopy(EcBan, 15, str2[1]); + + } + } + +} + +/* On Client Authorized */ + +public void OnClientAuthorized(int client) { + + char auth[40]; + GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)); + + if (g_cvEnableHourCheck.BoolValue) + QueryDBForClient(client, auth); + + if (g_cvEnableBanDetection.BoolValue) + RequestBans(client, auth); + +} + +/* Extra Checks */ + +bool IsAPIKeyCorrect() { + + if (StrEqual(cAPIKey, "", false && MatchRegex(r_ApiKey, cAPIKey) == -1 )) + return false; + + return true; +} + +bool AreCvarsNumeric() { + char minhours[10], enable[2], whitelist[2]; + IntToString(g_cvMinHours.IntValue, minhours, sizeof(minhours)); + IntToString(g_cvEnabled.IntValue, enable, sizeof(enable)); + IntToString(g_cvWhitelist.IntValue, whitelist, sizeof(whitelist)); + if (!MatchRegex(r_Numbers, minhours) || !MatchRegex(r_Numbers, enable) || !MatchRegex(r_Numbers, whitelist)) { + return false; + } + return true; } \ No newline at end of file diff --git a/translations/profilestatus.phrases.txt b/translations/profilestatus.phrases.txt new file mode 100644 index 0000000..1d1c92c --- /dev/null +++ b/translations/profilestatus.phrases.txt @@ -0,0 +1,137 @@ +"Phrases" +{ + + "Not Enough Hours" + { + "#format" "{1:i},{2:i}" + "en" "You have {1} out of the {2} hours required to join this server!" + "es" "¡Tienes {1} de las {2} horas necesarias para unirte a este servidor!" + "pt" "Você tem {1} das {2} horas necessárias pra se unir a este servidor!" + } + + "Invisible Hours" + { + "en" "Error while retrieving your hours! Make sure they're public" + "es" "¡Error al intentar obtener tus horas de juego! Asegúrate de que sean públicas" + "pt" "Erro ao tentar obter suas horas de jogo! Verifique que elas sejam públicas" + } + + "Invalid STEAMID" + { + "en" "{green}[PS]{default} Invalid STEAMID!" + "es" "{green}[PS]{default} ¡STEAMID inválido!" + "pt" "{green}[PS]{default} STEAMID inválido!" + } + + "Check Not Whitelisted" + { + "#format" "{1:s}" + + "en" "{green}[PS]{default} Steam ID {gray}{1} {default}is {red}not {default}whitelisted!" + "es" "{green}[PS]{default} El Steam ID {gray}{1} {red}no está {default}en la whitelist." + "pt" "{green}[PS]{default} A Steam ID {gray}{1} {red}não está {default}na whitelist!" + } + + "Check Whitelisted" + { + "#format" "{1:s}" + + "en" "{green}[PS]{default} Steam ID {gray}{1} {green}is {default}whitelisted!" + "es" "{green}[PS]{default} El Steam ID {gray}{1} {green}está {default}en la whitelist." + "pt" "{green}[PS]{default} A Steam ID {gray}{1} {green}está {default}na whitelist!" + } + + "Successfully Removed" + { + "#format" "{1:s}" + + "en" "{green}[PS]{default} Successfully removed {gray}{1} {default}from the whitelist!" + "es" "{green}[PS]{default} ¡Removida ID {gray}{1} {default}de la whitelist con éxito!" + "pt" "{green}[PS]{default} Removida ID {gray}{1} {default}da whitelist com sucesso!" + } + + "Nothing Removed" + { + + "#format" "{1:s}" + + "en" "{green}[PS]{default} ID {gray}{1} {default}was not in whitelist!" + "es" "{green}[PS]{default} ¡La ID {gray}{1} {default}no estaba en la whitelist!" + "pt" "{green}[PS]{default} ID {gray}{1} {default}não estava na whitelist!" + + } + + "Successfully Added" + { + "#format" "{1:s}" + + "en" "{green}[PS]{default} Successfully added {gray}{1} {default}to the whitelist!" + "es" "{green}[PS]{default} ¡Agregada la ID {gray}{1} {default}a la whitelist!" + "pt" "{green}[PS]{default} Adicionada a ID {gray}{1} {default}à whitelist com sucesso!" + } + + "Nothing Added" + { + + "#format" "{1:s}" + + "en" "{green}[PS]{default} ID {gray}{1} {default}was already in whitelist!" + "es" "{green}[PS]{default} ¡La ID {gray}{1} {default}ya estaba en la whitelist!" + "pt" "{green}[PS]{default} ID {gray}{1} {default}já estava na whitelist!" + + } + "Command Generic Usage" + { + "en" "{green}[PS]{default} Usage: sm_ps " + "es" "{green}[PS]{default} Uso: sm_ps " + "pt" "{green}[PS]{default} Uso: sm_ps " + } + "VAC Kicked" + { + "en" "This server disallows VAC Banned players." + "es" "Este servidor prohíbe jugadores con VAC Bans." + "pt" "Esse servidor proíbe jogadores com VAC Ban." + } + "VAC Kicked Days" + { + "format" "{1:i}" + + "en" "This server disallows players with less than {1} days since their last VAC Ban." + "es" "Este servidor prohíbe jugadores con menos de {1} días desde su último VAC Ban." + "pt" "Esse servidor proíbe jogadores com menos de {1} dias desde o seu último VAC Ban." + } + "VAC Kicked Amount" + { + "format" "{1:i}" + + "en" "This server disallows players with more than {1} VAC Bans." + "es" "Este servidor prohíbe jugadores con más de {1} VAC Bans." + "pt" "Esse servidor proíbe jogadores com mais de {1} VAC Bans." + } + "Community Ban Kicked" + { + "en" "This server disallows Steam Community Banned players." + "es" "Este servidor prohíbe jugadores baneados de la Comunidad de Steam." + "pt" "Esse servidor proíbe jogadores banidos da Comunidade de Steam." + } + "Game Bans Exceeded" + { + "format" "{1:i}" + + "en" "This server disallows players with more than {1} Game Bans." + "es" "Este servidor prohíbe jugadores con más de {1} Game Bans." + "pt" "Esse servidor proíbe jogadores com mais de {1} Game Bans." + } + "Economy Ban Kicked" + { + "en" "This server disallows Trade Banned players." + "es" "Este servidor prohíbe jugadores con Trade Ban." + "pt" "Esse servidor proíbe jogadores com Trade Ban." + } + "Economy Ban/Prob Kicked" + { + "en" "This server disallows players with Trade Ban and Probation states." + "es" "Este servidor prohíbe jugadores en situación de Trade Ban o Probation." + "pt" "Esse servidor proíbe jogadores em situação de Trade Ban ou Probation." + } +} \ No newline at end of file From 85db1617b2390c2331825bd6512bd05104269bf5 Mon Sep 17 00:00:00 2001 From: ratawar Date: Wed, 29 Apr 2020 21:10:42 -0300 Subject: [PATCH 15/15] Delete .gitignore --- shit/.gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 shit/.gitignore diff --git a/shit/.gitignore b/shit/.gitignore deleted file mode 100644 index e69de29..0000000