ETJump 3.4.0

- improvements to 'records' output
  - duplicate rank strings are no longer shown for tied times
  - 'page' parameter is now correctly capped - it's no longer possible to request a page without any records on it
  - the total amount of records on a run is now displayed if the number of records is higher than the page size
- added 'tracker_not_eq_any' and 'tracker_not_eq_all' keys to 'target/trigger_tracker'
  - this allows mappers to pick desired behavior for "not equal" trackers - either all values or one of the values
  - old 'tracker_not_eq' is now deprecated and functionality is provided by 'tracker_not_eq_any'
- added ability to automatically play all demos from a directory with 'demoQueue' command 
  - 'etj_demoQueueDir' cvar sets subdirectory inside 'demos' to play demos from, leave empty to play from 'demos' directory (default 'demoqueue')
  - commands:
    - 'demoQueue start' - starts playback
    - 'demoQueue stop' - stops playback (this must be issued to stop the playback, 'ESC' will just go to next demo)
    - 'demoQueue restart' - restart playback from the beginning
    - 'demoQueue next' -  skips to next demo
    - 'demoQueue previous' - skips to previous demo
    - 'demoQueue goto <index>' - skips to specified demo in the queue
    - 'demoQueue status' - prints status about the current demo queue
    - 'demoQueue help [command]' - prints usage information or detailed help about a command
- added 'target_ft_setrules' entity to set fireteam rules for the activators fireteam + supplementary worldspawn keys
  - bypasses 'noftnoghost' and new 'noftsavelimit' & 'noftteamjumpmode' worldspawn keys
  - 'spawnflag 1' means only fireteam leader can activate the entity
  - keys:
    - 'savelimit (-1 - 100 or reset)' - sets savelimit
    - 'noghost 0/1' - disable/enable fireteam noghost
    - 'teamjumpmode 0/1' - disable/enable teamjump mode
    - 'leader_only_message' - message to print to activator if 'spawnflag 1' is set and the activator is not the fireteam leader, '%s' will be substituted with the fireteam leaders name
- added 'etj_logCenterPrint' cvar to log center prints to console
  - consecutive, identical messages are not logged multiple times - same message will be logged only if it has already disappeared from screen, as controlled by 'cg_centertime' cvar
  - several spammy prints (e.g. dynamite arming) and save messges are not logged
- console no longer prints a warning when trying to vsay current class as a spectator
- spectators can now use the fireteam general vsay menu
- fully removed location grid system from the mod - team/ft chats no longer display coordinates on chat
- fixed Linux HWID generation leaking a socket
- added 'target_spawn_relay' entity to execute actions on player respawn
  - passive entity that doesn't need to be explicitly targeted, fired automatically on respawns (not revives)
  - keys:
    - 'team' - comma-separated list of teams that this relay fires for. If not set, fires for all teams, including spectators. Valid team names are "axis", "allies" and "spectator".
    - 'scriptname' - name of the scriptblock to activate, calls the 'activate' trigger, also supports 'activate axis/allies'. Passes activator to mapscript.
    - 'target' - targets to fire
- added 'etj_onDemoPlaybackStart' cvar to execute commands on first frame of demo playback
- fixed 'target_savereset' print containing an unnecessary whitespace at the beginning of the message
- fixed 'etj_autoSpec' ignoring upmove when determining whether you or the spectated client are moving
- improved performance of some HUD elements when spectating or playing back demos
- static 'dlight' entities are now fully client sided
  - a dlight is considered static if it doesn't have 'scriptname', 'targetname' or 'spawnflags' set
  - client sided dlights allow more 16 dlights in a map (1024 to be precise)
  - renderer is still limited to max 32 dlights in a rendered scene
- fixed 'target_laser' not dealing damage to client 0
- fixed 'target_rumble' crashing the server if re-triggered again before the previous rumble sequence had ended
- 'weapon_portalgun' now supports 'noise' key like other weapons & items, and properly displays cursorhint for pickup
  - if 'noise' is set, the sound overrides the default item pickup sound
- fixes to client-side coronas
  - coronas that have no color set or are set to black are now set to white to match behavior of server-sider coronas
  - coronas with 'scriptname' set are now correctly processed on the server rather than client
- fixed a crash if shutdown was executed during 'etj_ad_stopDelay' period after a timerun was finished
- drawspeed2, CGaz, snaphud & strafe quality meter are now interpolated by default
  - interpolation can be disabled per element with 'etj_HUD_noLerp' cvar (bitflag)
    - 1 = drawspeed2
    - 2 = CGaz
    - 4 = snaphud
    - 8 = strafe quality
- improvements to 'viewpos' & 'setviewpos'
  - 'viewpos' now prints viewangles for all axes
  - 'setviewpos' now accepts either 3 or 6 arguments - omitting angles takes current viewangles as input
- fixed chat replay potentially writing a null JSON object in some scenarios
- logs created by 'g_dailyLogs' are now named as per ISO 8061 date standard
  - admin logs now have a '-admin' suffix rather than a prefix
- fixed a long standing issue where client's backed up saves from a session would sometimes disappear when reconnecting to a server
- fixed a potential crash when invalid vote argument was given
- fixed a potential crash with 'players' command
- fixed unknown command 'uiChatMenuOpen' console print when disconnecting from a server via in-game menu
- added 'etj_useExecQuiet' cvar to execute map/team-specific autoexec configs using 'execq' command
  - 'execq' is supported by ET: Legacy & ETe, and executes a config "quietly" (no info print to console)
  - bitflag cvar:
    - 1 - enable for map autoexecs
    - 2 - enable for team autoexecs
- added 'etj_noMenuFlashing' cvar to disable the lightning effect on the menu background shader
- added option to enable client side predicted portalgun teleports
  - disabled by default due to the potential for PVS-related visual bugs
  - can be enabled via 'g_portalPredict' server cvar (votable by clients)
    - voting can be disabled with 'vote_allow_portalPredict'
  - worldspawn key 'portalpredict' forcibly enables portal prediction for a map regardless of the cvar value
- fixed 'portalteam 1' not working correctly and acting like 'portalteam 2'
- fixed 'func_portaltarget' producing incorrectly sized portals when 'portalsize' key was used
- deprecated 'g_portalDebug' server cvar in favor of 'etj_portalDebug' client cvar
- fixed 'KEYS' menu button in 'LAGOMETER' settings menu not working
- added 'fireteam countdown' command to perform a countdown in fireteam chat
  - 'fireteam countdown [seconds]', if 'seconds' isn't given, value is taken from 'etj_fireteamCountdownLength' cvar value
  - length is capped to 1-10s
- added "Quick connect" window to main menu
  - can store up to 5 servers for 1-click connecting to a server
  - servers are stored in 'quickconnect.dat' file
  - can be disabled with 'etj_drawQuickConnectMenu' cvar
- fixed missing centerprint when an Allied objective was auto-returned due to timeout
- portalgun portals can no longer be overlapped in some scenarios if 'portalteam' is enabled
  - 'portalteam 1' - fireteam members cannot overlap portals
  - 'portalteam 2' - nobody can overlap portals
  - when joining a fireteam with 'portalteam 1', your portals are reset to prevent potential overlapping
- adjusted behavior of 'etj_viewPlayerPortals' to filter out usable/unusable portals instead
  - 0 - only draw portals you're able to use
  - 1 - draw all portals
  - a portal is considered usable in the following scenarios:
    - the portal is yours
    - 'portalteam' is set to 1 and the portal is yours or from a fireteam member
    - 'portalteam' is set to 2 (anyone can use anyone's portals)
- portalgun trails and debug bboxes are now correctly colored green/yellow for other's portals
- overbounce detector now correctly shows overbounces on top of other solid players
- added 'dumpEntities' command to dump entities from the current map to a file
  - 'dumpEntities [optional name]', if name isn't given, defaults to current map name
  - requires 'developer 1'
- fixed potential crash when hitting the 16th checkpoint of a timerun and checkpoint drawing was enabled
- fixed firing with '+attack2' not setting the players firing state correctly, causing issues such as flamethrower flames not drawing when fired
- improvements to spectator info list
  - number of spectators drawn can now be limited with 'etj_spectatorInfoMaxClients', -1 for unlimited (default)
    - if the number of spectators exceeds the limit, a hint will be displayed for the number of hidden spectators
  - active clients are now always drawn before inactive clients
  - spectator list can be drawn in bottom-up direction with 'etj_spectatorInfoDirection 1'
- added 'overbounce_players' worldspawn key to control overbounces performed on top of other clients
  - 0 = no change, controlled by 'nooverbounce' key (default)
  - 1 = overbounces from top of players are always allowed
  - 2 = overbounces from top of players are never allowed
- added 'etj_hideFlamethrowerEffects' to hide the visual effects of flamethrower
  - if enabled, hides flames, flame stream while firing and dlights
  - bitflag value
    - 1 = hide for self
    - 2 = hide for others
- scoreboard inactivity now correctly works if the server is using 'sv_level/serverTimeReset'
- added a short animation when portalgun portals are spawned
- bundled fixed '.arena' files for certain maps with the mod pk3
- reworked timerun high ping interrupt to work based off command time delta rather than ping
  - timeruns are now interrupted if the delta between consecutive user commands is 600ms