	Credits:
	
	- SilverShot - for "Commands enumerator" code and SMC Parser example.
	- hmmmmm - for solution to my new debug code style.
	- Ilusion9 - for suggestion the correct replicating of GetCmdReplySource.
	- Bacardi - for suggesting me ReadCommandIterator() to differentiate sm commands.
	- Balimbanana - for suggesting me OnClientCommand() to catch unrecognized console commands.
	
	Compatible with:
	
	- Simple Chat Processor (Redux) by Mini (minimoney1).
	- Chat processor by Keith Warren (Shaders Allen).
	- Color Chat Processor by nullent?.
	
	Limitations:
	- Listen servers are limited to "eat" the chat only, "eating" the console will not work there, use Dedicated server.
	
	Changelog:
	
	1.0 (18-Nov-2019)
	 - First release
	 
	1.1 (20-Nov-2019)
	 - Added ability to log unknown commands to logs/cmd_unknown.log (identical commands will not be repeated in log)
	 
	1.2 (20-Dec-2019)
	 - Fixed bug: color tag is not parsed
	 - Added ability to remove <chat-processor> dependency with reduced functionality (by SilverShot request).
	To make so, change #define USE_CHAT_PROCESSOR to 0 and recompile the plugin.
	
	1.3 (20-Dec-2019)
	 - Extended debug version
	
	1.4 (28-Dec-2019)
	 - (dot) .command is now alias to /command, so you can write commands beginning with . (dot)
	 - Added "sm_eater_nokey_allow" ConVar - ability to enter commands without prepending key trigger at all, e.g. ADMIN, not !ADMIN (1 - Enable, 0 - Disable, for better performance).
	 - Added "sm_eater_nokey_silent" ConVar - Commands entered without key trigger should be silent? (1 - Yes / 0 - No).
	 - "sm_unknown_logging" ConVar is renamed to "sm_eater_unknown_logging" to follow naming convention better.
	 - Added "Simple Chat Processor (Redux)" support. No need to re-compile the plugin. Processor is detected automatically.
	 Note: remove chat-processor.smx from server if you don't use it anymore.
	 - Chat processors are stored now in separate "Chat_Processors" folder (use it just in emergency case, e.g. when source code is lost or new version break compatibility...).
	 - Fixed color tag bug caused by dependency on plugins load order.
	 - potential fix: multiple starting color tags are supported now.
	 - unknown command is logged now without normalization, exactly same as it was written by user.
	 - in case some problems still persist, you can enable extended debug by #define DEBUG 1 (will be written in "logs/cmd_eater_debug.log")
	 
	1.6 (12-Feb-2020)
	
	Features:
	 - Added support for !sm_ /sm_ sm_ prefixes entered in chat, including misprinted (wrong letter case and cyrillic).
	 - Added "sm_eater_enable" ConVar - to disable plugin in runtime (just in case).
	 - Added "sm_eater_eat_cyrillic" ConVar instead of "#define EAT_CYRILLIC".
	 - Added "sm_eater_nokey_minlength" ConVar to decrease false positives.
	 You can define here minimal length of command (entered without key trigger "!","/") allowed to be handled by "eater". By default: 2.
	 
	 - added commands exclusion file: "addons/sourcemod/data/sm_eater_exclude.txt":
	 enter each command on the new line you may want to exclude from handling by this plugin to prevent false positives.
	 
	 - now, unknown commands are not checked for duplicates anymore (useless thing). Instead, player name, steamid, country, ip are prepended in log.
	 - "eater" is now handling ALL in-game commands, registered with sm_ and without. However, YOU can "misprint" them using any variant.
	 
	 Other:
	 - New dependency: <geoip>
	 - RegConsoleCmd() replaced by AddCommandListener() to handle it in correct way and order.
	 - Fixed missing CloseHandle of commands enumerator (not critical).
	 - Fixed missing ConVar version notify flag.
	 - fixed cmd-arg parser is not worked properly with multiple tags of color specified.
	 - Added additional check preventing "say" / "say_team" commands to be registered twice.
	 - Some simplifications and optimizations:
		* thanks to hmmmmm for helping with my new debug code style.
		* thanks to SilverShot for profiler sample.
	 
	1.7 (15-Feb-2020)
	 - FakeClientCommand() is replaced by -Ex variant to prevent beeing networked and fix further issues with some recurse reported.
	
	1.8 (16-Feb-2020)
	 - Some optimizations (thanks to Crasher for remark).
	 - Replicate GetCmdReplySource() to allow plugins understand that command came from chat (thanks to Ilusion9 for solution).
	 - appended some debugging code.
	 - fixed some mistakes with "." prefix trigger.
	 
	1.9 (17-Feb-2020)
	 - prevented very strange bug with chat procesor when he duplicates forward calling multiple times (skip flood coming < 300 ms.).
	 - Added "sm_eater_ignore_chat_proc" ConVar - set 1 if you want ignore handling messages coming from chat processor and use 'say' hook instead (just in case some problems still persists).
	
	1.11 (18-Feb-2020)
	 - Added support for multiple (or empty) defined chat triggers in core.cfg.
	 - Fixed "sm_eater_nokey_minlength" ConVar incorrectly handled when calculated multi-byte characters.
	 
	1.12 (20-Apr-2020)
	 - Added a little delay before loading list of commands to support one loaded with a frame delay or so.
	 - Added reloading command list on map start to support commands registered with late loaded plugins.
	 
	1.13 (26-Apr-2020)
	 - Fixed false positives for default game commands, like "bind" when they are entered in chat (thanks for help to Bacardi).
	 - Added ability to "eat" console commands (thanks for help to Balimbanana):
		* New ConVar added "sm_eater_eat_console" - default: 1 - to enable "eating" commands entered in console.
	 - Added ability of reverse Russian transliteration (like replacing "讯" => "shop", "" => "admin" ):
		* New ConVar added "sm_eater_transliteration" - default: 1 - allow to substitute English analogues for Russian letters.
		
	1.14 (13-Sep-2020)
	 - Added support for dynamically loaded plugin commands:
		* New ConVar added "sm_eater_track_dyn_load" - default: 1 - Check commands of dynamically loaded plugins. Causes less gaps, but more CPU loading! (1 - Yes / 0 - No).
	
	1.15 (19-Sep-2020)
	 - Improved support for dynamically loaded commands.
	 - Imporved "DeTranslit".
	 - Improved optimization (preventing twice command check logic).
	 
	1.16 (23-Feb-2021)
	 - Added a walkaround for parser bug to compile successfully on SM 1.11.
	
	1.17 (20-Apr-2021)
	 - Added support for new: Color Chat Processor by nullent?: https://github.com/nyood/ccprocessor (thanks to @Round for testing):
	 	> Note 1: You must have ccprocessor.inc in your /includes/ folder in order to compile "Command Eater" correctly with CCP support.
	 	> Note 2: Due to current bug, do not use tv_enable 1 in your server.
	 - Prevented client-side console commands from triggering anti-spam function, such a way making "Command Eater" temporarily unavailable sometimes:
	 	> all unrecognized console commands will be automatically added to a separate exclusion list and will no longer be handled from console.
	 - "Vote Yes" and "Vote No" are added to console exclusion list: it is default binds, which are conflict with sm_vote command.
	 - Prevented case when "Dynamically" loaded commands detection feature breaks lower-case compare function.
	 - Added new command "sm_eater_refresh" - Refresh the list of commands. It is recommended to use it in Map Config plugins which dynamically load/unload other plugins:
	 	> For a more elegant and automatic implementation, I am awaiting a solution / implementation from SourceMod team of at least one of these Issues:
	 	> https://github.com/alliedmodders/sourcemod/issues/1480
	 	> https://github.com/alliedmodders/sourcemod/issues/1481
	 	> https://github.com/alliedmodders/sourcemod/issues/890 + https://github.com/alliedmodders/sourcemod/issues/1482
	 - Other optimizations.
	 
	1.18 (09-Jul-2022)
	 - Disabled support of Color Chat Processor by nullent? (nyood) until the compilation issue will be resolved on its side: https://github.com/rej-clown/ccprocessor/issues/1 If you still want to compile using old CCP, change "#define _ccprocessor_disable 1" to 0.
	 - Introduced Commands Lazy loading (in case commands list update will be triggered multiple times, all calls converted to a single within 3 seconds).
	 - Support for new forward "OnNotifyPluginUnloaded" in SM 1.11.
	 - Fixed warnings on SM 1.11.
	 - Fixed error "Not enough space on the heap" on SM 1.11.
	 - Fixed "Array index out of bounds" (last character of "sizeof(string)-1" is null, which is not considered everywhere).
	 - Appended default exclusion list.
	 - Fixed command is not "eaten" when it is match with embedded game command as if we would cut "sm_".
	 - Added listen servers support for entered console commands (not tested).
	 - NOTE: this plugin is not much useful for English only servers anymore since the SM v1.11.0.6725+ release, because it is already include case insensitive fix for chat commands (Pull #1542).
