From 67d37ea13feeca0671d60d88b1963cf1e0e901c4 Mon Sep 17 00:00:00 2001 From: "Dmitry D. Chernov" Date: Sat, 11 Nov 2023 01:15:44 +1000 Subject: [PATCH] get rid of "rulez", "kastet" and "pulemet" in symbols; also some cosmetics and small fixes --- src/game/g_console.pas | 31 +- src/game/g_game.pas | 783 +++++++++--------- src/game/g_gui.pas | 7 +- src/game/g_items.pas | 69 +- src/game/g_language.pas | 34 +- src/game/g_main.pas | 8 +- src/game/g_menu.pas | 64 +- src/game/g_monsters.pas | 4 +- src/game/g_netmsg.pas | 43 +- src/game/g_options.pas | 12 +- src/game/g_player.pas | 347 ++++---- src/game/g_playermodel.pas | 34 +- src/game/g_triggers.pas | 2 +- src/game/g_weapons.pas | 6 +- src/mapdef/mapdef.txt | 6 +- src/shared/mapdef.inc | 1550 ++++++++++++++++++------------------ 16 files changed, 1494 insertions(+), 1506 deletions(-) diff --git a/src/game/g_console.pas b/src/game/g_console.pas index 5315b35..20b2b53 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -1064,10 +1064,10 @@ begin AddCommand('p2_autoswitch', PlayerSettingsCVars); AddCommand('p1_switch_empty', PlayerSettingsCVars); AddCommand('p2_switch_empty', PlayerSettingsCVars); - AddCommand('p1_skip_fist', PlayerSettingsCVars); - AddCommand('p2_skip_fist', PlayerSettingsCVars); - AddCommand('p1_priority_kastet', PlayerSettingsCVars); - AddCommand('p2_priority_kastet', PlayerSettingsCVars); + AddCommand('p1_skip_ironfist', PlayerSettingsCVars); + AddCommand('p2_skip_ironfist', PlayerSettingsCVars); + AddCommand('p1_priority_ironfist', PlayerSettingsCVars); + AddCommand('p2_priority_ironfist', PlayerSettingsCVars); AddCommand('p1_priority_saw', PlayerSettingsCVars); AddCommand('p2_priority_saw', PlayerSettingsCVars); AddCommand('p1_priority_pistol', PlayerSettingsCVars); @@ -1084,8 +1084,8 @@ begin AddCommand('p2_priority_plasma', PlayerSettingsCVars); AddCommand('p1_priority_bfg', PlayerSettingsCVars); AddCommand('p2_priority_bfg', PlayerSettingsCVars); - AddCommand('p1_priority_super', PlayerSettingsCVars); - AddCommand('p2_priority_super', PlayerSettingsCVars); + AddCommand('p1_priority_superchaingun', PlayerSettingsCVars); + AddCommand('p2_priority_superchaingun', PlayerSettingsCVars); AddCommand('p1_priority_flamethrower', PlayerSettingsCVars); AddCommand('p2_priority_flamethrower', PlayerSettingsCVars); AddCommand('p1_priority_berserk', PlayerSettingsCVars); @@ -2251,15 +2251,15 @@ begin WriteLn(f, 'g_maxlives ', gsMaxLives); WriteLn(f, 'g_item_respawn_time ', gsItemRespawnTime); WriteLn(f, 'g_item_time_random ', gsItemRespawnRandom); - WriteLn(f, 'g_powerup_respawn_time ', gsRulezRespawnTime); - WriteLn(f, 'g_powerup_time_random ', gsRulezRespawnRandom); + WriteLn(f, 'g_powerup_respawn_time ', gsPowerupRespawnTime); + WriteLn(f, 'g_powerup_time_random ', gsPowerupRespawnRandom); WriteLn(f, 'g_spawn_invul ', gsSpawnInvul); WriteLn(f, 'g_warmup_time ', gsWarmupTime); WriteFlag('g_friendlyfire ', GAME_OPTION_TEAMDAMAGE); WriteFlag('g_friendly_hit_trace ', GAME_OPTION_TEAMHITTRACE); WriteFlag('g_friendly_hit_projectile ', GAME_OPTION_TEAMHITPROJECTILE); - WriteFlag('g_powerup_randomize_respawn ', GAME_OPTION_RULEZRANDOM); + WriteFlag('g_powerup_randomize_respawn ', GAME_OPTION_POWERUPRANDOM); WriteFlag('g_items_all_respawn_random ', GAME_OPTION_ITEMALLRANDOM); WriteFlag('g_items_help_respawn_random ', GAME_OPTION_ITEMHELPRANDOM); WriteFlag('g_items_ammo_respawn_random ', GAME_OPTION_ITEMAMMORANDOM); @@ -2282,19 +2282,18 @@ begin WriteLn(f, 'p1_team ', FormatTeam(Team)); WriteLn(f, 'p1_autoswitch ', WeaponSwitch); WriteLn(f, 'p1_switch_empty ', SwitchToEmpty); - WriteLn(f, 'p1_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET])); + WriteLn(f, 'p1_priority_ironfist ', Max(0, WeaponPreferences[WEAPON_IRONFIST])); WriteLn(f, 'p1_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW])); WriteLn(f, 'p1_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL])); WriteLn(f, 'p1_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1])); - WriteLn(f, 'p1_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2] )); + WriteLn(f, 'p1_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2])); WriteLn(f, 'p1_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN])); WriteLn(f, 'p1_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER])); WriteLn(f, 'p1_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA])); WriteLn(f, 'p1_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG])); - WriteLn(f, 'p1_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET])); + WriteLn(f, 'p1_priority_superchaingun ', Max(0, WeaponPreferences[WEAPON_SUPERCHAINGUN])); WriteLn(f, 'p1_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER])); WriteLn(f, 'p1_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1])); - // end; with gPlayer2Settings do begin @@ -2304,16 +2303,16 @@ begin WriteLn(f, 'p2_team ', FormatTeam(Team)); WriteLn(f, 'p2_autoswitch ', WeaponSwitch); WriteLn(f, 'p2_switch_empty ', SwitchToEmpty); - WriteLn(f, 'p2_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET])); + WriteLn(f, 'p2_priority_ironfist ', Max(0, WeaponPreferences[WEAPON_IRONFIST])); WriteLn(f, 'p2_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW])); WriteLn(f, 'p2_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL])); WriteLn(f, 'p2_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1])); - WriteLn(f, 'p2_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1])); + WriteLn(f, 'p2_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2])); WriteLn(f, 'p2_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN])); WriteLn(f, 'p2_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER])); WriteLn(f, 'p2_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA])); WriteLn(f, 'p2_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG])); - WriteLn(f, 'p2_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET])); + WriteLn(f, 'p2_priority_superchaingun ', Max(0, WeaponPreferences[WEAPON_SUPERCHAINGUN])); WriteLn(f, 'p2_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER])); WriteLn(f, 'p2_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1])); end; diff --git a/src/game/g_game.pas b/src/game/g_game.pas index a35e2cb..110fbe4 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -34,8 +34,8 @@ type SpawnInvul: Word; ItemRespawnTime: Word; ItemRespawnRandom: Word; - RulezRespawnTime: Word; - RulezRespawnRandom: Word; + PowerupRespawnTime: Word; + PowerupRespawnRandom: Word; MaxLives: Byte; Options: LongWord; WAD: String; @@ -69,7 +69,7 @@ type WeaponSwitch: Byte; WeaponPreferences: Array[WP_FIRST..WP_LAST+1] of Byte; SwitchToEmpty: Byte; - SkipFist: Byte; + SkipIronFist: Byte; end; TMegaWADInfo = record @@ -185,24 +185,24 @@ const EXIT_ENDLEVELSINGLE = 4; EXIT_ENDLEVELCUSTOM = 5; - GAME_OPTION_RESERVED = 1; - GAME_OPTION_TEAMDAMAGE = 2; - GAME_OPTION_ALLOWEXIT = 4; - GAME_OPTION_WEAPONSTAY = 8; - GAME_OPTION_MONSTERS = 16; - GAME_OPTION_BOTVSPLAYER = 32; - GAME_OPTION_BOTVSMONSTER = 64; - GAME_OPTION_DMKEYS = 128; - GAME_OPTION_TEAMHITTRACE = 256; - GAME_OPTION_TEAMHITPROJECTILE = 512; - GAME_OPTION_TEAMABSORBDAMAGE = 1024; - GAME_OPTION_ALLOWDROPFLAG = 2048; - GAME_OPTION_THROWFLAG = 4096; - GAME_OPTION_RULEZRANDOM = 8192; - GAME_OPTION_ITEMALLRANDOM = 16384; - GAME_OPTION_ITEMHELPRANDOM = 32768; - GAME_OPTION_ITEMAMMORANDOM = 65536; - GAME_OPTION_ITEMWEAPONRANDOM = 131072; + GAME_OPTION_RESERVED = 1 shl 0; + GAME_OPTION_TEAMDAMAGE = 1 shl 1; + GAME_OPTION_ALLOWEXIT = 1 shl 2; + GAME_OPTION_WEAPONSTAY = 1 shl 3; + GAME_OPTION_MONSTERS = 1 shl 4; + GAME_OPTION_BOTVSPLAYER = 1 shl 5; + GAME_OPTION_BOTVSMONSTER = 1 shl 6; + GAME_OPTION_DMKEYS = 1 shl 7; + GAME_OPTION_TEAMHITTRACE = 1 shl 8; + GAME_OPTION_TEAMHITPROJECTILE = 1 shl 9; + GAME_OPTION_TEAMABSORBDAMAGE = 1 shl 10; + GAME_OPTION_ALLOWDROPFLAG = 1 shl 11; + GAME_OPTION_THROWFLAG = 1 shl 12; + GAME_OPTION_POWERUPRANDOM = 1 shl 13; + GAME_OPTION_ITEMALLRANDOM = 1 shl 14; + GAME_OPTION_ITEMHELPRANDOM = 1 shl 15; + GAME_OPTION_ITEMAMMORANDOM = 1 shl 16; + GAME_OPTION_ITEMWEAPONRANDOM = 1 shl 17; STATE_NONE = 0; STATE_MENU = 1; @@ -3873,7 +3873,7 @@ begin p.DrawPain(); p.DrawPickup(); - p.DrawRulez(); + p.DrawOverlay(); if gShowMap then DrawMinimap(p, _TRect(0, 0, 128, 128)); if g_Debug_Player then g_Player_DrawDebug(p); @@ -3885,9 +3885,20 @@ var px: Integer = -1; py: Integer = -1; begin - if g_profile_frame_draw and (profileFrameDraw <> nil) then px := px-drawProfiles(px, py, profileFrameDraw); - if g_profile_collision and (profMapCollision <> nil) then begin px := px-drawProfiles(px, py, profMapCollision); py -= calcProfilesHeight(profMonsLOS); end; - if g_profile_los and (profMonsLOS <> nil) then begin px := px-drawProfiles(px, py, profMonsLOS); py -= calcProfilesHeight(profMonsLOS); end; + if g_profile_frame_draw and (profileFrameDraw <> nil) then + px -= drawProfiles(px, py, profileFrameDraw); + + if g_profile_collision and (profMapCollision <> nil) then + begin + px -= drawProfiles(px, py, profMapCollision); + py -= calcProfilesHeight(profMonsLOS); + end; + + if g_profile_los and (profMonsLOS <> nil) then + begin + px -= drawProfiles(px, py, profMonsLOS); + py -= calcProfilesHeight(profMonsLOS); + end; end; procedure g_Game_Draw(); @@ -4376,7 +4387,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; g_Console_Add(Format(_lc[I_PLAYER_JOIN], [gPlayer1.Name]), True); if g_Game_IsServer and g_Game_IsNet then MH_SEND_PlayerCreate(gPlayer1.UID); @@ -4410,7 +4421,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; - gPlayer2.SkipFist := gPlayer2Settings.SkipFist; + gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist; g_Console_Add(Format(_lc[I_PLAYER_JOIN], [gPlayer2.Name]), True); if g_Game_IsServer and g_Game_IsNet then MH_SEND_PlayerCreate(gPlayer2.UID); @@ -4493,21 +4504,21 @@ begin g_Game_ClearLoading(); // Íàñòðîéêè èãðû: - FillByte(gGameSettings, SizeOf(TGameSettings), 0); + gGameSettings := Default(TGameSettings); gAimLine := False; gShowMap := False; gGameSettings.GameType := GT_SINGLE; gGameSettings.MaxLives := 0; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ALLOWEXIT; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_MONSTERS; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_BOTVSMONSTER; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_TEAMHITPROJECTILE; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_TEAMHITTRACE; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_RULEZRANDOM; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMALLRANDOM; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMHELPRANDOM; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMAMMORANDOM; - gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMWEAPONRANDOM; + gGameSettings.Options := GAME_OPTION_ALLOWEXIT + or GAME_OPTION_MONSTERS + or GAME_OPTION_BOTVSMONSTER + or GAME_OPTION_TEAMHITPROJECTILE + or GAME_OPTION_TEAMHITTRACE + or GAME_OPTION_POWERUPRANDOM + or GAME_OPTION_ITEMALLRANDOM + or GAME_OPTION_ITEMHELPRANDOM + or GAME_OPTION_ITEMAMMORANDOM + or GAME_OPTION_ITEMWEAPONRANDOM; gSwitchGameMode := GM_SINGLE; gLMSRespawn := LMS_RESPAWN_NONE; @@ -4534,7 +4545,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; nPl := 1; // Ñîçäàíèå âòîðîãî èãðîêà, åñëè åñòü: @@ -4553,7 +4564,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; - gPlayer2.SkipFist := gPlayer2Settings.SkipFist; + gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist; Inc(nPl); end; @@ -4636,7 +4647,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; Inc(nPl); end; @@ -4656,7 +4667,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; - gPlayer2.SkipFist := gPlayer2Settings.SkipFist; + gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist; Inc(nPl); end; @@ -4749,7 +4760,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; end; if nPlayers >= 2 then @@ -4768,7 +4779,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; - gPlayer2.SkipFist := gPlayer2Settings.SkipFist; + gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist; end; g_Game_SetLoadingText(_lc[I_LOAD_HOST], 0, False); @@ -4946,7 +4957,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; gPlayer1.UID := NetPlrUID1; gPlayer1.Reset(True); @@ -5395,7 +5406,7 @@ begin if gGameSettings.GameMode = GM_COOP then begin gPlayers[i].Frags := 0; - gPlayers[i].RecallState; + gPlayers[i].RestoreState; end; if (gPlayer1 = nil) and (gSpectLatchPID1 > 0) then gPlayer1 := g_Player_Get(gSpectLatchPID1); @@ -5582,403 +5593,371 @@ begin stat := nil; cmd := LowerCase(P[0]); - if cmd = 'g_gamemode' then - begin - if (Length(P) > 1) then - begin - a := g_Game_TextToMode(P[1]); - if a = GM_SINGLE then a := GM_COOP; - gsGameMode := g_Game_ModeToText(a); - if g_Game_IsServer then + case cmd of + 'g_gamemode': begin + if (Length(P) > 1) then begin - gSwitchGameMode := a; - if (gGameOn and (gGameSettings.GameMode = GM_SINGLE)) or - (gState = STATE_INTERSINGLE) then - gSwitchGameMode := GM_SINGLE; - if not gGameOn then - gGameSettings.GameMode := gSwitchGameMode; + a := g_Game_TextToMode(P[1]); + if a = GM_SINGLE then a := GM_COOP; + gsGameMode := g_Game_ModeToText(a); + if g_Game_IsServer then + begin + gSwitchGameMode := a; + if (gGameOn and (gGameSettings.GameMode = GM_SINGLE)) or + (gState = STATE_INTERSINGLE) then + gSwitchGameMode := GM_SINGLE; + if not gGameOn then + gGameSettings.GameMode := gSwitchGameMode; + end; end; - end; - if gSwitchGameMode = gGameSettings.GameMode then - g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CURRENT], - [g_Game_ModeToText(gGameSettings.GameMode)])) - else - g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CHANGE], - [g_Game_ModeToText(gGameSettings.GameMode), - g_Game_ModeToText(gSwitchGameMode)])); - end - else if cmd = 'g_friendlyfire' then - begin - ParseGameFlag(GAME_OPTION_TEAMDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON); - end - else if cmd = 'g_friendly_absorb_damage' then - begin - ParseGameFlag(GAME_OPTION_TEAMABSORBDAMAGE, I_MSG_FRIENDLY_ABSORB_DAMAGE_OFF, I_MSG_FRIENDLY_ABSORB_DAMAGE_ON); - end - else if cmd = 'g_friendly_hit_trace' then - begin - ParseGameFlag(GAME_OPTION_TEAMHITTRACE, I_MSG_FRIENDLY_HIT_TRACE_OFF, I_MSG_FRIENDLY_HIT_TRACE_ON); - end - else if cmd = 'g_friendly_hit_projectile' then - begin - ParseGameFlag(GAME_OPTION_TEAMHITPROJECTILE, I_MSG_FRIENDLY_PROJECT_TRACE_OFF, I_MSG_FRIENDLY_PROJECT_TRACE_ON); - end - else if cmd = 'g_items_all_respawn_random' then - begin - ParseGameFlag(GAME_OPTION_ITEMALLRANDOM, I_MSG_ITEM_ALL_RANDOM_OFF, I_MSG_ITEM_ALL_RANDOM_ON, False); - end - else if cmd = 'g_items_help_respawn_random' then - begin - ParseGameFlag(GAME_OPTION_ITEMHELPRANDOM, I_MSG_ITEM_HELP_RANDOM_OFF, I_MSG_ITEM_HELP_RANDOM_ON, False); - end - else if cmd = 'g_items_ammo_respawn_random' then - begin - ParseGameFlag(GAME_OPTION_ITEMAMMORANDOM, I_MSG_ITEM_AMMO_RANDOM_OFF, I_MSG_ITEM_AMMO_RANDOM_ON, False); - end - else if cmd = 'g_items_weapon_respawn_random' then - begin - ParseGameFlag(GAME_OPTION_ITEMWEAPONRANDOM, I_MSG_ITEM_WEAPON_RANDOM_OFF, I_MSG_ITEM_WEAPON_RANDOM_ON); - end - else if cmd = 'g_powerup_randomize_respawn' then - begin - ParseGameFlag(GAME_OPTION_RULEZRANDOM, I_MSG_RULEZ_RANDOM_OFF, I_MSG_RULEZ_RANDOM_ON, False); - end - else if cmd = 'g_weaponstay' then - begin - ParseGameFlag(GAME_OPTION_WEAPONSTAY, I_MSG_WEAPONSTAY_OFF, I_MSG_WEAPONSTAY_ON); - end - else if cmd = 'g_allow_exit' then - begin - ParseGameFlag(GAME_OPTION_ALLOWEXIT, I_MSG_ALLOWEXIT_OFF, I_MSG_ALLOWEXIT_ON, True); - end - else if cmd = 'g_allow_monsters' then - begin - ParseGameFlag(GAME_OPTION_MONSTERS, I_MSG_ALLOWMON_OFF, I_MSG_ALLOWMON_ON, True); - end - else if cmd = 'g_allow_dropflag' then - begin - ParseGameFlag(GAME_OPTION_ALLOWDROPFLAG, I_MSG_ALLOWDROPFLAG_OFF, I_MSG_ALLOWDROPFLAG_ON); - end - else if cmd = 'g_throw_flag' then - begin - ParseGameFlag(GAME_OPTION_THROWFLAG, I_MSG_THROWFLAG_OFF, I_MSG_THROWFLAG_ON); - end - else if cmd = 'g_bot_vsplayers' then - begin - ParseGameFlag(GAME_OPTION_BOTVSPLAYER, I_MSG_BOTSVSPLAYERS_OFF, I_MSG_BOTSVSPLAYERS_ON); - end - else if cmd = 'g_bot_vsmonsters' then - begin - ParseGameFlag(GAME_OPTION_BOTVSMONSTER, I_MSG_BOTSVSMONSTERS_OFF, I_MSG_BOTSVSMONSTERS_ON); - end - else if cmd = 'g_dm_keys' then - begin - ParseGameFlag(GAME_OPTION_DMKEYS, I_MSG_DMKEYS_OFF, I_MSG_DMKEYS_ON, True); - end - else if cmd = 'g_gameflags' then - begin - if Length(P) > 1 then - begin - gsGameFlags := StrToDWordDef(P[1], gsGameFlags); - if g_Game_IsServer then + if gSwitchGameMode = gGameSettings.GameMode then + g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CURRENT], + [g_Game_ModeToText(gGameSettings.GameMode)])) + else + g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CHANGE], + [g_Game_ModeToText(gGameSettings.GameMode), + g_Game_ModeToText(gSwitchGameMode)])); + end; + + 'g_friendlyfire': + ParseGameFlag(GAME_OPTION_TEAMDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON); + 'g_friendly_absorb_damage': + ParseGameFlag(GAME_OPTION_TEAMABSORBDAMAGE, I_MSG_FRIENDLY_ABSORB_DAMAGE_OFF, I_MSG_FRIENDLY_ABSORB_DAMAGE_ON); + 'g_friendly_hit_trace': + ParseGameFlag(GAME_OPTION_TEAMHITTRACE, I_MSG_FRIENDLY_HIT_TRACE_OFF, I_MSG_FRIENDLY_HIT_TRACE_ON); + 'g_friendly_hit_projectile': + ParseGameFlag(GAME_OPTION_TEAMHITPROJECTILE, I_MSG_FRIENDLY_PROJECT_TRACE_OFF, I_MSG_FRIENDLY_PROJECT_TRACE_ON); + 'g_items_all_respawn_random': + ParseGameFlag(GAME_OPTION_ITEMALLRANDOM, I_MSG_ITEM_ALL_RANDOM_OFF, I_MSG_ITEM_ALL_RANDOM_ON, False); + 'g_items_help_respawn_random': + ParseGameFlag(GAME_OPTION_ITEMHELPRANDOM, I_MSG_ITEM_HELP_RANDOM_OFF, I_MSG_ITEM_HELP_RANDOM_ON, False); + 'g_items_ammo_respawn_random': + ParseGameFlag(GAME_OPTION_ITEMAMMORANDOM, I_MSG_ITEM_AMMO_RANDOM_OFF, I_MSG_ITEM_AMMO_RANDOM_ON, False); + 'g_items_weapon_respawn_random': + ParseGameFlag(GAME_OPTION_ITEMWEAPONRANDOM, I_MSG_ITEM_WEAPON_RANDOM_OFF, I_MSG_ITEM_WEAPON_RANDOM_ON); + 'g_powerup_randomize_respawn': + ParseGameFlag(GAME_OPTION_POWERUPRANDOM, I_MSG_POWERUP_RANDOM_OFF, I_MSG_POWERUP_RANDOM_ON, False); + 'g_weaponstay': + ParseGameFlag(GAME_OPTION_WEAPONSTAY, I_MSG_WEAPONSTAY_OFF, I_MSG_WEAPONSTAY_ON); + 'g_allow_exit': + ParseGameFlag(GAME_OPTION_ALLOWEXIT, I_MSG_ALLOWEXIT_OFF, I_MSG_ALLOWEXIT_ON, True); + 'g_allow_monsters': + ParseGameFlag(GAME_OPTION_MONSTERS, I_MSG_ALLOWMON_OFF, I_MSG_ALLOWMON_ON, True); + 'g_allow_dropflag': + ParseGameFlag(GAME_OPTION_ALLOWDROPFLAG, I_MSG_ALLOWDROPFLAG_OFF, I_MSG_ALLOWDROPFLAG_ON); + 'g_throw_flag': + ParseGameFlag(GAME_OPTION_THROWFLAG, I_MSG_THROWFLAG_OFF, I_MSG_THROWFLAG_ON); + 'g_bot_vsplayers': + ParseGameFlag(GAME_OPTION_BOTVSPLAYER, I_MSG_BOTSVSPLAYERS_OFF, I_MSG_BOTSVSPLAYERS_ON); + 'g_bot_vsmonsters': + ParseGameFlag(GAME_OPTION_BOTVSMONSTER, I_MSG_BOTSVSMONSTERS_OFF, I_MSG_BOTSVSMONSTERS_ON); + 'g_dm_keys': + ParseGameFlag(GAME_OPTION_DMKEYS, I_MSG_DMKEYS_OFF, I_MSG_DMKEYS_ON, True); + + 'g_gameflags': begin + if Length(P) > 1 then begin - gGameSettings.Options := gsGameFlags; - if g_Game_IsNet then MH_SEND_GameSettings; + gsGameFlags := StrToDWordDef(P[1], gsGameFlags); + if g_Game_IsServer then + begin + gGameSettings.Options := gsGameFlags; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format('%s %u', [cmd, gsGameFlags])); end; - g_Console_Add(Format('%s %u', [cmd, gsGameFlags])); - end - else if cmd = 'g_warmup_time' then - begin - if Length(P) > 1 then - begin - gsWarmupTime := nclamp(StrToIntDef(P[1], gsWarmupTime), 0, $FFFF); - if g_Game_IsServer then + 'g_warmup_time': begin + if Length(P) > 1 then begin - gGameSettings.WarmupTime := gsWarmupTime; - // extend warmup if it's already going - if gLMSRespawn = LMS_RESPAWN_WARMUP then + gsWarmupTime := nclamp(StrToIntDef(P[1], gsWarmupTime), 0, $FFFF); + if g_Game_IsServer then begin - gLMSRespawnTime := gTime + gsWarmupTime * 1000; - if g_Game_IsNet then MH_SEND_GameEvent(NET_EV_LMS_WARMUP, gLMSRespawnTime - gTime); + gGameSettings.WarmupTime := gsWarmupTime; + // extend warmup if it's already going + if gLMSRespawn = LMS_RESPAWN_WARMUP then + begin + gLMSRespawnTime := gTime + gsWarmupTime * 1000; + if g_Game_IsNet then MH_SEND_GameEvent(NET_EV_LMS_WARMUP, gLMSRespawnTime - gTime); + end; + if g_Game_IsNet then MH_SEND_GameSettings; end; - if g_Game_IsNet then MH_SEND_GameSettings; end; + + g_Console_Add(Format(_lc[I_MSG_WARMUP], [Integer(gsWarmupTime)])); + if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); end; - g_Console_Add(Format(_lc[I_MSG_WARMUP], [Integer(gsWarmupTime)])); - if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); - end - else if cmd = 'g_spawn_invul' then - begin - if Length(P) > 1 then - begin - gsSpawnInvul := nclamp(StrToIntDef(P[1], gsSpawnInvul), 0, $FFFF); - if g_Game_IsServer then + 'g_spawn_invul': begin + if Length(P) > 1 then begin - gGameSettings.SpawnInvul := gsSpawnInvul; - if g_Game_IsNet then MH_SEND_GameSettings; + gsSpawnInvul := nclamp(StrToIntDef(P[1], gsSpawnInvul), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.SpawnInvul := gsSpawnInvul; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format('%s %d', [cmd, Integer(gsSpawnInvul)])); end; - g_Console_Add(Format('%s %d', [cmd, Integer(gsSpawnInvul)])); - end - else if cmd = 'g_item_respawn_time' then - begin - if Length(P) > 1 then - begin - gsItemRespawnTime := nclamp(StrToIntDef(P[1], gsItemRespawnTime), 0, $FFFF); - if g_Game_IsServer then + 'g_item_respawn_time': begin + if Length(P) > 1 then begin - gGameSettings.ItemRespawnTime := gsItemRespawnTime; - if g_Game_IsNet then MH_SEND_GameSettings; + gsItemRespawnTime := nclamp(StrToIntDef(P[1], gsItemRespawnTime), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.ItemRespawnTime := gsItemRespawnTime; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnTime)])); + if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); end; - g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnTime)])); - if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); - end - else if cmd = 'g_item_time_random' then - begin - if Length(P) > 1 then - begin - gsItemRespawnRandom := nclamp(StrToIntDef(P[1], gsItemRespawnRandom), 0, $FFFF); - if g_Game_IsServer then + 'g_item_time_random': begin + if Length(P) > 1 then begin - gGameSettings.ItemRespawnRandom := gsItemRespawnRandom; - if g_Game_IsNet then MH_SEND_GameSettings; + gsItemRespawnRandom := nclamp(StrToIntDef(P[1], gsItemRespawnRandom), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.ItemRespawnRandom := gsItemRespawnRandom; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnRandom)])); + if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); end; - g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnRandom)])); - if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); - end - else if cmd = 'g_powerup_respawn_time' then - begin - if Length(P) > 1 then - begin - gsRulezRespawnTime := nclamp(StrToIntDef(P[1], gsRulezRespawnTime), 0, $FFFF); - if g_Game_IsServer then + 'g_powerup_respawn_time': begin + if Length(P) > 1 then begin - gGameSettings.RulezRespawnTime := gsRulezRespawnTime; - if g_Game_IsNet then MH_SEND_GameSettings; + gsPowerupRespawnTime := nclamp(StrToIntDef(P[1], gsPowerupRespawnTime), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.PowerupRespawnTime := gsPowerupRespawnTime; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format('%s %d', [cmd, Integer(gsPowerupRespawnTime)])); + if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); end; - g_Console_Add(Format('%s %d', [cmd, Integer(gsRulezRespawnTime)])); - if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); - end - else if cmd = 'g_powerup_time_random' then - begin - if Length(P) > 1 then - begin - gsRulezRespawnRandom := nclamp(StrToIntDef(P[1], gsRulezRespawnRandom), 0, $FFFF); - if g_Game_IsServer then + 'g_powerup_time_random': begin + if Length(P) > 1 then begin - gGameSettings.RulezRespawnRandom := gsRulezRespawnRandom; - if g_Game_IsNet then MH_SEND_GameSettings; + gsPowerupRespawnRandom := nclamp(StrToIntDef(P[1], gsPowerupRespawnRandom), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.PowerupRespawnRandom := gsPowerupRespawnRandom; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format('%s %d', [cmd, Integer(gsPowerupRespawnRandom)])); + if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); end; - g_Console_Add(Format('%s %d', [cmd, Integer(gsRulezRespawnRandom)])); - if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); - end - else if cmd = 'sv_intertime' then - begin - if (Length(P) > 1) then - gDefInterTime := Min(Max(StrToIntDef(P[1], gDefInterTime), -1), 120); + 'sv_intertime': begin + if (Length(P) > 1) then + gDefInterTime := Min(Max(StrToIntDef(P[1], gDefInterTime), -1), 120); - g_Console_Add(cmd + ' = ' + IntToStr(gDefInterTime)); - end - else if cmd = 'g_max_particles' then - begin - if Length(p) = 2 then - begin - a := Max(0, StrToIntDef(p[1], 0)); - g_GFX_SetMax(a) - end - else if Length(p) = 1 then - begin - e_LogWritefln('%s', [g_GFX_GetMax()]) - end - else - begin - e_LogWritefln('usage: %s ', [cmd]) - end - end - else if cmd = 'g_max_shells' then - begin - if Length(p) = 2 then - begin - a := Max(0, StrToIntDef(p[1], 0)); - g_Shells_SetMax(a) - end - else if Length(p) = 1 then - begin - e_LogWritefln('%s', [g_Shells_GetMax()]) - end - else - begin - e_LogWritefln('usage: %s ', [cmd]) - end - end - else if cmd = 'g_max_gibs' then - begin - if Length(p) = 2 then - begin - a := Max(0, StrToIntDef(p[1], 0)); - g_Gibs_SetMax(a) - end - else if Length(p) = 1 then - begin - e_LogWritefln('%s', [g_Gibs_GetMax()]) - end - else - begin - e_LogWritefln('usage: %s ', [cmd]) - end - end - else if cmd = 'g_max_corpses' then - begin - if Length(p) = 2 then - begin - a := Max(0, StrToIntDef(p[1], 0)); - g_Corpses_SetMax(a) - end - else if Length(p) = 1 then - begin - e_LogWritefln('%s', [g_Corpses_GetMax()]) - end - else - begin - e_LogWritefln('usage: %s ', [cmd]) - end - end - else if cmd = 'g_force_model' then - begin - if Length(p) = 2 then - begin - a := StrToIntDef(p[1], 0); - g_Force_Model_Set(a); - if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then + g_Console_Add(cmd + ' = ' + IntToStr(gDefInterTime)); + end; + + 'g_max_particles': begin + if Length(p) = 2 then begin - for a := Low(gPlayers) to High(gPlayers) do + a := Max(0, StrToIntDef(p[1], 0)); + g_GFX_SetMax(a) + end + else if Length(p) = 1 then + begin + e_LogWritefln('%s', [g_GFX_GetMax()]) + end + else + begin + e_LogWritefln('usage: %s ', [cmd]) + end + end; + + 'g_max_shells': begin + if Length(p) = 2 then + begin + a := Max(0, StrToIntDef(p[1], 0)); + g_Shells_SetMax(a) + end + else if Length(p) = 1 then + begin + e_LogWritefln('%s', [g_Shells_GetMax()]) + end + else + begin + e_LogWritefln('usage: %s ', [cmd]) + end + end; + + 'g_max_gibs': begin + if Length(p) = 2 then + begin + a := Max(0, StrToIntDef(p[1], 0)); + g_Gibs_SetMax(a) + end + else if Length(p) = 1 then + begin + e_LogWritefln('%s', [g_Gibs_GetMax()]) + end + else + begin + e_LogWritefln('usage: %s ', [cmd]) + end + end; + + 'g_max_corpses': begin + if Length(p) = 2 then + begin + a := Max(0, StrToIntDef(p[1], 0)); + g_Corpses_SetMax(a) + end + else if Length(p) = 1 then + begin + e_LogWritefln('%s', [g_Corpses_GetMax()]) + end + else + begin + e_LogWritefln('usage: %s ', [cmd]) + end + end; + + 'g_force_model': begin + if Length(p) = 2 then + begin + a := StrToIntDef(p[1], 0); + g_Force_Model_Set(a); + if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then begin - if (gPlayers[a] <> nil) then + for a := Low(gPlayers) to High(gPlayers) do begin - if (gPlayers[a].UID = gPlayer1.UID) then - continue - else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then - continue; - gPlayers[a].setModel(g_Forced_Model_GetName()); - end; + if (gPlayers[a] <> nil) then + begin + if (gPlayers[a].UID = gPlayer1.UID) then + continue + else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then + continue; + gPlayers[a].setModel(g_Forced_Model_GetName()); + end; + end end - end - else if (g_Force_Model_Get() = 0) and (gPlayers <> nil) then - begin - for a := Low(gPlayers) to High(gPlayers) do + else if (g_Force_Model_Get() = 0) and (gPlayers <> nil) then begin - if (gPlayers[a] <> nil) then + for a := Low(gPlayers) to High(gPlayers) do begin - if (gPlayers[a].UID = gPlayer1.UID) then - continue - else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then - continue; - gPlayers[a].setModel(gPlayers[a].FActualModelName); - end; + if (gPlayers[a] <> nil) then + begin + if (gPlayers[a].UID = gPlayer1.UID) then + continue + else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then + continue; + gPlayers[a].setModel(gPlayers[a].FActualModelName); + end; + end end end - end - end - else if cmd = 'g_force_model_name' then - begin - if (Length(P) > 1) then - begin - cmd := b_Text_Unformat(P[1]); - g_Forced_Model_SetName(cmd); - if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then + end; + + 'g_force_model_name': begin + if (Length(P) > 1) then begin - for a := Low(gPlayers) to High(gPlayers) do + cmd := b_Text_Unformat(P[1]); + g_Forced_Model_SetName(cmd); + if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then begin - if (gPlayers[a] <> nil) then + for a := Low(gPlayers) to High(gPlayers) do begin - if (gPlayers[a].UID = gPlayer1.UID) then - continue - else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then - continue; - gPlayers[a].setModel(g_Forced_Model_GetName()); - end; + if (gPlayers[a] <> nil) then + begin + if (gPlayers[a].UID = gPlayer1.UID) then + continue + else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then + continue; + gPlayers[a].setModel(g_Forced_Model_GetName()); + end; + end end end - end - end - else if cmd = 'g_scorelimit' then - begin - if Length(P) > 1 then - begin - gsScoreLimit := nclamp(StrToIntDef(P[1], gsScoreLimit), 0, $FFFF); + end; - if g_Game_IsServer then + 'g_scorelimit': begin + if Length(P) > 1 then begin - b := 0; - if gGameSettings.GameMode = GM_DM then - begin // DM - stat := g_Player_GetStats(); - if stat <> nil then - for a := 0 to High(stat) do - if stat[a].Frags > b then - b := stat[a].Frags; - end - else // TDM/CTF - b := Max(gTeamStat[TEAM_RED].Score, gTeamStat[TEAM_BLUE].Score); + gsScoreLimit := nclamp(StrToIntDef(P[1], gsScoreLimit), 0, $FFFF); - // if someone has a higher score, set it to that instead - gsScoreLimit := max(gsScoreLimit, b); - gGameSettings.ScoreLimit := gsScoreLimit; + if g_Game_IsServer then + begin + b := 0; + if gGameSettings.GameMode = GM_DM then + begin // DM + stat := g_Player_GetStats(); + if stat <> nil then + for a := 0 to High(stat) do + if stat[a].Frags > b then + b := stat[a].Frags; + end + else // TDM/CTF + b := Max(gTeamStat[TEAM_RED].Score, gTeamStat[TEAM_BLUE].Score); - if g_Game_IsNet then MH_SEND_GameSettings; + // if someone has a higher score, set it to that instead + gsScoreLimit := max(gsScoreLimit, b); + gGameSettings.ScoreLimit := gsScoreLimit; + + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + + g_Console_Add(Format(_lc[I_MSG_SCORE_LIMIT], [Integer(gsScoreLimit)])); end; - g_Console_Add(Format(_lc[I_MSG_SCORE_LIMIT], [Integer(gsScoreLimit)])); - end - else if cmd = 'g_timelimit' then - begin - if Length(P) > 1 then - begin - gsTimeLimit := nclamp(StrToIntDef(P[1], gsTimeLimit), 0, $FFFF); - if g_Game_IsServer then + 'g_timelimit': begin + if Length(P) > 1 then begin - gGameSettings.TimeLimit := gsTimeLimit; - if g_Game_IsNet then MH_SEND_GameSettings; + gsTimeLimit := nclamp(StrToIntDef(P[1], gsTimeLimit), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.TimeLimit := gsTimeLimit; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; + g_Console_Add(Format(_lc[I_MSG_TIME_LIMIT], + [gsTimeLimit div 3600, + (gsTimeLimit div 60) mod 60, + gsTimeLimit mod 60])); end; - g_Console_Add(Format(_lc[I_MSG_TIME_LIMIT], - [gsTimeLimit div 3600, - (gsTimeLimit div 60) mod 60, - gsTimeLimit mod 60])); - end - else if cmd = 'g_max_bots' then - begin - if Length(P) > 1 then - gMaxBots := nclamp(StrToIntDef(P[1], gMaxBots), 0, 127); - g_Console_Add('g_max_bots = ' + IntToStr(gMaxBots)); - end - else if cmd = 'g_maxlives' then - begin - if Length(P) > 1 then - begin - gsMaxLives := nclamp(StrToIntDef(P[1], gsMaxLives), 0, $FFFF); - if g_Game_IsServer then + + 'g_max_bots': begin + if Length(P) > 1 then + gMaxBots := nclamp(StrToIntDef(P[1], gMaxBots), 0, 127); + g_Console_Add('g_max_bots = ' + IntToStr(gMaxBots)); + end; + + 'g_maxlives': begin + if Length(P) > 1 then begin - gGameSettings.MaxLives := gsMaxLives; - if g_Game_IsNet then MH_SEND_GameSettings; + gsMaxLives := nclamp(StrToIntDef(P[1], gsMaxLives), 0, $FFFF); + if g_Game_IsServer then + begin + gGameSettings.MaxLives := gsMaxLives; + if g_Game_IsNet then MH_SEND_GameSettings; + end; end; - end; - g_Console_Add(Format(_lc[I_MSG_LIVES], [Integer(gsMaxLives)])); + g_Console_Add(Format(_lc[I_MSG_LIVES], [Integer(gsMaxLives)])); + end; end; end; @@ -6137,25 +6116,25 @@ begin if (Length(P) = 2) then gPlayer2Settings.SwitchToEmpty := EnsureRange(StrTointDef(P[1], 0), 0, 1); end; - 'p1_skip_fist': + 'p1_skip_ironfist': begin if (Length(P) = 2) then - gPlayer1Settings.SkipFist := EnsureRange(StrTointDef(P[1], 0), 0, 1); + gPlayer1Settings.SkipIronFist := EnsureRange(StrTointDef(P[1], 0), 0, 1); end; - 'p2_skip_fist': + 'p2_skip_ironfist': begin if (Length(P) = 2) then - gPlayer2Settings.SkipFist := EnsureRange(StrTointDef(P[1], 0), 0, 1); + gPlayer2Settings.SkipIronFist := EnsureRange(StrTointDef(P[1], 0), 0, 1); end; - 'p1_priority_kastet': + 'p1_priority_ironfist': begin if (Length(P) = 2) then - gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); + gPlayer1Settings.WeaponPreferences[WEAPON_IRONFIST] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; - 'p2_priority_kastet': + 'p2_priority_ironfist': begin if (Length(P) = 2) then - gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); + gPlayer2Settings.WeaponPreferences[WEAPON_IRONFIST] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; 'p1_priority_saw': begin @@ -6170,12 +6149,12 @@ begin 'p1_priority_pistol': begin if (Length(P) = 2) then - gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); + gPlayer1Settings.WeaponPreferences[WEAPON_PISTOL] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; 'p2_priority_pistol': begin if (Length(P) = 2) then - gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); + gPlayer2Settings.WeaponPreferences[WEAPON_PISTOL] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; 'p1_priority_shotgun1': begin @@ -6237,15 +6216,15 @@ begin if (Length(P) = 2) then gPlayer2Settings.WeaponPreferences[WEAPON_BFG] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; - 'p1_priority_super': + 'p1_priority_superchaingun': begin if (Length(P) = 2) then - gPlayer1Settings.WeaponPreferences[WEAPON_SUPERPULEMET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); + gPlayer1Settings.WeaponPreferences[WEAPON_SUPERCHAINGUN] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; - 'p2_priority_super': + 'p2_priority_superchaingun': begin if (Length(P) = 2) then - gPlayer2Settings.WeaponPreferences[WEAPON_SUPERPULEMET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); + gPlayer2Settings.WeaponPreferences[WEAPON_SUPERCHAINGUN] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1); end; 'p1_priority_flamethrower': begin @@ -6298,7 +6277,7 @@ begin if cmd = 'd_window' then begin g_Console_Add(Format('gScreenWidth = %d, gScreenHeight = %d', [gScreenWidth, gScreenHeight])); - g_Console_Add(Format('gScreenWidth = %d, gScreenHeight = %d', [gScreenWidth, gScreenHeight])); + g_Console_Add(Format('gWinSizeX = %d, gWinSizeY = %d', [gWinSizeX, gWinSizeY])); end else if cmd = 'd_sounds' then begin @@ -6445,7 +6424,7 @@ begin begin cmd := LowerCase(P[f]); if cmd = 'health' then begin plr.RestoreHealthArmor(); g_Console_Add('player feels himself better'); continue; end; - if (cmd = 'all') {or (cmd = 'weapons')} then begin plr.AllRulez(False); g_Console_Add('player got the gifts'); continue; end; + if (cmd = 'all') {or (cmd = 'weapons')} then begin plr.TankRamboCheats(False); g_Console_Add('player got the gifts'); continue; end; if cmd = 'exit' then begin if gTriggers <> nil then @@ -6504,8 +6483,8 @@ begin if cmd = 'plasmagunzz' then begin plr.GiveItem(ITEM_WEAPON_PLASMA); plr.GiveItem(ITEM_AMMO_CELL_BIG); g_Console_Add('player got a plasma gun'); continue; end; if cmd = 'bfgzz' then begin plr.GiveItem(ITEM_WEAPON_BFG); plr.GiveItem(ITEM_AMMO_CELL_BIG); g_Console_Add('player got a BFG-9000'); continue; end; - if cmd = 'superchaingun' then begin plr.GiveItem(ITEM_WEAPON_SUPERPULEMET); g_Console_Add('player got a superchaingun'); continue; end; - if cmd = 'superchaingunzz' then begin plr.GiveItem(ITEM_WEAPON_SUPERPULEMET); plr.GiveItem(ITEM_AMMO_BULLETS_BOX); g_Console_Add('player got a superchaingun'); continue; end; + if cmd = 'superchaingun' then begin plr.GiveItem(ITEM_WEAPON_SUPERCHAINGUN); g_Console_Add('player got a superchaingun'); continue; end; + if cmd = 'superchaingunzz' then begin plr.GiveItem(ITEM_WEAPON_SUPERCHAINGUN); plr.GiveItem(ITEM_AMMO_BULLETS_BOX); g_Console_Add('player got a superchaingun'); continue; end; if (cmd = 'flamer') or (cmd = 'flamethrower') or (cmd = 'ft') then begin plr.GiveItem(ITEM_WEAPON_FLAMETHROWER); g_Console_Add('player got a flame thrower'); continue; end; if (cmd = 'flamerzz') or (cmd = 'flamethrowerzz') or (cmd = 'ftzz') then begin plr.GiveItem(ITEM_WEAPON_FLAMETHROWER); plr.GiveItem(ITEM_AMMO_FUELCAN); g_Console_Add('player got a flame thrower'); continue; end; @@ -7139,7 +7118,7 @@ begin g_Console_Add(cmd + ' [MAP] [# players]'); Exit; end; - // game not started yet, load fist map from some wad + // game not started yet, load first map from some wad found := false; s := addWadExtension(P[1]); found := e_FindResource(AllMapDirs, s); diff --git a/src/game/g_gui.pas b/src/game/g_gui.pas index 2200703..5530268 100644 --- a/src/game/g_gui.pas +++ b/src/game/g_gui.pas @@ -2675,10 +2675,9 @@ begin if FModel = nil then Exit; - if FModel.Weapon < WP_LAST then - FModel.SetWeapon(FModel.Weapon+1) - else - FModel.SetWeapon(WEAPON_KASTET); + if FModel.Weapon < WP_LAST + then FModel.SetWeapon(FModel.Weapon+1) + else FModel.SetWeapon(WEAPON_IRONFIST); end; procedure TGUIModelView.OnMessage(var Msg: TMessage); diff --git a/src/game/g_items.pas b/src/game/g_items.pas index 4f0bd80..9784d39 100644 --- a/src/game/g_items.pas +++ b/src/game/g_items.pas @@ -179,7 +179,7 @@ const ((62), (16)), // WEAPON_ROCKETLAUNCHER ((54), (16)), // WEAPON_PLASMA ((61), (36)), // WEAPON_BFG - ((54), (16)), // WEAPON_SUPERPULEMET + ((54), (16)), // WEAPON_SUPERCHAINGUN (( 9), (11)), // AMMO_BULLETS ((28), (16)), // AMMO_BULLETS_BOX ((15), ( 7)), // AMMO_SHELLS @@ -192,7 +192,7 @@ const ((16), (16)), // KEY_RED ((16), (16)), // KEY_GREEN ((16), (16)), // KEY_BLUE - (( 1), ( 1)), // WEAPON_KASTET + (( 1), ( 1)), // WEAPON_IRONFIST ((43), (16)), // WEAPON_PISTOL ((14), (18)), // BOTTLE ((16), (15)), // HELMET @@ -206,16 +206,16 @@ begin g_Texture_Get('ITEM_MEDKIT_SMALL', gItemsTexturesID[ITEM_MEDKIT_SMALL]); g_Texture_Get('ITEM_MEDKIT_LARGE', gItemsTexturesID[ITEM_MEDKIT_LARGE]); g_Texture_Get('ITEM_MEDKIT_BLACK', gItemsTexturesID[ITEM_MEDKIT_BLACK]); - g_Texture_Get('ITEM_SUIT', gItemsTexturesID[ITEM_SUIT]); - g_Texture_Get('ITEM_OXYGEN', gItemsTexturesID[ITEM_OXYGEN]); + g_Texture_Get('ITEM_WEAPON_IRONFIST', gItemsTexturesID[ITEM_WEAPON_IRONFIST]); g_Texture_Get('ITEM_WEAPON_SAW', gItemsTexturesID[ITEM_WEAPON_SAW]); + g_Texture_Get('ITEM_WEAPON_PISTOL', gItemsTexturesID[ITEM_WEAPON_PISTOL]); g_Texture_Get('ITEM_WEAPON_SHOTGUN1', gItemsTexturesID[ITEM_WEAPON_SHOTGUN1]); g_Texture_Get('ITEM_WEAPON_SHOTGUN2', gItemsTexturesID[ITEM_WEAPON_SHOTGUN2]); g_Texture_Get('ITEM_WEAPON_CHAINGUN', gItemsTexturesID[ITEM_WEAPON_CHAINGUN]); g_Texture_Get('ITEM_WEAPON_ROCKETLAUNCHER', gItemsTexturesID[ITEM_WEAPON_ROCKETLAUNCHER]); g_Texture_Get('ITEM_WEAPON_PLASMA', gItemsTexturesID[ITEM_WEAPON_PLASMA]); g_Texture_Get('ITEM_WEAPON_BFG', gItemsTexturesID[ITEM_WEAPON_BFG]); - g_Texture_Get('ITEM_WEAPON_SUPERPULEMET', gItemsTexturesID[ITEM_WEAPON_SUPERPULEMET]); + g_Texture_Get('ITEM_WEAPON_SUPERCHAINGUN', gItemsTexturesID[ITEM_WEAPON_SUPERCHAINGUN]); g_Texture_Get('ITEM_WEAPON_FLAMETHROWER', gItemsTexturesID[ITEM_WEAPON_FLAMETHROWER]); g_Texture_Get('ITEM_AMMO_BULLETS', gItemsTexturesID[ITEM_AMMO_BULLETS]); g_Texture_Get('ITEM_AMMO_BULLETS_BOX', gItemsTexturesID[ITEM_AMMO_BULLETS_BOX]); @@ -230,8 +230,8 @@ begin g_Texture_Get('ITEM_KEY_RED', gItemsTexturesID[ITEM_KEY_RED]); g_Texture_Get('ITEM_KEY_GREEN', gItemsTexturesID[ITEM_KEY_GREEN]); g_Texture_Get('ITEM_KEY_BLUE', gItemsTexturesID[ITEM_KEY_BLUE]); - g_Texture_Get('ITEM_WEAPON_KASTET', gItemsTexturesID[ITEM_WEAPON_KASTET]); - g_Texture_Get('ITEM_WEAPON_PISTOL', gItemsTexturesID[ITEM_WEAPON_PISTOL]); + g_Texture_Get('ITEM_OXYGEN', gItemsTexturesID[ITEM_OXYGEN]); + g_Texture_Get('ITEM_SUIT', gItemsTexturesID[ITEM_SUIT]); end; procedure g_Items_LoadData(); @@ -239,7 +239,7 @@ begin e_WriteLog('Loading items data...', TMsgType.Notify); g_Sound_CreateWADEx('SOUND_ITEM_RESPAWNITEM', GameWAD+':SOUNDS\RESPAWNITEM'); - g_Sound_CreateWADEx('SOUND_ITEM_GETRULEZ', GameWAD+':SOUNDS\GETRULEZ'); + g_Sound_CreateWADEx('SOUND_ITEM_GETPOWERUP', GameWAD+':SOUNDS\GETPOWERUP'); g_Sound_CreateWADEx('SOUND_ITEM_GETWEAPON', GameWAD+':SOUNDS\GETWEAPON'); g_Sound_CreateWADEx('SOUND_ITEM_GETITEM', GameWAD+':SOUNDS\GETITEM'); @@ -258,16 +258,17 @@ begin g_Frames_CreateWAD(nil, 'FRAMES_FLAG_DOM', GameWAD+':TEXTURES\FLAGDOM', 64, 64, 5, False); g_Texture_CreateWADEx('ITEM_MEDKIT_SMALL', GameWAD+':TEXTURES\MED1'); g_Texture_CreateWADEx('ITEM_MEDKIT_LARGE', GameWAD+':TEXTURES\MED2'); + g_Texture_CreateWADEx('ITEM_MEDKIT_BLACK', GameWAD+':TEXTURES\BMED'); + g_Texture_CreateWADEx('ITEM_WEAPON_IRONFIST', GameWAD+':TEXTURES\IRONFIST'); g_Texture_CreateWADEx('ITEM_WEAPON_SAW', GameWAD+':TEXTURES\SAW'); g_Texture_CreateWADEx('ITEM_WEAPON_PISTOL', GameWAD+':TEXTURES\PISTOL'); - g_Texture_CreateWADEx('ITEM_WEAPON_KASTET', GameWAD+':TEXTURES\KASTET'); g_Texture_CreateWADEx('ITEM_WEAPON_SHOTGUN1', GameWAD+':TEXTURES\SHOTGUN1'); g_Texture_CreateWADEx('ITEM_WEAPON_SHOTGUN2', GameWAD+':TEXTURES\SHOTGUN2'); g_Texture_CreateWADEx('ITEM_WEAPON_CHAINGUN', GameWAD+':TEXTURES\MGUN'); g_Texture_CreateWADEx('ITEM_WEAPON_ROCKETLAUNCHER', GameWAD+':TEXTURES\RLAUNCHER'); g_Texture_CreateWADEx('ITEM_WEAPON_PLASMA', GameWAD+':TEXTURES\PGUN'); g_Texture_CreateWADEx('ITEM_WEAPON_BFG', GameWAD+':TEXTURES\BFG'); - g_Texture_CreateWADEx('ITEM_WEAPON_SUPERPULEMET', GameWAD+':TEXTURES\SPULEMET'); + g_Texture_CreateWADEx('ITEM_WEAPON_SUPERCHAINGUN', GameWAD+':TEXTURES\SCHAINGUN'); g_Texture_CreateWADEx('ITEM_WEAPON_FLAMETHROWER', GameWAD+':TEXTURES\FLAMETHROWER'); g_Texture_CreateWADEx('ITEM_AMMO_BULLETS', GameWAD+':TEXTURES\CLIP'); g_Texture_CreateWADEx('ITEM_AMMO_BULLETS_BOX', GameWAD+':TEXTURES\AMMO'); @@ -284,8 +285,6 @@ begin g_Texture_CreateWADEx('ITEM_KEY_BLUE', GameWAD+':TEXTURES\KEYB'); g_Texture_CreateWADEx('ITEM_OXYGEN', GameWAD+':TEXTURES\OXYGEN'); g_Texture_CreateWADEx('ITEM_SUIT', GameWAD+':TEXTURES\SUIT'); - g_Texture_CreateWADEx('ITEM_WEAPON_KASTET', GameWAD+':TEXTURES\KASTET'); - g_Texture_CreateWADEx('ITEM_MEDKIT_BLACK', GameWAD+':TEXTURES\BMED'); InitTextures(); @@ -298,7 +297,7 @@ begin e_WriteLog('Releasing items data...', TMsgType.Notify); g_Sound_Delete('SOUND_ITEM_RESPAWNITEM'); - g_Sound_Delete('SOUND_ITEM_GETRULEZ'); + g_Sound_Delete('SOUND_ITEM_GETPOWERUP'); g_Sound_Delete('SOUND_ITEM_GETWEAPON'); g_Sound_Delete('SOUND_ITEM_GETITEM'); @@ -317,16 +316,17 @@ begin g_Frames_DeleteByName('FRAMES_FLAG_DOM'); g_Texture_Delete('ITEM_MEDKIT_SMALL'); g_Texture_Delete('ITEM_MEDKIT_LARGE'); + g_Texture_Delete('ITEM_MEDKIT_BLACK'); + g_Texture_Delete('ITEM_WEAPON_IRONFIST'); g_Texture_Delete('ITEM_WEAPON_SAW'); g_Texture_Delete('ITEM_WEAPON_PISTOL'); - g_Texture_Delete('ITEM_WEAPON_KASTET'); g_Texture_Delete('ITEM_WEAPON_SHOTGUN1'); g_Texture_Delete('ITEM_WEAPON_SHOTGUN2'); g_Texture_Delete('ITEM_WEAPON_CHAINGUN'); g_Texture_Delete('ITEM_WEAPON_ROCKETLAUNCHER'); g_Texture_Delete('ITEM_WEAPON_PLASMA'); g_Texture_Delete('ITEM_WEAPON_BFG'); - g_Texture_Delete('ITEM_WEAPON_SUPERPULEMET'); + g_Texture_Delete('ITEM_WEAPON_SUPERCHAINGUN'); g_Texture_Delete('ITEM_WEAPON_FLAMETHROWER'); g_Texture_Delete('ITEM_AMMO_BULLETS'); g_Texture_Delete('ITEM_AMMO_BULLETS_BOX'); @@ -343,8 +343,6 @@ begin g_Texture_Delete('ITEM_KEY_BLUE'); g_Texture_Delete('ITEM_OXYGEN'); g_Texture_Delete('ITEM_SUIT'); - g_Texture_Delete('ITEM_WEAPON_KASTET'); - g_Texture_Delete('ITEM_MEDKIT_BLACK'); freeIds.Free(); freeIds := nil; @@ -546,14 +544,14 @@ var i, j, k: Integer; ID: DWord; Anim: TAnimation; - m, ItemRespawnTime, RulezRespawnTime: Word; + m, ItemRespawnTime{, PowerupRespawnTime}: Word; r, nxt: Boolean; begin if (ggItems = nil) then exit; // respawn items in 15 seconds regardless of settings during warmup ItemRespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.ItemRespawnTime, 15); - RulezRespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.RulezRespawnTime, 15); + //PowerupRespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.PowerupRespawnTime, 15); for i := 0 to High(ggItems) do begin @@ -744,26 +742,27 @@ begin // Items respawn timer ggItems[ID].RespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.ItemRespawnTime, 15) * 36; - // Rulez respawn timer + // Powerup respawn timer if ggItems[ID].ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, ITEM_INVIS, ITEM_MEDKIT_BLACK, ITEM_JETPACK, ITEM_SUIT] then begin - ggItems[ID].RespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.RulezRespawnTime, 15) * 36; + ggItems[ID].RespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.PowerupRespawnTime, 15) * 36; end; // #### Random powerup respawn #### - if LongBool(gGameSettings.Options and GAME_OPTION_RULEZRANDOM) then + if LongBool(gGameSettings.Options and GAME_OPTION_POWERUPRANDOM) then begin if ggItems[ID].ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, ITEM_INVIS, ITEM_MEDKIT_BLACK, ITEM_JETPACK, ITEM_SUIT] then begin - ggItems[ID].RespawnTime := Max(1, (gGameSettings.RulezRespawnTime + RandomRange(-gGameSettings.RulezRespawnRandom, gGameSettings.RulezRespawnRandom + 1)) * 36); - //e_logwritefln ('Randomized rulez %s time: %s', [ggItems[ID].ItemType, ggItems[ID].RespawnTime]); + ggItems[ID].RespawnTime := Max(1, (gGameSettings.PowerupRespawnTime + + RandomRange(-gGameSettings.PowerupRespawnRandom, gGameSettings.PowerupRespawnRandom + 1)) * 36); + //e_logwritefln ('Randomized powerup %s time: %s', [ggItems[ID].ItemType, ggItems[ID].RespawnTime]); end; end; // #### Random item respawn #### - // Randomize respawn for all items (excluding rulez) + // Randomize respawn for all items (excluding powerups) if LongBool(gGameSettings.Options and GAME_OPTION_ITEMALLRANDOM) then begin if ggItems[ID].ItemType in [ITEM_MEDKIT_SMALL, ITEM_MEDKIT_LARGE, ITEM_ARMOR_GREEN, @@ -773,7 +772,7 @@ begin ITEM_AMMO_CELL, ITEM_AMMO_CELL_BIG, ITEM_AMMO_FUELCAN, ITEM_AMMO_BACKPACK, ITEM_WEAPON_SAW, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2, ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, - ITEM_WEAPON_PLASMA, ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, + ITEM_WEAPON_PLASMA, ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER] then begin ggItems[ID].RespawnTime := Max(1, (gGameSettings.ItemRespawnTime + RandomRange(-gGameSettings.ItemRespawnRandom, gGameSettings.ItemRespawnRandom + 1)) * 36); @@ -810,7 +809,7 @@ begin begin if ggItems[ID].ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2, ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA, - ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER] then + ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER] then begin ggItems[ID].RespawnTime := Max(1, (gGameSettings.ItemRespawnTime + RandomRange(-gGameSettings.ItemRespawnRandom, gGameSettings.ItemRespawnRandom + 1)) * 36); //e_logwritefln ('Randomized weapon %s time: %s', [ggItems[ID].ItemType, ggItems[ID].RespawnTime]); @@ -1020,14 +1019,14 @@ begin it := @ggItems[idx]; if gSoundEffectsDF then begin - if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, - ITEM_INVIS, ITEM_MEDKIT_BLACK, ITEM_JETPACK] then + if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, ITEM_INVIS, + ITEM_JETPACK, ITEM_MEDKIT_BLACK] then begin - g_Sound_PlayExAt('SOUND_ITEM_GETRULEZ', x, y); + g_Sound_PlayExAt('SOUND_ITEM_GETPOWERUP', x, y); end else if it.ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2, ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA, - ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER, + ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER, ITEM_AMMO_BACKPACK] then begin g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON', x, y); @@ -1039,14 +1038,14 @@ begin end else begin - if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_SUIT, - ITEM_MEDKIT_BLACK, ITEM_INVUL, ITEM_INVIS, ITEM_JETPACK] then + if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, ITEM_INVIS, + ITEM_SUIT, ITEM_JETPACK, ITEM_MEDKIT_BLACK] then begin - g_Sound_PlayExAt('SOUND_ITEM_GETRULEZ', x, y); + g_Sound_PlayExAt('SOUND_ITEM_GETPOWERUP', x, y); end else if it.ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2, ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA, - ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER] then + ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER] then begin g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON', x, y); end diff --git a/src/game/g_language.pas b/src/game/g_language.pas index 7fcf0dd..424e553 100644 --- a/src/game/g_language.pas +++ b/src/game/g_language.pas @@ -186,10 +186,10 @@ type I_MENU_WEAPONS_STAY, I_MENU_ENABLE_TEAM_DAMAGE_ABSOBR, I_MENU_ENABLE_MONSTERS, - I_MENU_ENABLE_RULEZ_RANDOM, + I_MENU_ENABLE_POWERUP_RANDOM, I_MENU_ENABLE_ITEM_RANDOM, - I_MENU_RULEZ_RESPAWN_TIME, - I_MENU_RULEZ_RESPAWN_RANDOM, + I_MENU_POWERUP_RESPAWN_TIME, + I_MENU_POWERUP_RESPAWN_RANDOM, I_MENU_BOTS_VS, I_MENU_BOTS_VS_PLAYERS, I_MENU_BOTS_VS_MONSTERS, @@ -340,9 +340,9 @@ type I_MENU_WEAPON_SWITCH_PREFERENCE, I_MENU_WEAPON_SWITCH_PRIORITY, I_MENU_WEAPON_ALLOW_EMPTY, - I_MENU_KASTET_ALLOW, - I_MENU_KASTET_ALLOW_BERSERK, - I_MENU_KASTET_ALLOW_ALWAYS, + I_MENU_IRONFIST_ALLOW, + I_MENU_IRONFIST_ALLOW_BERSERK, + I_MENU_IRONFIST_ALLOW_ALWAYS, I_MENU_WEAPON_PRIORITY_PLAYER_1, I_MENU_WEAPON_PRIORITY_PLAYER_2, @@ -643,8 +643,8 @@ type I_MSG_SPECT_HUD_OFF, I_MSG_PING_ON, I_MSG_PING_OFF, - I_MSG_RULEZ_RANDOM_ON, - I_MSG_RULEZ_RANDOM_OFF, + I_MSG_POWERUP_RANDOM_ON, + I_MSG_POWERUP_RANDOM_OFF, I_MSG_ITEM_ALL_RANDOM_ON, I_MSG_ITEM_ALL_RANDOM_OFF, I_MSG_ITEM_HELP_RANDOM_ON, @@ -866,7 +866,7 @@ const ('GAME CHEAT AUTOMAP', 'ID2DT', 'ID2DT'), - ('GAME WEAPON0', 'Fist', + ('GAME WEAPON0', 'Iron Fist', 'Êàñòåò'), ('GAME WEAPON1', 'Chainsaw', 'Áåíçîïèëà'), @@ -1031,13 +1031,13 @@ const 'Ïîãëîùåíèå óðîíà ñîþçíèêàìè:'), ('MENU ENABLE MONSTERS', 'Enable monsters:', 'Ìîíñòðû:'), - ('MENU ENABLE RULEZ RANDOM', 'Enable random powerup respawn:', + ('MENU ENABLE POWERUP RANDOM', 'Enable random powerup respawn:', 'Ñëó÷àéíîå âîñïîëíåíèå áîíóñîâ:'), ('MENU ENABLE ITEM RANDOM', 'Enable item powerup respawn:', 'Ñëó÷àéíî âîñïîëíÿåìûå ïðåäìåòû:'), - ('MENU RULEZ RESPAWN TIME', 'Powerup respawn time:', + ('MENU POWERUP RESPAWN TIME', 'Powerup respawn time:', 'Âðåìÿ îòñóòñòâèÿ áîíóñîâ:'), - ('MENU RULEZ RESPAWN RANDOM', 'Additive time for powerup timer:', + ('MENU POWERUP RESPAWN RANDOM', 'Additive time for powerup timer:', 'Ðàçáðîñ îòñ÷¸òà äëÿ áîíóñîâ:'), ('MENU BOTS VS', 'Bots fight with:', 'Áîòû ïðîòèâ:'), @@ -1328,11 +1328,11 @@ const 'Ïðèîðèòåòíîñòü îðóæèÿ'), ('MENU WEAPON ALLOW EMPTY', 'Skip empty weapons', 'Ïðîïóñêàòü ïóñòîå îðóæèå'), - ('MENU KASTET ALLOW', 'Switch to fist', + ('MENU IRON FIST ALLOW', 'Switch to Iron Fist', 'Âûáèðàòü êàñòåò'), - ('MENU KASTET ALLOW BERSERK', 'Only with berserk', + ('MENU IRON FIST ALLOW BERSERK', 'Only with berserk', 'Òîëüêî ñ áåðñåðêîì'), - ('MENU KASTET ALLOW ALWAYS', 'Always', + ('MENU IRON FIST ALLOW ALWAYS', 'Always', 'Âñåãäà'), ('MENU WEAPON PRIORITY PLAYER 1', 'Player 1 Priority', 'Ïðèîðèòåò îðóæèÿ (1)'), @@ -1905,9 +1905,9 @@ const 'Ïèíã êëèåíòà ïîêàçûâàåòñÿ'), ('MSG PING OFF', 'Client ping display off', 'Ïèíã êëèåíòà íå ïîêàçûâàåòñÿ'), - ('MSG RULEZ RANDOM ON', 'Random respawn enabled for powerups', + ('MSG POWERUP RANDOM ON', 'Random respawn enabled for powerups', 'Ñëó÷àéíîå âîñïîëíåíèå âêëþ÷åíî äëÿ áîíóñîâ'), - ('MSG RULEZ RANDOM OFF', 'Random respawn for powerups disabled', + ('MSG POWERUP RANDOM OFF', 'Random respawn for powerups disabled', 'Ñëó÷àéíîå âîñïîëíåíèå äëÿ áîíóñîâ âûêëþ÷åíî'), ('MSG ITEM ALL RANDOM ON', 'Random respawn enabled for all items', 'Ñëó÷àéíîå âîñïîëíåíèå âêëþ÷åíî äëÿ âñåõ ïðåäìåòîâ'), diff --git a/src/game/g_main.pas b/src/game/g_main.pas index 3d7ee91..80b5e7a 100644 --- a/src/game/g_main.pas +++ b/src/game/g_main.pas @@ -797,15 +797,15 @@ begin // RAMBO if CheckCheat(I_GAME_CHEAT_WEAPONS) then begin - if gPlayer1 <> nil then gPlayer1.AllRulez(False); - if gPlayer2 <> nil then gPlayer2.AllRulez(False); + if gPlayer1 <> nil then gPlayer1.TankRamboCheats(False); + if gPlayer2 <> nil then gPlayer2.TankRamboCheats(False); goto Cheated; end; // TANK if CheckCheat(I_GAME_CHEAT_HEALTH) then begin - if gPlayer1 <> nil then gPlayer1.AllRulez(True); - if gPlayer2 <> nil then gPlayer2.AllRulez(True); + if gPlayer1 <> nil then gPlayer1.TankRamboCheats(True); + if gPlayer2 <> nil then gPlayer2.TankRamboCheats(True); goto Cheated; end; // IDDQD diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index 80989a8..fac3ca7 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -353,7 +353,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu')); gPlayer1Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex; gPlayer1Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex; - gPlayer1Settings.SkipFist := TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex; + gPlayer1Settings.SkipIronFist := TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu')); with menu do begin @@ -366,7 +366,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu')); gPlayer2Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex; gPlayer2Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex; - gPlayer2Settings.SkipFist := TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex; + gPlayer2Settings.SkipIronFist := TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu')); with menu do begin @@ -393,7 +393,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; - gPlayer1.SkipFist := gPlayer1Settings.SkipFist; + gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist; if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer1.UID); end; @@ -409,7 +409,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; - gPlayer2.SkipFist := gPlayer2Settings.SkipFist; + gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist; //if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer2.UID); end; end; @@ -646,7 +646,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu')); TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer1Settings.WeaponSwitch; TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer1Settings.SwitchToEmpty; - TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex := gPlayer1Settings.SkipFist; + TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex := gPlayer1Settings.SkipIronFist; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu')); for i := WP_FIRST to WP_LAST+1 do begin @@ -657,7 +657,7 @@ begin menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu')); TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer2Settings.WeaponSwitch; TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer2Settings.SwitchToEmpty; - TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex := gPlayer2Settings.SkipFist; + TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex := gPlayer2Settings.SkipIronFist; menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu')); for i := WP_FIRST to WP_LAST+1 do begin @@ -780,11 +780,11 @@ begin begin gsItemRespawnTime := StrToIntDef(TGUIEdit(GetControl('edItemRespawnTime')).Text, 0); gsItemRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edItemRespawnRandom')).Text, 0); - gsRulezRespawnTime := StrToIntDef(TGUIEdit(GetControl('edRulezRespawnTime')).Text, 0); - gsRulezRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edRulezRespawnRandom')).Text, 0); + gsPowerupRespawnTime := StrToIntDef(TGUIEdit(GetControl('edPowerupRespawnTime')).Text, 0); + gsPowerupRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edPowerupRespawnRandom')).Text, 0); - if TGUISwitch(GetControl('swRulezRandom')).ItemIndex = 0 then - gsGameFlags := gsGameFlags or GAME_OPTION_RULEZRANDOM; + if TGUISwitch(GetControl('swPowerupRandom')).ItemIndex = 0 then + gsGameFlags := gsGameFlags or GAME_OPTION_POWERUPRANDOM; case TGUISwitch(GetControl('swItemsRandom')).ItemIndex of 1: gsGameFlags := gsGameFlags or GAME_OPTION_ITEMHELPRANDOM; @@ -799,8 +799,8 @@ begin // TODO: get this crap out of here gGameSettings.ItemRespawnTime := gsItemRespawnTime; gGameSettings.ItemRespawnRandom := gsItemRespawnRandom; - gGameSettings.RulezRespawnTime := gsRulezRespawnTime; - gGameSettings.RulezRespawnRandom := gsRulezRespawnRandom; + gGameSettings.PowerupRespawnTime := gsPowerupRespawnTime; + gGameSettings.PowerupRespawnRandom := gsPowerupRespawnRandom; end; end; @@ -2870,12 +2870,12 @@ begin Name := 'mItemsRespawnMenu'; // Switches separate from the time entry fields - with AddSwitch(_lc[I_MENU_ENABLE_RULEZ_RANDOM]) do + with AddSwitch(_lc[I_MENU_ENABLE_POWERUP_RANDOM]) do begin - Name := 'swRulezRandom'; + Name := 'swPowerupRandom'; AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); - if LongBool(gsGameFlags and GAME_OPTION_RULEZRANDOM) then + if LongBool(gsGameFlags and GAME_OPTION_POWERUPRANDOM) then ItemIndex := 0 else ItemIndex := 1; @@ -2927,24 +2927,24 @@ begin if gsItemRespawnTime > 0 then Text := IntToStr(gsItemRespawnRandom); end; - // Rulez Respawn block - with AddEdit(_lc[I_MENU_RULEZ_RESPAWN_TIME]) do + // Powerup Respawn block + with AddEdit(_lc[I_MENU_POWERUP_RESPAWN_TIME]) do begin - Name := 'edRulezRespawnTime'; + Name := 'edPowerupRespawnTime'; OnlyDigits := True; Width := 4; MaxLength := 5; - if gsRulezRespawnTime > 0 then - Text := IntToStr(gsRulezRespawnTime); + if gsPowerupRespawnTime > 0 then + Text := IntToStr(gsPowerupRespawnTime); end; - with AddEdit(_lc[I_MENU_RULEZ_RESPAWN_RANDOM]) do + with AddEdit(_lc[I_MENU_POWERUP_RESPAWN_RANDOM]) do begin - Name := 'edRulezRespawnRandom'; + Name := 'edPowerupRespawnRandom'; OnlyDigits := True; Width := 4; MaxLength := 5; - if gsRulezRespawnRandom > 0 then - Text := IntToStr(gsRulezRespawnRandom); + if gsPowerupRespawnRandom > 0 then + Text := IntToStr(gsPowerupRespawnRandom); end; AddSpace(); end; @@ -3419,11 +3419,11 @@ begin AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); end; - with AddSwitch(_lc[I_MENU_KASTET_ALLOW]) do + with AddSwitch(_lc[I_MENU_IRONFIST_ALLOW]) do begin - Name := 'swWeaponAllowFist'; - AddItem(_lc[I_MENU_KASTET_ALLOW_ALWAYS]); - AddItem(_lc[I_MENU_KASTET_ALLOW_BERSERK]); + Name := 'swWeaponAllowIronFist'; + AddItem(_lc[I_MENU_IRONFIST_ALLOW_ALWAYS]); + AddItem(_lc[I_MENU_IRONFIST_ALLOW_BERSERK]); end; AddButton(@ProcOptionsPlayerP1WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]); ReAlign(); @@ -3478,11 +3478,11 @@ begin AddItem(_lc[I_MENU_YES]); AddItem(_lc[I_MENU_NO]); end; - with AddSwitch(_lc[I_MENU_KASTET_ALLOW]) do + with AddSwitch(_lc[I_MENU_IRONFIST_ALLOW]) do begin - Name := 'swWeaponAllowFist'; - AddItem(_lc[I_MENU_KASTET_ALLOW_ALWAYS]); - AddItem(_lc[I_MENU_KASTET_ALLOW_BERSERK]); + Name := 'swWeaponAllowIronFist'; + AddItem(_lc[I_MENU_IRONFIST_ALLOW_ALWAYS]); + AddItem(_lc[I_MENU_IRONFIST_ALLOW_BERSERK]); end; AddButton(@ProcOptionsPlayerP2WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]); ReAlign(); diff --git a/src/game/g_monsters.pas b/src/game/g_monsters.pas index 875db7f..4108d51 100644 --- a/src/game/g_monsters.pas +++ b/src/game/g_monsters.pas @@ -2681,7 +2681,7 @@ begin if (gPlayers <> nil) then for a := 0 to High(gPlayers) do if (gPlayers[a] <> nil) and (gPlayers[a].alive) - and (not gPlayers[a].NoTarget) and (gPlayers[a].FMegaRulez[MR_INVIS] < gTime) then + and (not gPlayers[a].NoTarget) and (gPlayers[a].FPowerups[MR_INVIS] < gTime) then with gPlayers[a] do if g_Look(@FObj, @Obj, FDirection) then begin @@ -4175,7 +4175,7 @@ begin (FBehaviour <> BH_CANNIBAL) and (FBehaviour <> BH_GOOD) then for a := 0 to High(gPlayers) do if (gPlayers[a] <> nil) and (gPlayers[a].alive) - and (not gPlayers[a].NoTarget) and (gPlayers[a].FMegaRulez[MR_INVIS] < gTime) then + and (not gPlayers[a].NoTarget) and (gPlayers[a].FPowerups[MR_INVIS] < gTime) then begin if g_Look(@FObj, @gPlayers[a].Obj, FDirection) then begin diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index b090aa3..15da1c6 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -462,7 +462,7 @@ begin WeapSwitchMode := WeapSwitch; SetWeaponPrefs(TmpPrefArray); SwitchToEmpty := SwitchEmpty; - SkipFist := SkipF; + SkipIronFist := SkipF; if (g_Force_Model_Get() <> 0) then SetModel(g_Forced_Model_GetName()); Reset(True); @@ -776,8 +776,8 @@ begin if (TmpSwEmpty <> Pl.SwitchToEmpty) then Pl.SwitchToEmpty := TmpSwEmpty; - if (TmpSkipF <> Pl.SkipFist) then - Pl.SkipFist := TmpSkipF; + if (TmpSkipF <> Pl.SkipIronFist) then + Pl.SkipIronFist := TmpSkipF; MH_SEND_PlayerSettings(Pl.UID, TmpModel); end; @@ -1323,13 +1323,13 @@ begin NetOut.Write(FMaxAmmo[I]); for I := MR_SUIT to MR_MAX do - NetOut.Write(LongWord(FMegaRulez[I])); + NetOut.Write(LongWord(FPowerups[I])); - NetOut.Write(Byte(R_ITEM_BACKPACK in FRulez)); - NetOut.Write(Byte(R_KEY_RED in FRulez)); - NetOut.Write(Byte(R_KEY_GREEN in FRulez)); - NetOut.Write(Byte(R_KEY_BLUE in FRulez)); - NetOut.Write(Byte(R_BERSERK in FRulez)); + NetOut.Write(Byte(R_ITEM_BACKPACK in FInventory)); + NetOut.Write(Byte(R_KEY_RED in FInventory)); + NetOut.Write(Byte(R_KEY_GREEN in FInventory)); + NetOut.Write(Byte(R_KEY_BLUE in FInventory)); + NetOut.Write(Byte(R_BERSERK in FInventory)); NetOut.Write(Frags); NetOut.Write(Death); @@ -2527,19 +2527,14 @@ begin FMaxAmmo[I] := M.ReadWord(); for I := MR_SUIT to MR_MAX do - FMegaRulez[I] := M.ReadLongWord(); - - FRulez := []; - if (M.ReadByte() <> 0) then - FRulez := FRulez + [R_ITEM_BACKPACK]; - if (M.ReadByte() <> 0) then - FRulez := FRulez + [R_KEY_RED]; - if (M.ReadByte() <> 0) then - FRulez := FRulez + [R_KEY_GREEN]; - if (M.ReadByte() <> 0) then - FRulez := FRulez + [R_KEY_BLUE]; - if (M.ReadByte() <> 0) then - FRulez := FRulez + [R_BERSERK]; + FPowerups[I] := M.ReadLongWord(); + + FInventory := []; + if (M.ReadByte() <> 0) then FInventory += [R_ITEM_BACKPACK]; + if (M.ReadByte() <> 0) then FInventory += [R_KEY_RED]; + if (M.ReadByte() <> 0) then FInventory += [R_KEY_GREEN]; + if (M.ReadByte() <> 0) then FInventory += [R_KEY_BLUE]; + if (M.ReadByte() <> 0) then FInventory += [R_BERSERK]; Frags := M.ReadLongInt(); Death := M.ReadLongInt(); @@ -3181,7 +3176,7 @@ begin for i := WP_FIRST to WP_LAST + 1 do NetOut.Write(gPlayer1Settings.WeaponPreferences[i]); NetOut.Write(gPlayer1Settings.SwitchToEmpty); - NetOut.Write(gPlayer1Settings.SkipFist); + NetOut.Write(gPlayer1Settings.SkipIronFist); g_Net_Client_Send(True); end; @@ -3334,7 +3329,7 @@ begin for i := WP_FIRST to WP_LAST + 1 do NetOut.Write(gPlayer1Settings.WeaponPreferences[i]); NetOut.Write(gPlayer1Settings.SwitchToEmpty); - NetOut.Write(gPlayer1Settings.SkipFist); + NetOut.Write(gPlayer1Settings.SkipIronFist); g_Net_Client_Send(True); end; diff --git a/src/game/g_options.pas b/src/game/g_options.pas index 23bb91b..22ebe3e 100644 --- a/src/game/g_options.pas +++ b/src/game/g_options.pas @@ -75,8 +75,8 @@ var gsSpawnInvul: Integer = 0; gsItemRespawnTime: Word = 60; gsItemRespawnRandom: Word = 0; - gsRulezRespawnTime: Word = 60; - gsRulezRespawnRandom: Word = 0; + gsPowerupRespawnTime: Word = 60; + gsPowerupRespawnRandom: Word = 0; gsWarmupTime: Word = 30; implementation @@ -271,8 +271,8 @@ begin gsSpawnInvul := 0; gsItemRespawnTime := 60; gsItemRespawnRandom := 0; - gsRulezRespawnTime := 60; - gsRulezRespawnRandom := 0; + gsPowerupRespawnTime := 60; + gsPowerupRespawnRandom := 0; gsGameFlags := GAME_OPTION_ALLOWEXIT or GAME_OPTION_DMKEYS or GAME_OPTION_BOTVSPLAYER or GAME_OPTION_BOTVSMONSTER or GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE or @@ -322,8 +322,8 @@ begin SpawnInvul := gsSpawnInvul; ItemRespawnTime := gsItemRespawnTime; ItemRespawnRandom := gsItemRespawnRandom; - RulezRespawnTime := gsRulezRespawnTime; - RulezRespawnRandom := gsRulezRespawnRandom; + PowerupRespawnTime := gsPowerupRespawnTime; + PowerupRespawnRandom := gsPowerupRespawnRandom; WarmupTime := gsWarmupTime; Options := gsGameFlags; end; diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 790d419..6b0c4f5 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -133,7 +133,7 @@ type Ammo: Array [A_BULLETS..A_HIGH] of Word; MaxAmmo: Array [A_BULLETS..A_HIGH] of Word; Weapon: Array [WP_FIRST..WP_LAST] of Boolean; - Rulez: Set of R_ITEM_BACKPACK..R_BERSERK; + Inventory: Set of R_ITEM_BACKPACK..R_BERSERK; Used: Boolean; end; @@ -237,7 +237,7 @@ type procedure Jump(); procedure Use(); - function getNextWeaponIndex (): Byte; // return 255 for "no switch" + function getNextWeaponIndex (): Byte; // returns 255 for "no switch" procedure resetWeaponQueue (); function hasAmmoForWeapon (weapon: Byte): Boolean; function hasAmmoForShooting (weapon: Byte): Boolean; @@ -253,16 +253,16 @@ type FAmmo: Array [A_BULLETS..A_HIGH] of Word; FMaxAmmo: Array [A_BULLETS..A_HIGH] of Word; FWeapon: Array [WP_FIRST..WP_LAST] of Boolean; - FRulez: Set of R_ITEM_BACKPACK..R_BERSERK; + FInventory: Set of R_ITEM_BACKPACK..R_BERSERK; FBerserk: Integer; - FMegaRulez: Array [MR_SUIT..MR_MAX] of DWORD; + FPowerups: Array [MR_SUIT..MR_MAX] of DWORD; FReloading: Array [WP_FIRST..WP_LAST] of Word; FTime: Array [T_RESPAWN..T_FLAGCAP] of DWORD; FKeys: Array [KEY_LEFT..KEY_CHAT] of TKeyState; FWeapSwitchMode: Byte; FWeapPreferences: Array [WP_FIRST .. WP_LAST+1] of Byte; FSwitchToEmpty: Byte; - FSkipFist: Byte; + FSkipIronFist: Byte; FColor: TRGB; FPreferredTeam: Byte; FSpectator: Boolean; @@ -323,7 +323,7 @@ type procedure SetFlag(Flag: Byte); function DropFlag(Silent: Boolean = True; DoThrow: Boolean = False): Boolean; function TryDropFlag(): Boolean; - procedure AllRulez(Health: Boolean); + procedure TankRamboCheats(Health: Boolean); procedure RestoreHealthArmor(); procedure FragCombo(); procedure GiveItem(ItemType: Byte); @@ -339,15 +339,15 @@ type procedure Draw(); virtual; procedure DrawPain(); procedure DrawPickup(); - procedure DrawRulez(); + procedure DrawOverlay(); procedure DrawAim(); procedure DrawIndicator(Color: TRGB); procedure DrawBubble(); procedure DrawGUI(); procedure PreUpdate(); procedure Update(); virtual; - procedure RememberState(); - procedure RecallState(); + procedure PreserveState(); + procedure RestoreState(); procedure SaveState (st: TStream); virtual; procedure LoadState (st: TStream); virtual; procedure PauseSounds(Enable: Boolean); @@ -388,7 +388,7 @@ type property CurrWeap: Byte read FCurrWeap write FCurrWeap; property WeapSwitchMode: Byte read FWeapSwitchMode write FWeapSwitchMode; property SwitchToEmpty: Byte read FSwitchToEmpty write FSwitchToEmpty; - property SkipFist: Byte read FSkipFist write FSkipFist; + property SkipIronFist: Byte read FSkipIronFist write FSkipIronFist; property MonsterKills: Integer read FMonsterKills write FMonsterKills; property Secrets: Integer read FSecrets; property GodMode: Boolean read FGodMode write FGodMode; @@ -706,20 +706,20 @@ const FlyPrecision: 255; Cover: 255; CloseJump: 255; WeaponPrior:(0,0,0,0,0,0,0,0,0,0,0); CloseWeaponPrior:(0,0,0,0,0,0,0,0,0,0,0)); WEAPON_PRIOR1: Array [WP_FIRST..WP_LAST] of Byte = - (WEAPON_FLAMETHROWER, WEAPON_SUPERPULEMET, + (WEAPON_FLAMETHROWER, WEAPON_SUPERCHAINGUN, WEAPON_SHOTGUN2, WEAPON_SHOTGUN1, WEAPON_CHAINGUN, WEAPON_PLASMA, WEAPON_ROCKETLAUNCHER, - WEAPON_BFG, WEAPON_PISTOL, WEAPON_SAW, WEAPON_KASTET); + WEAPON_BFG, WEAPON_PISTOL, WEAPON_SAW, WEAPON_IRONFIST); WEAPON_PRIOR2: Array [WP_FIRST..WP_LAST] of Byte = - (WEAPON_FLAMETHROWER, WEAPON_SUPERPULEMET, + (WEAPON_FLAMETHROWER, WEAPON_SUPERCHAINGUN, WEAPON_BFG, WEAPON_ROCKETLAUNCHER, WEAPON_SHOTGUN2, WEAPON_PLASMA, WEAPON_SHOTGUN1, - WEAPON_CHAINGUN, WEAPON_PISTOL, WEAPON_SAW, WEAPON_KASTET); + WEAPON_CHAINGUN, WEAPON_PISTOL, WEAPON_SAW, WEAPON_IRONFIST); //WEAPON_PRIOR3: Array [WP_FIRST..WP_LAST] of Byte = - // (WEAPON_FLAMETHROWER, WEAPON_SUPERPULEMET, + // (WEAPON_FLAMETHROWER, WEAPON_SUPERCHAINGUN, // WEAPON_BFG, WEAPON_PLASMA, WEAPON_SHOTGUN2, // WEAPON_CHAINGUN, WEAPON_SHOTGUN1, WEAPON_SAW, - // WEAPON_ROCKETLAUNCHER, WEAPON_PISTOL, WEAPON_KASTET); + // WEAPON_ROCKETLAUNCHER, WEAPON_PISTOL, WEAPON_IRONFIST); WEAPON_RELOAD: Array [WP_FIRST..WP_LAST] of Byte = (5, 2, 6, 18, 36, 2, 12, 2, 14, 2, 2); @@ -1529,7 +1529,7 @@ var begin for i := Low(gPlayers) to High(gPlayers) do if (gPlayers[i] <> nil) and gPlayers[i].alive then - gPlayers[i].RememberState; + gPlayers[i].PreserveState; end; procedure g_Player_ResetAll(Force, Silent: Boolean); @@ -2107,17 +2107,17 @@ begin for i := WP_FIRST to WP_LAST do if FWeapon[i] and maySwitch(i) and (FWeapPreferences[i] > FWeapPreferences[testedWeap]) then testedWeap := i; - if (R_BERSERK in FRulez) and (FWeapPreferences[WP_LAST + 1] > FWeapPreferences[testedWeap]) then - testedWeap := WEAPON_KASTET; + if (R_BERSERK in FInventory) and (FWeapPreferences[WP_LAST + 1] > FWeapPreferences[testedWeap]) then + testedWeap := WEAPON_IRONFIST; result := testedWeap; end; function TPlayer.maySwitch(Weapon: Byte) : Boolean; begin result := true; - if (Weapon = WEAPON_KASTET) and (FSkipFist <> 0) then + if (Weapon = WEAPON_IRONFIST) and (FSkipIronFist <> 0) then begin - if (FSkipFist = 1) and (not (R_BERSERK in FRulez)) then + if (FSkipIronFist = 1) and (not (R_BERSERK in FInventory)) then result := false; end else if (FSwitchToEmpty = 0) and (not hasAmmoForShooting(Weapon)) then @@ -2185,12 +2185,12 @@ begin if not PickItem(ItemType, gItems[i].Respawnable, r) then Continue; if ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL] then - g_Sound_PlayExAt('SOUND_ITEM_GETRULEZ', FObj.X, FObj.Y) + g_Sound_PlayExAt('SOUND_ITEM_GETPOWERUP', FObj.X, FObj.Y) else if ItemType in [ITEM_MEDKIT_SMALL, ITEM_MEDKIT_LARGE, ITEM_MEDKIT_BLACK] then g_Sound_PlayExAt('SOUND_ITEM_GETMED', FObj.X, FObj.Y) else g_Sound_PlayExAt('SOUND_ITEM_GETITEM', FObj.X, FObj.Y); - // Íàäî óáðàòü ñ êàðòû, åñëè ýòî íå êëþ÷, êîòîðûì íóæíî ïîäåëèòñÿ ñ äðóãèì èãðîêîì: + // Íàäî óáðàòü ñ êàðòû, åñëè ýòî íå êëþ÷, êîòîðûì íóæíî ïîäåëèòüñÿ ñ äðóãèì èãðîêîì: if r and not ((ItemType in [ITEM_KEY_RED, ITEM_KEY_GREEN, ITEM_KEY_BLUE]) and (gGameSettings.GameType = GT_SINGLE) and (g_Player_GetCount() > 1)) then @@ -2307,15 +2307,15 @@ begin end; end; // Îáíóëèòü äåéñòâèÿ ïðèìî÷åê, ÷òîáû ôîí ïðîïàë - FMegaRulez[MR_SUIT] := 0; - FMegaRulez[MR_INVUL] := 0; - FMegaRulez[MR_INVIS] := 0; + FPowerups[MR_SUIT] := 0; + FPowerups[MR_INVUL] := 0; + FPowerups[MR_INVIS] := 0; FSpawnInvul := 0; FBerserk := 0; end; // Íî îò îñòàëüíîãî ñïàñàåò: - if FMegaRulez[MR_INVUL] >= gTime then + if FPowerups[MR_INVUL] >= gTime then Exit; // ×èò-êîä "ÃÎÐÅÖ": @@ -2603,7 +2603,7 @@ begin end; end; - if (FMegaRulez[MR_INVUL] > gTime) and ((gPlayerDrawn <> Self) or (FSpawnInvul >= gTime)) then + if (FPowerups[MR_INVUL] > gTime) and ((gPlayerDrawn <> Self) or (FSpawnInvul >= gTime)) then if g_Texture_Get('TEXTURE_PLAYER_INVULPENTA', ID) then begin e_GetTextureSize(ID, @w, @h); @@ -2615,13 +2615,13 @@ begin fY+FObj.Rect.Y+(FObj.Rect.Height div 2)-(h div 2)-7+fSlope, 0, True, False); end; - if FMegaRulez[MR_INVIS] > gTime then + if FPowerups[MR_INVIS] > gTime then begin if (gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or ((FTeam = gPlayerDrawn.Team) and (gGameSettings.GameMode <> GM_DM))) then begin - if (FMegaRulez[MR_INVIS] - gTime) <= 2100 then - dr := not Odd((FMegaRulez[MR_INVIS] - gTime) div 300) + if (FPowerups[MR_INVIS] - gTime) <= 2100 then + dr := not Odd((FPowerups[MR_INVIS] - gTime) div 300) else dr := True; if dr then @@ -2646,7 +2646,7 @@ begin end; if (gChatBubble > 0) and (FKeys[KEY_CHAT].Pressed) and not FGhost then - if (FMegaRulez[MR_INVIS] <= gTime) or ((gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or + if (FPowerups[MR_INVIS] <= gTime) or ((gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or ((FTeam = gPlayerDrawn.Team) and (gGameSettings.GameMode <> GM_DM)))) then DrawBubble(); // e_DrawPoint(5, 335, 288, 255, 0, 0); // DL, UR, DL, UR @@ -2880,10 +2880,9 @@ begin e_CharFont_GetSize(gMenuSmallFont, FName, tw, th); e_CharFont_PrintEx(gMenuSmallFont, X+98-(tw div 2), Y+8, FName, _RGB(255, 0, 0)); - if R_BERSERK in FRulez then - e_Draw(gItemsTexturesID[ITEM_MEDKIT_BLACK], X+37, Y+45, 0, True, False) - else - e_Draw(gItemsTexturesID[ITEM_MEDKIT_LARGE], X+37, Y+45, 0, True, False); + if R_BERSERK in FInventory + then e_Draw(gItemsTexturesID[ITEM_MEDKIT_BLACK], X+37, Y+45, 0, True, False) + else e_Draw(gItemsTexturesID[ITEM_MEDKIT_LARGE], X+37, Y+45, 0, True, False); if g_Texture_Get('TEXTURE_PLAYER_ARMORHUD', ID) then e_Draw(ID, X+36, Y+77, 0, True, False); @@ -2899,10 +2898,10 @@ begin s := IntToStr(GetAmmoByWeapon(FCurrWeap)); case FCurrWeap of - WEAPON_KASTET: + WEAPON_IRONFIST: begin s := '--'; - ID := gItemsTexturesID[ITEM_WEAPON_KASTET]; + ID := gItemsTexturesID[ITEM_WEAPON_IRONFIST]; end; WEAPON_SAW: begin @@ -2913,7 +2912,7 @@ begin WEAPON_CHAINGUN: ID := gItemsTexturesID[ITEM_WEAPON_CHAINGUN]; WEAPON_SHOTGUN1: ID := gItemsTexturesID[ITEM_WEAPON_SHOTGUN1]; WEAPON_SHOTGUN2: ID := gItemsTexturesID[ITEM_WEAPON_SHOTGUN2]; - WEAPON_SUPERPULEMET: ID := gItemsTexturesID[ITEM_WEAPON_SUPERPULEMET]; + WEAPON_SUPERCHAINGUN: ID := gItemsTexturesID[ITEM_WEAPON_SUPERCHAINGUN]; WEAPON_ROCKETLAUNCHER: ID := gItemsTexturesID[ITEM_WEAPON_ROCKETLAUNCHER]; WEAPON_PLASMA: ID := gItemsTexturesID[ITEM_WEAPON_PLASMA]; WEAPON_BFG: ID := gItemsTexturesID[ITEM_WEAPON_BFG]; @@ -2924,13 +2923,13 @@ begin e_CharFont_PrintEx(gMenuFont, X+178-tw, Y+158, s, _RGB(255, 0, 0)); e_Draw(ID, X+20, Y+160, 0, True, False); - if R_KEY_RED in FRulez then + if R_KEY_RED in FInventory then e_Draw(gItemsTexturesID[ITEM_KEY_RED], X+78, Y+214, 0, True, False); - if R_KEY_GREEN in FRulez then + if R_KEY_GREEN in FInventory then e_Draw(gItemsTexturesID[ITEM_KEY_GREEN], X+95, Y+214, 0, True, False); - if R_KEY_BLUE in FRulez then + if R_KEY_BLUE in FInventory then e_Draw(gItemsTexturesID[ITEM_KEY_BLUE], X+112, Y+214, 0, True, False); if FJetFuel > 0 then @@ -2973,15 +2972,15 @@ begin end; end; -procedure TPlayer.DrawRulez(); +procedure TPlayer.DrawOverlay(); var dr: Boolean; begin // Ïðè âçÿòèè íåóÿçâèìîñòè ðèñóåòñÿ èíâåðñèîííûé áåëûé ôîí - if (FMegaRulez[MR_INVUL] >= gTime) and (FSpawnInvul < gTime) then + if (FPowerups[MR_INVUL] >= gTime) and (FSpawnInvul < gTime) then begin - if (FMegaRulez[MR_INVUL]-gTime) <= 2100 then - dr := not Odd((FMegaRulez[MR_INVUL]-gTime) div 300) + if (FPowerups[MR_INVUL]-gTime) <= 2100 then + dr := not Odd((FPowerups[MR_INVUL]-gTime) div 300) else dr := True; @@ -2991,10 +2990,10 @@ begin end; // Ïðè âçÿòèè çàùèòíîãî êîñòþìà ðèñóåòñÿ çåëåíîâàòûé ôîí - if FMegaRulez[MR_SUIT] >= gTime then + if FPowerups[MR_SUIT] >= gTime then begin - if (FMegaRulez[MR_SUIT]-gTime) <= 2100 then - dr := not Odd((FMegaRulez[MR_SUIT]-gTime) div 300) + if (FPowerups[MR_SUIT]-gTime) <= 2100 then + dr := not Odd((FPowerups[MR_SUIT]-gTime) div 300) else dr := True; @@ -3060,7 +3059,7 @@ begin FPunchAnim := nil; end; st := 'FRAMES_PUNCH'; - if R_BERSERK in FRulez then + if R_BERSERK in FInventory then st := st + '_BERSERK'; if FKeys[KEY_UP].Pressed then st := st + '_UP' @@ -3097,10 +3096,10 @@ begin yd := wy+firediry(); case FCurrWeap of - WEAPON_KASTET: + WEAPON_IRONFIST: begin DoPunch(); - if R_BERSERK in FRulez then + if R_BERSERK in FInventory then begin //g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID); locobj.X := FObj.X+FObj.Rect.X; @@ -3236,7 +3235,7 @@ begin DidFire := True; end; - WEAPON_SUPERPULEMET: + WEAPON_SUPERCHAINGUN: if FAmmo[A_SHELLS] > 0 then begin g_Weapon_shotgun(wx, wy, xd, yd, FUID); @@ -3293,7 +3292,7 @@ function TPlayer.GetAmmoByWeapon(Weapon: Byte): Word; begin case Weapon of WEAPON_PISTOL, WEAPON_CHAINGUN: Result := FAmmo[A_BULLETS]; - WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERPULEMET: Result := FAmmo[A_SHELLS]; + WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERCHAINGUN: Result := FAmmo[A_SHELLS]; WEAPON_ROCKETLAUNCHER: Result := FAmmo[A_ROCKETS]; WEAPON_PLASMA, WEAPON_BFG: Result := FAmmo[A_CELLS]; WEAPON_FLAMETHROWER: Result := FAmmo[A_FUEL]; @@ -3358,7 +3357,7 @@ procedure TPlayer.CatchFire(Attacker: Word; Timeout: Integer = PLAYER_BURN_TIME) begin if Timeout <= 0 then exit; - if (FMegaRulez[MR_SUIT] > gTime) or (FMegaRulez[MR_INVUL] > gTime) then + if (FPowerups[MR_SUIT] > gTime) or (FPowerups[MR_INVUL] > gTime) then exit; // Íå çàãîðàåìñÿ êîãäà åñòü çàùèòà if g_Obj_CollidePanel(@FObj, 0, 0, PANEL_WATER or PANEL_ACID1 or PANEL_ACID2) then exit; // Íå ïîäãîðàåì â âîäå íà âñÿêèé ñëó÷àé @@ -3629,7 +3628,7 @@ begin WEAPON_ROCKETLAUNCHER: i := ITEM_WEAPON_ROCKETLAUNCHER; WEAPON_PLASMA: i := ITEM_WEAPON_PLASMA; WEAPON_BFG: i := ITEM_WEAPON_BFG; - WEAPON_SUPERPULEMET: i := ITEM_WEAPON_SUPERPULEMET; + WEAPON_SUPERCHAINGUN: i := ITEM_WEAPON_SUPERCHAINGUN; WEAPON_FLAMETHROWER: i := ITEM_WEAPON_FLAMETHROWER; else i := 0; end; @@ -3639,7 +3638,7 @@ begin end; // Âûáðîñ ðþêçàêà: - if R_ITEM_BACKPACK in FRulez then + if R_ITEM_BACKPACK in FInventory then PushItem(ITEM_AMMO_BACKPACK); // Âûáðîñ ðàêåòíîãî ðàíöà: @@ -3650,13 +3649,13 @@ begin if (not (gGameSettings.GameMode in [GM_DM, GM_TDM, GM_CTF])) or (not LongBool(gGameSettings.Options and GAME_OPTION_DMKEYS)) then begin - if R_KEY_RED in FRulez then + if R_KEY_RED in FInventory then PushItem(ITEM_KEY_RED); - if R_KEY_GREEN in FRulez then + if R_KEY_GREEN in FInventory then PushItem(ITEM_KEY_GREEN); - if R_KEY_BLUE in FRulez then + if R_KEY_BLUE in FInventory then PushItem(ITEM_KEY_BLUE); end; @@ -3843,8 +3842,8 @@ function TPlayer.hasAmmoForWeapon (weapon: Byte): Boolean; begin result := false; case weapon of - WEAPON_KASTET, WEAPON_SAW: result := true; - WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERPULEMET: result := (FAmmo[A_SHELLS] > 0); + WEAPON_IRONFIST, WEAPON_SAW: result := true; + WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERCHAINGUN: result := (FAmmo[A_SHELLS] > 0); WEAPON_PISTOL, WEAPON_CHAINGUN: result := (FAmmo[A_BULLETS] > 0); WEAPON_ROCKETLAUNCHER: result := (FAmmo[A_ROCKETS] > 0); WEAPON_PLASMA, WEAPON_BFG: result := (FAmmo[A_CELLS] > 0); @@ -3857,8 +3856,8 @@ function TPlayer.hasAmmoForShooting (weapon: Byte): Boolean; begin result := false; case weapon of - WEAPON_KASTET, WEAPON_SAW: result := true; - WEAPON_SHOTGUN1, WEAPON_SUPERPULEMET: result := (FAmmo[A_SHELLS] > 0); + WEAPON_IRONFIST, WEAPON_SAW: result := true; + WEAPON_SHOTGUN1, WEAPON_SUPERCHAINGUN: result := (FAmmo[A_SHELLS] > 0); WEAPON_SHOTGUN2: result := (FAmmo[A_SHELLS] > 1); WEAPON_PISTOL, WEAPON_CHAINGUN: result := (FAmmo[A_BULLETS] > 0); WEAPON_ROCKETLAUNCHER: result := (FAmmo[A_ROCKETS] > 0); @@ -4210,14 +4209,14 @@ begin if a and g_Game_IsNet then MH_SEND_Sound(GameX, GameY, 'SOUND_ITEM_GETWEAPON'); end; - ITEM_WEAPON_SUPERPULEMET: - if (FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS]) or not FWeapon[WEAPON_SUPERPULEMET] then + ITEM_WEAPON_SUPERCHAINGUN: + if (FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS]) or not FWeapon[WEAPON_SUPERCHAINGUN] then begin - if a and FWeapon[WEAPON_SUPERPULEMET] then Exit; - switchWeapon := WEAPON_SUPERPULEMET; - hadWeapon := FWeapon[WEAPON_SUPERPULEMET]; + if a and FWeapon[WEAPON_SUPERCHAINGUN] then Exit; + switchWeapon := WEAPON_SUPERCHAINGUN; + hadWeapon := FWeapon[WEAPON_SUPERCHAINGUN]; IncMax(FAmmo[A_SHELLS], 4, FMaxAmmo[A_SHELLS]); - FWeapon[WEAPON_SUPERPULEMET] := True; + FWeapon[WEAPON_SUPERCHAINGUN] := True; Result := True; if gFlash = 2 then Inc(FPickup, 5); if a and g_Game_IsNet then MH_SEND_Sound(GameX, GameY, 'SOUND_ITEM_GETWEAPON'); @@ -4318,7 +4317,7 @@ begin end; ITEM_AMMO_BACKPACK: - if not(R_ITEM_BACKPACK in FRulez) or + if not(R_ITEM_BACKPACK in FInventory) or (FAmmo[A_BULLETS] < FMaxAmmo[A_BULLETS]) or (FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS]) or (FAmmo[A_ROCKETS] < FMaxAmmo[A_ROCKETS]) or @@ -4342,16 +4341,16 @@ begin if FAmmo[A_FUEL] < FMaxAmmo[A_FUEL] then IncMax(FAmmo[A_FUEL], 50, FMaxAmmo[A_FUEL]); - FRulez := FRulez + [R_ITEM_BACKPACK]; + FInventory += [R_ITEM_BACKPACK]; Result := True; remove := True; - if gFlash = 2 then Inc(FPickup, 5); + if gFlash = 2 then FPickup += 5; end; ITEM_KEY_RED: - if not(R_KEY_RED in FRulez) then + if not(R_KEY_RED in FInventory) then begin - Include(FRulez, R_KEY_RED); + FInventory += [R_KEY_RED]; Result := True; remove := (gGameSettings.GameMode <> GM_COOP) and (g_Player_GetCount() < 2); if gFlash = 2 then Inc(FPickup, 5); @@ -4359,9 +4358,9 @@ begin end; ITEM_KEY_GREEN: - if not(R_KEY_GREEN in FRulez) then + if not(R_KEY_GREEN in FInventory) then begin - Include(FRulez, R_KEY_GREEN); + FInventory += [R_KEY_GREEN]; Result := True; remove := (gGameSettings.GameMode <> GM_COOP) and (g_Player_GetCount() < 2); if gFlash = 2 then Inc(FPickup, 5); @@ -4369,9 +4368,9 @@ begin end; ITEM_KEY_BLUE: - if not(R_KEY_BLUE in FRulez) then + if not(R_KEY_BLUE in FInventory) then begin - Include(FRulez, R_KEY_BLUE); + FInventory += [R_KEY_BLUE]; Result := True; remove := (gGameSettings.GameMode <> GM_COOP) and (g_Player_GetCount() < 2); if gFlash = 2 then Inc(FPickup, 5); @@ -4379,9 +4378,9 @@ begin end; ITEM_SUIT: - if FMegaRulez[MR_SUIT] < gTime+PLAYER_SUIT_TIME then + if FPowerups[MR_SUIT] < gTime+PLAYER_SUIT_TIME then begin - FMegaRulez[MR_SUIT] := gTime+PLAYER_SUIT_TIME; + FPowerups[MR_SUIT] := gTime+PLAYER_SUIT_TIME; Result := True; remove := True; FFireTime := 0; @@ -4399,18 +4398,18 @@ begin ITEM_MEDKIT_BLACK: begin - if not (R_BERSERK in FRulez) then + if not (R_BERSERK in FInventory) then begin - Include(FRulez, R_BERSERK); + FInventory += [R_BERSERK]; if (FBFGFireCounter = -1) then begin - FCurrWeap := WEAPON_KASTET; + FCurrWeap := WEAPON_IRONFIST; resetWeaponQueue(); - FModel.SetWeapon(WEAPON_KASTET); + FModel.SetWeapon(WEAPON_IRONFIST); end; if gFlash <> 0 then begin - Inc(FPain, 100); + FPain += 100; if gFlash = 2 then Inc(FPickup, 5); end; FBerserk := gTime+30000; @@ -4429,9 +4428,9 @@ begin end; ITEM_INVUL: - if FMegaRulez[MR_INVUL] < gTime+PLAYER_INVUL_TIME then + if FPowerups[MR_INVUL] < gTime+PLAYER_INVUL_TIME then begin - FMegaRulez[MR_INVUL] := gTime+PLAYER_INVUL_TIME; + FPowerups[MR_INVUL] := gTime+PLAYER_INVUL_TIME; FSpawnInvul := 0; Result := True; remove := True; @@ -4467,9 +4466,9 @@ begin end; ITEM_INVIS: - if FMegaRulez[MR_INVIS] < gTime+PLAYER_INVIS_TIME then + if FPowerups[MR_INVIS] < gTime+PLAYER_INVIS_TIME then begin - FMegaRulez[MR_INVIS] := gTime+PLAYER_INVIS_TIME; + FPowerups[MR_INVIS] := gTime+PLAYER_INVIS_TIME; Result := True; remove := True; if gFlash = 2 then Inc(FPickup, 5); @@ -4667,12 +4666,12 @@ begin if (gGameSettings.GameType <> GT_SINGLE) and (gGameSettings.GameMode <> GM_COOP) then begin // "Ñâîÿ èãðà" // Áåðñåðê íå ñîõðàíÿåòñÿ ìåæäó óðîâíÿìè: - FRulez := FRulez-[R_BERSERK]; + FInventory -= [R_BERSERK]; end else // "Îäèíî÷íàÿ èãðà"/"Êîîï" begin // Áåðñåðê è êëþ÷è íå ñîõðàíÿþòñÿ ìåæäó óðîâíÿìè: - FRulez := FRulez-[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE, R_BERSERK]; + FInventory -= [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE, R_BERSERK]; end; // Ïîëó÷àåì òî÷êó ñïàóíà èãðîêà: @@ -4697,7 +4696,7 @@ begin end; FWeapon[WEAPON_PISTOL] := True; - FWeapon[WEAPON_KASTET] := True; + FWeapon[WEAPON_IRONFIST] := True; FCurrWeap := WEAPON_PISTOL; resetWeaponQueue(); @@ -4716,9 +4715,9 @@ begin if (gGameSettings.GameMode in [GM_DM, GM_TDM, GM_CTF]) and LongBool(gGameSettings.Options and GAME_OPTION_DMKEYS) then - FRulez := [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE] + FInventory := [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE] else - FRulez := []; + FInventory := []; end; // Ïîëó÷àåì êîîðäèíàòû òî÷êè âîçðîæäåíèÿ: @@ -4750,14 +4749,14 @@ begin for a := Low(FTime) to High(FTime) do FTime[a] := 0; - for a := Low(FMegaRulez) to High(FMegaRulez) do - FMegaRulez[a] := 0; + for a := Low(FPowerups) to High(FPowerups) do + FPowerups[a] := 0; // Respawn invulnerability if (gGameSettings.GameType <> GT_SINGLE) and (gGameSettings.SpawnInvul > 0) then begin - FMegaRulez[MR_INVUL] := gTime + gGameSettings.SpawnInvul * 1000; - FSpawnInvul := FMegaRulez[MR_INVUL]; + FPowerups[MR_INVUL] := gTime + gGameSettings.SpawnInvul * 1000; + FSpawnInvul := FPowerups[MR_INVUL]; end; FDamageBuffer := 0; @@ -5332,9 +5331,9 @@ begin if FAlive and (FObj.Y > Integer(gMapInfo.Height)+128) and AnyServer then begin // Îáíóëèòü äåéñòâèÿ ïðèìî÷åê, ÷òîáû ôîí ïðîïàë - FMegaRulez[MR_SUIT] := 0; - FMegaRulez[MR_INVUL] := 0; - FMegaRulez[MR_INVIS] := 0; + FPowerups[MR_SUIT] := 0; + FPowerups[MR_INVUL] := 0; + FPowerups[MR_INVIS] := 0; Kill(K_FALLKILL, 0, HIT_FALL); end; @@ -5402,7 +5401,7 @@ begin else Dec(FBFGFireCounter); - if (FMegaRulez[MR_SUIT] < gTime) and AnyServer then + if (FPowerups[MR_SUIT] < gTime) and AnyServer then begin b := g_GetAcidHit(FObj.X+PLAYER_RECT.X, FObj.Y+PLAYER_RECT.Y, PLAYER_RECT.Width, PLAYER_RECT.Height); @@ -5431,9 +5430,9 @@ begin FFireTime := 0; FFirePainTime := 0; end - else if FMegaRulez[MR_SUIT] >= gTime then + else if FPowerups[MR_SUIT] >= gTime then begin - if FMegaRulez[MR_SUIT] = gTime then + if FPowerups[MR_SUIT] = gTime then FFireTime := 1; FFirePainTime := 0; end @@ -5448,7 +5447,7 @@ begin end; FFirePainTime := FFirePainTime - 1; FFireTime := FFireTime - 1; - if ((FFireTime mod 33) = 0) and (FMegaRulez[MR_INVUL] < gTime) then + if ((FFireTime mod 33) = 0) and (FPowerups[MR_INVUL] < gTime) then FModel.PlaySound(MODELSOUND_PAIN, 1, FObj.X, FObj.Y); if (FFireTime = 0) and g_Game_IsNet and g_Game_IsServer then MH_SEND_PlayerStats(FUID); @@ -5593,9 +5592,9 @@ function TPlayer.GetKeys(): Byte; begin Result := 0; - if R_KEY_RED in FRulez then Result := KEY_RED; - if R_KEY_GREEN in FRulez then Result := Result or KEY_GREEN; - if R_KEY_BLUE in FRulez then Result := Result or KEY_BLUE; + if R_KEY_RED in FInventory then Result := Result or KEY_RED; + if R_KEY_GREEN in FInventory then Result := Result or KEY_GREEN; + if R_KEY_BLUE in FInventory then Result := Result or KEY_BLUE; if FTeam = TEAM_RED then Result := Result or KEY_REDTEAM; if FTeam = TEAM_BLUE then Result := Result or KEY_BLUETEAM; @@ -5636,11 +5635,11 @@ begin YD := AY; case FCurrWeap of - WEAPON_KASTET: + WEAPON_IRONFIST: begin visible := False; DoPunch(); - if R_BERSERK in FRulez then + if R_BERSERK in FInventory then begin //g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID); locobj.X := FObj.X+FObj.Rect.X; @@ -5732,7 +5731,7 @@ begin FFireAngle := FAngle; end; - WEAPON_SUPERPULEMET: + WEAPON_SUPERCHAINGUN: begin g_Sound_PlayExAt('SOUND_WEAPON_FIRESHOTGUN', Gamex, Gamey); FFireAngle := FAngle; @@ -6044,7 +6043,7 @@ begin else Result := 0; end; -procedure TPlayer.RememberState(); +procedure TPlayer.PreserveState(); var i: Integer; SavedState: TPlayerSavedState; @@ -6062,7 +6061,7 @@ begin SavedState.Ammo[i] := FAmmo[i]; for i := Low(FMaxAmmo) to High(FMaxAmmo) do SavedState.MaxAmmo[i] := FMaxAmmo[i]; - SavedState.Rulez := FRulez - [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; + SavedState.Inventory := FInventory - [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; FSavedStateNum := -1; for i := Low(SavedStates) to High(SavedStates) do @@ -6081,7 +6080,7 @@ begin SavedStates[FSavedStateNum] := SavedState; end; -procedure TPlayer.RecallState(); +procedure TPlayer.RestoreState(); var i: Integer; SavedState: TPlayerSavedState; @@ -6106,7 +6105,7 @@ begin FAmmo[i] := SavedState.Ammo[i]; for i := Low(FMaxAmmo) to High(FMaxAmmo) do FMaxAmmo[i] := SavedState.MaxAmmo[i]; - FRulez := SavedState.Rulez; + FInventory := SavedState.Inventory; if gGameSettings.GameType = GT_SERVER then MH_SEND_PlayerStats(FUID); @@ -6190,17 +6189,17 @@ begin // Âðåìÿ ïåðåçàðÿäêè îðóæèÿ for i := WP_FIRST to WP_LAST do utils.writeInt(st, Word(FReloading[i])); // Íàëè÷èå ðþêçàêà - utils.writeBool(st, (R_ITEM_BACKPACK in FRulez)); + utils.writeBool(st, (R_ITEM_BACKPACK in FInventory)); // Íàëè÷èå êðàñíîãî êëþ÷à - utils.writeBool(st, (R_KEY_RED in FRulez)); + utils.writeBool(st, (R_KEY_RED in FInventory)); // Íàëè÷èå çåëåíîãî êëþ÷à - utils.writeBool(st, (R_KEY_GREEN in FRulez)); + utils.writeBool(st, (R_KEY_GREEN in FInventory)); // Íàëè÷èå ñèíåãî êëþ÷à - utils.writeBool(st, (R_KEY_BLUE in FRulez)); + utils.writeBool(st, (R_KEY_BLUE in FInventory)); // Íàëè÷èå áåðñåðêà - utils.writeBool(st, (R_BERSERK in FRulez)); + utils.writeBool(st, (R_BERSERK in FInventory)); // Âðåìÿ äåéñòâèÿ ñïåöèàëüíûõ ïðåäìåòîâ - for i := MR_SUIT to MR_MAX do utils.writeInt(st, LongWord(FMegaRulez[i])); + for i := MR_SUIT to MR_MAX do utils.writeInt(st, LongWord(FPowerups[i])); // Âðåìÿ äî ïîâòîðíîãî ðåñïàóíà, ñìåíû îðóæèÿ, èñîëüçîâàíèÿ, çàõâàòà ôëàãà for i := T_RESPAWN to T_FLAGCAP do utils.writeInt(st, LongWord(FTime[i])); // Íàçâàíèå ìîäåëè @@ -6294,17 +6293,17 @@ begin // Âðåìÿ ïåðåçàðÿäêè îðóæèÿ for i := WP_FIRST to WP_LAST do FReloading[i] := utils.readWord(st); // Íàëè÷èå ðþêçàêà - if utils.readBool(st) then Include(FRulez, R_ITEM_BACKPACK); + if utils.readBool(st) then FInventory += [R_ITEM_BACKPACK]; // Íàëè÷èå êðàñíîãî êëþ÷à - if utils.readBool(st) then Include(FRulez, R_KEY_RED); + if utils.readBool(st) then FInventory += [R_KEY_RED]; // Íàëè÷èå çåëåíîãî êëþ÷à - if utils.readBool(st) then Include(FRulez, R_KEY_GREEN); + if utils.readBool(st) then FInventory += [R_KEY_GREEN]; // Íàëè÷èå ñèíåãî êëþ÷à - if utils.readBool(st) then Include(FRulez, R_KEY_BLUE); + if utils.readBool(st) then FInventory += [R_KEY_BLUE]; // Íàëè÷èå áåðñåðêà - if utils.readBool(st) then Include(FRulez, R_BERSERK); + if utils.readBool(st) then FInventory += [R_BERSERK]; // Âðåìÿ äåéñòâèÿ ñïåöèàëüíûõ ïðåäìåòîâ - for i := MR_SUIT to MR_MAX do FMegaRulez[i] := utils.readLongWord(st); + for i := MR_SUIT to MR_MAX do FPowerups[i] := utils.readLongWord(st); // Âðåìÿ äî ïîâòîðíîãî ðåñïàóíà, ñìåíû îðóæèÿ, èñîëüçîâàíèÿ, çàõâàòà ôëàãà for i := T_RESPAWN to T_FLAGCAP do FTime[i] := utils.readLongWord(st); // Íàçâàíèå ìîäåëè @@ -6325,14 +6324,13 @@ begin end; // Îáíîâëÿåì ìîäåëü èãðîêà SetModel(str); - if gGameSettings.GameMode in [GM_TDM, GM_CTF] then - FModel.Color := TEAMCOLOR[FTeam] - else - FModel.Color := FColor; + if gGameSettings.GameMode in [GM_TDM, GM_CTF] + then FModel.Color := TEAMCOLOR[FTeam] + else FModel.Color := FColor; end; -procedure TPlayer.AllRulez(Health: Boolean); +procedure TPlayer.TankRamboCheats(Health: Boolean); var a: Integer; begin @@ -6345,7 +6343,7 @@ begin for a := WP_FIRST to WP_LAST do FWeapon[a] := True; for a := A_BULLETS to A_HIGH do FAmmo[a] := 30000; - FRulez := FRulez+[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; + FInventory += [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; end; procedure TPlayer.RestoreHealthArmor(); @@ -6387,57 +6385,46 @@ procedure TPlayer.GiveItem(ItemType: Byte); begin case ItemType of ITEM_SUIT: - if FMegaRulez[MR_SUIT] < gTime+PLAYER_SUIT_TIME then - begin - FMegaRulez[MR_SUIT] := gTime+PLAYER_SUIT_TIME; - end; + if FPowerups[MR_SUIT] < gTime+PLAYER_SUIT_TIME then + FPowerups[MR_SUIT] := gTime+PLAYER_SUIT_TIME; ITEM_OXYGEN: - if FAir < AIR_MAX then - begin - FAir := AIR_MAX; - end; + if FAir < AIR_MAX then FAir := AIR_MAX; ITEM_MEDKIT_BLACK: + begin + if not (R_BERSERK in FInventory) then begin - if not (R_BERSERK in FRulez) then - begin - Include(FRulez, R_BERSERK); - if FBFGFireCounter < 1 then - begin - FCurrWeap := WEAPON_KASTET; - resetWeaponQueue(); - FModel.SetWeapon(WEAPON_KASTET); - end; - if gFlash <> 0 then - Inc(FPain, 100); - FBerserk := gTime+30000; - end; - if FHealth < PLAYER_HP_SOFT then + FInventory += [R_BERSERK]; + if FBFGFireCounter < 1 then begin - FHealth := PLAYER_HP_SOFT; - FBerserk := gTime+30000; + FCurrWeap := WEAPON_IRONFIST; + resetWeaponQueue(); + FModel.SetWeapon(WEAPON_IRONFIST); end; + if gFlash <> 0 then FPain += 100; + FBerserk := gTime+30000; + end; + if FHealth < PLAYER_HP_SOFT then + begin + FHealth := PLAYER_HP_SOFT; + FBerserk := gTime+30000; end; + end; ITEM_INVUL: - if FMegaRulez[MR_INVUL] < gTime+PLAYER_INVUL_TIME then + if FPowerups[MR_INVUL] < gTime+PLAYER_INVUL_TIME then begin - FMegaRulez[MR_INVUL] := gTime+PLAYER_INVUL_TIME; + FPowerups[MR_INVUL] := gTime+PLAYER_INVUL_TIME; FSpawnInvul := 0; end; ITEM_INVIS: - if FMegaRulez[MR_INVIS] < gTime+PLAYER_INVIS_TIME then - begin - FMegaRulez[MR_INVIS] := gTime+PLAYER_INVIS_TIME; - end; + if FPowerups[MR_INVIS] < gTime+PLAYER_INVIS_TIME then + FPowerups[MR_INVIS] := gTime+PLAYER_INVIS_TIME; ITEM_JETPACK: - if FJetFuel < JET_MAX then - begin - FJetFuel := JET_MAX; - end; + if FJetFuel < JET_MAX then FJetFuel := JET_MAX; ITEM_MEDKIT_SMALL: if FHealth < PLAYER_HP_SOFT then IncMax(FHealth, 10, PLAYER_HP_SOFT); ITEM_MEDKIT_LARGE: if FHealth < PLAYER_HP_SOFT then IncMax(FHealth, 25, PLAYER_HP_SOFT); @@ -6460,7 +6447,7 @@ begin ITEM_WEAPON_ROCKETLAUNCHER: FWeapon[WEAPON_ROCKETLAUNCHER] := True; ITEM_WEAPON_PLASMA: FWeapon[WEAPON_PLASMA] := True; ITEM_WEAPON_BFG: FWeapon[WEAPON_BFG] := True; - ITEM_WEAPON_SUPERPULEMET: FWeapon[WEAPON_SUPERPULEMET] := True; + ITEM_WEAPON_SUPERCHAINGUN: FWeapon[WEAPON_SUPERCHAINGUN] := True; ITEM_WEAPON_FLAMETHROWER: FWeapon[WEAPON_FLAMETHROWER] := True; ITEM_AMMO_BULLETS: if FAmmo[A_BULLETS] < FMaxAmmo[A_BULLETS] then IncMax(FAmmo[A_BULLETS], 10, FMaxAmmo[A_BULLETS]); @@ -6491,12 +6478,12 @@ begin if FAmmo[A_ROCKETS] < FMaxAmmo[A_ROCKETS] then IncMax(FAmmo[A_ROCKETS], 1, FMaxAmmo[A_ROCKETS]); if FAmmo[A_CELLS] < FMaxAmmo[A_CELLS] then IncMax(FAmmo[A_CELLS], 40, FMaxAmmo[A_CELLS]); - FRulez := FRulez + [R_ITEM_BACKPACK]; + FInventory += [R_ITEM_BACKPACK]; end; - ITEM_KEY_RED: if not (R_KEY_RED in FRulez) then Include(FRulez, R_KEY_RED); - ITEM_KEY_GREEN: if not (R_KEY_GREEN in FRulez) then Include(FRulez, R_KEY_GREEN); - ITEM_KEY_BLUE: if not (R_KEY_BLUE in FRulez) then Include(FRulez, R_KEY_BLUE); + ITEM_KEY_RED: if not (R_KEY_RED in FInventory) then FInventory += [R_KEY_RED]; + ITEM_KEY_GREEN: if not (R_KEY_GREEN in FInventory) then FInventory += [R_KEY_GREEN]; + ITEM_KEY_BLUE: if not (R_KEY_BLUE in FInventory) then FInventory += [R_KEY_BLUE]; ITEM_BOTTLE: if FHealth < PLAYER_HP_LIMIT then IncMax(FHealth, 4, PLAYER_HP_LIMIT); ITEM_HELMET: if FArmor < PLAYER_AP_LIMIT then IncMax(FArmor, 5, PLAYER_AP_LIMIT); @@ -6941,8 +6928,8 @@ begin RemoveAIFlag('NEEDFIRE'); case FCurrWeap of - WEAPON_PLASMA, WEAPON_SUPERPULEMET, WEAPON_CHAINGUN: PressKey(KEY_FIRE, 20); - WEAPON_SAW, WEAPON_KASTET, WEAPON_FLAMETHROWER: PressKey(KEY_FIRE, 40); + WEAPON_PLASMA, WEAPON_SUPERCHAINGUN, WEAPON_CHAINGUN: PressKey(KEY_FIRE, 20); + WEAPON_SAW, WEAPON_IRONFIST, WEAPON_FLAMETHROWER: PressKey(KEY_FIRE, 40); else PressKey(KEY_FIRE); end; end; @@ -7024,7 +7011,7 @@ begin (gPlayers[a].FUID <> FUID) and (not SameTeam(FUID, gPlayers[a].FUID)) and (not gPlayers[a].NoTarget) and - (gPlayers[a].FMegaRulez[MR_INVIS] < gTime) then + (gPlayers[a].FPowerups[MR_INVIS] < gTime) then begin if not TargetOnScreen(gPlayers[a].FObj.X + PLAYER_RECT.X, gPlayers[a].FObj.Y + PLAYER_RECT.Y) then @@ -7211,7 +7198,7 @@ begin begin // Öåëü - èãðîê pla := g_Player_Get(Target.UID); if (pla = nil) or (not pla.alive) or pla.NoTarget or - (pla.FMegaRulez[MR_INVIS] >= gTime) then + (pla.FPowerups[MR_INVIS] >= gTime) then Target.UID := 0; // òî çàáûòü öåëü end else @@ -7851,7 +7838,7 @@ begin Jump(20); // Âûáèðàåìñÿ èç êèñëîòû, åñëè íåò êîñòþìà, îáîæãëèñü, èëè ìàëî çäîðîâüÿ: - if (FMegaRulez[MR_SUIT] < gTime) and ((FLastHit = HIT_ACID) or (Healthy() <= 1)) then + if (FPowerups[MR_SUIT] < gTime) and ((FLastHit = HIT_ACID) or (Healthy() <= 1)) then if BodyInAcid(0, 0) then Jump(); end; @@ -7881,7 +7868,7 @@ var WEAPON_ROCKETLAUNCHER: Result := FAmmo[A_ROCKETS] >= 1; WEAPON_PLASMA: Result := FAmmo[A_CELLS] >= 10; WEAPON_BFG: Result := FAmmo[A_CELLS] >= 40; - WEAPON_SUPERPULEMET: Result := FAmmo[A_SHELLS] >= 1; + WEAPON_SUPERCHAINGUN: Result := FAmmo[A_SHELLS] >= 1; WEAPON_FLAMETHROWER: Result := FAmmo[A_FUEL] >= 1; else Result := True; end; @@ -7933,7 +7920,7 @@ end; function TBot.Healthy(): Byte; begin - if FMegaRulez[MR_INVUL] >= gTime then Result := 3 + if FPowerups[MR_INVUL] >= gTime then Result := 3 else if (FHealth > 80) or ((FHealth > 50) and (FArmor > 20)) then Result := 3 else if (FHealth > 50) then Result := 2 else if (FHealth > 20) then Result := 1 diff --git a/src/game/g_playermodel.pas b/src/game/g_playermodel.pas index 6ffea1f..6ba8174 100644 --- a/src/game/g_playermodel.pas +++ b/src/game/g_playermodel.pas @@ -35,22 +35,22 @@ const A_ATTACKDOWN = 8; A_PAIN = 9; // EXTENDED - A_WALKATTACK = 10; - A_WALKSEEUP = 11; - A_WALKSEEDOWN = 12; - A_WALKATTACKUP = 13; - A_WALKATTACKDOWN = 14; - A_FISTSTAND = 15; - A_FISTWALK = 16; - A_FISTATTACK = 17; - A_FISTWALKATTACK = 18; - A_FISTSEEUP = 19; - A_FISTSEEDOWN = 20; - A_FISTATTACKUP = 21; - A_FISTATTACKDOWN = 22; + A_WALKATTACK = 10; + A_WALKSEEUP = 11; + A_WALKSEEDOWN = 12; + A_WALKATTACKUP = 13; + A_WALKATTACKDOWN = 14; + A_MELEESTAND = 15; + A_MELEEWALK = 16; + A_MELEEATTACK = 17; + A_MELEEWALKATTACK = 18; + A_MELEESEEUP = 19; + A_MELEESEEDOWN = 20; + A_MELEEATTACKUP = 21; + A_MELEEATTACKDOWN = 22; A_LASTBASE = A_PAIN; - A_LASTEXT = A_FISTATTACKDOWN; + A_LASTEXT = A_MELEEATTACKDOWN; A_LAST = A_LASTEXT; MODELSOUND_PAIN = 0; @@ -186,9 +186,9 @@ const 'SeeUpAnim','SeeDownAnim','AttackUpAnim','AttackDownAnim','PainAnim', // EXTENDED 'WalkAttackAnim', 'WalkSeeUpAnim', 'WalkSeeDownAnim', - 'WalkAttackUpAnim', 'WalkAttackDownAnim', 'FistStandAnim', 'FistWalkAnim', - 'FistAttackAnim', 'FistWalkAttackAnim', 'FistSeeUpAnim', 'FistSeeDownAnim', - 'FistAttackUpAnim', 'FistAttackDownAnim'); + 'WalkAttackUpAnim', 'WalkAttackDownAnim', 'MeleeStandAnim', 'MeleeWalkAnim', + 'MeleeAttackAnim', 'MeleeWalkAttackAnim', 'MeleeSeeUpAnim', 'MeleeSeeDownAnim', + 'MeleeAttackUpAnim', 'MeleeAttackDownAnim'); WeapNames: Array [WP_FIRST + 1..WP_LAST] of String = ('csaw', 'hgun', 'sg', 'ssg', 'mgun', 'rkt', 'plz', 'bfg', 'spl', 'flm'); diff --git a/src/game/g_triggers.pas b/src/game/g_triggers.pas index f8e9e02..8c11a47 100644 --- a/src/game/g_triggers.pas +++ b/src/game/g_triggers.pas @@ -2105,7 +2105,7 @@ begin begin // Êèñëîòíûé óðîí íå íàíîñèòñÿ êîãäà åñòü êîñòþì // "Âîäÿíîé" óðîí íå íàíîñèòñÿ êîãäà åñòü êèñëîðîä - if not (((tgcKind = HIT_ACID) and (p.FMegaRulez[MR_SUIT] > gTime)) or + if not (((tgcKind = HIT_ACID) and (p.FPowerups[MR_SUIT] > gTime)) or ((tgcKind = HIT_WATER) and (p.Air > 0))) then p.Damage(tgcAmount, 0, 0, 0, tgcKind); if (tgcKind = HIT_FLAME) then p.CatchFire(0); diff --git a/src/game/g_weapons.pas b/src/game/g_weapons.pas index 86a9de5..23898af 100644 --- a/src/game/g_weapons.pas +++ b/src/game/g_weapons.pas @@ -84,7 +84,7 @@ procedure g_Weapon_LoadState (st: TStream); procedure g_Weapon_AddDynLights(); const - WEAPON_KASTET = 0; + WEAPON_IRONFIST = 0; WEAPON_SAW = 1; WEAPON_PISTOL = 2; WEAPON_SHOTGUN1 = 3; @@ -93,7 +93,7 @@ const WEAPON_ROCKETLAUNCHER = 6; WEAPON_PLASMA = 7; WEAPON_BFG = 8; - WEAPON_SUPERPULEMET = 9; + WEAPON_SUPERCHAINGUN = 9; WEAPON_FLAMETHROWER = 10; WEAPON_ZOMBY_PISTOL = 20; WEAPON_IMP_FIRE = 21; @@ -103,7 +103,7 @@ const WEAPON_MANCUB_FIRE = 25; WEAPON_SKEL_FIRE = 26; - WP_FIRST = WEAPON_KASTET; + WP_FIRST = WEAPON_IRONFIST; WP_LAST = WEAPON_FLAMETHROWER; diff --git a/src/mapdef/mapdef.txt b/src/mapdef/mapdef.txt index 6cd4c0c..25590cc 100644 --- a/src/mapdef/mapdef.txt +++ b/src/mapdef/mapdef.txt @@ -196,7 +196,7 @@ enum Item { ITEM_WEAPON_ROCKETLAUNCHER, // 15 ITEM_WEAPON_PLASMA, // 16 ITEM_WEAPON_BFG, // 17 - ITEM_WEAPON_SUPERPULEMET, // 18 + ITEM_WEAPON_SUPERCHAINGUN, // 18 ITEM_AMMO_BULLETS, // 19 ITEM_AMMO_BULLETS_BOX, // 20 ITEM_AMMO_SHELLS, // 21 @@ -209,7 +209,7 @@ enum Item { ITEM_KEY_RED, // 28 ITEM_KEY_GREEN, // 29 ITEM_KEY_BLUE, // 30 - ITEM_WEAPON_KASTET, // 31 + ITEM_WEAPON_IRONFIST, // 31 ITEM_WEAPON_PISTOL, // 32 ITEM_BOTTLE, // 33 ITEM_HELMET, // 34 @@ -217,6 +217,8 @@ enum Item { ITEM_INVIS, // 36 ITEM_WEAPON_FLAMETHROWER, // 37 ITEM_AMMO_FUELCAN, // 38 + // backward compatibility aliases + ITEM_WEAPON_SUPERPULEMET = 18, // ITEM_WEAPON_SUPERCHAINGUN // ITEM_MAX = MAX, // store the last item's id in here use this in for loops } diff --git a/src/shared/mapdef.inc b/src/shared/mapdef.inc index e159c5d..d2d5f7d 100644 --- a/src/shared/mapdef.inc +++ b/src/shared/mapdef.inc @@ -105,7 +105,7 @@ const ITEM_WEAPON_ROCKETLAUNCHER = 15; ITEM_WEAPON_PLASMA = 16; ITEM_WEAPON_BFG = 17; - ITEM_WEAPON_SUPERPULEMET = 18; + ITEM_WEAPON_SUPERCHAINGUN = 18; ITEM_AMMO_BULLETS = 19; ITEM_AMMO_BULLETS_BOX = 20; ITEM_AMMO_SHELLS = 21; @@ -118,7 +118,7 @@ const ITEM_KEY_RED = 28; ITEM_KEY_GREEN = 29; ITEM_KEY_BLUE = 30; - ITEM_WEAPON_KASTET = 31; + ITEM_WEAPON_IRONFIST = 31; ITEM_WEAPON_PISTOL = 32; ITEM_BOTTLE = 33; ITEM_HELMET = 34; @@ -126,6 +126,7 @@ const ITEM_INVIS = 36; ITEM_WEAPON_FLAMETHROWER = 37; ITEM_AMMO_FUELCAN = 38; + ITEM_WEAPON_SUPERPULEMET = 18; ITEM_MAX = 38; // ItemOption @@ -310,789 +311,816 @@ const defaultMapDef: AnsiString = ''+ #114#118#101#115#32#98#111#116#104#32#97#115#32#102#111#114#109#97#116#32+ #100#101#115#99#114#105#112#116#105#111#110#32#97#110#100#32#97#115#32#116+ #101#109#112#108#97#116#101#32#102#111#114#32#99#111#100#101#32#103#101#110+ - #101#114#97#116#105#111#110#10#47#47#32#116#104#101#32#101#110#103#105#110+ - #101#32#119#105#108#108#32#117#115#101#32#116#104#105#115#32#100#101#115#99+ - #114#105#112#116#105#111#110#32#116#111#32#112#97#114#115#101#32#108#101#103+ - #97#99#121#32#98#105#110#97#114#121#32#109#97#112#32#102#111#114#109#97#116+ - #10#10#47#47#32#110#111#116#101#115#58#10#47#47#32#32#42#32#102#105#101#108+ - #100#32#119#105#116#104#111#117#116#32#111#102#102#115#101#116#32#105#115#32+ - #110#111#116#32#105#110#32#98#105#110#97#114#121#32#102#111#114#109#97#116+ - #10#47#47#32#32#42#32#102#105#101#108#100#115#32#119#105#116#104#32#96#119+ - #114#105#116#101#100#101#102#97#117#108#116#96#32#119#105#108#108#32#98#101+ - #32#119#114#105#116#116#101#110#32#101#118#101#110#32#105#102#32#116#104#101+ - #121#32#99#111#110#116#97#105#110#32#100#101#102#97#117#108#116#32#118#97+ - #108#117#101#115#10#47#47#32#32#42#32#102#105#101#108#100#115#32#119#105#116+ - #104#32#96#105#110#116#101#114#110#97#108#96#32#119#111#110#39#116#32#98#101+ - #32#119#114#105#116#116#101#110#32#116#111#32#97#110#121#32#102#105#108#101+ - #32#101#118#101#114#32#40#97#110#100#32#119#111#110#39#116#32#98#101#32#114+ - #101#97#100#41#10#47#47#32#32#42#32#96#117#98#121#116#101#96#32#105#115#32+ - #117#110#115#105#103#110#101#100#32#98#121#116#101#44#32#97#110#100#32#96#98+ - #121#116#101#96#32#105#115#32#115#105#103#110#101#100#32#98#121#116#101#10+ - #47#47#32#32#42#32#97#108#108#32#115#116#114#105#110#103#115#32#97#114#101+ - #32#105#110#32#117#116#102#45#56#10#47#47#32#32#42#32#115#116#114#117#99#116+ - #32#119#105#116#104#32#96#104#101#97#100#101#114#96#32#102#108#97#103#32#119+ - #105#108#108#32#99#111#110#116#97#105#110#32#97#108#108#32#111#116#104#101+ - #114#32#115#116#114#117#99#116#115#32#97#110#100#32#105#116#39#115#32#111+ - #119#110#32#102#105#101#108#100#115#32#97#115#32#116#111#112#45#108#101#118+ - #101#108#32#101#110#116#105#116#105#101#115#10#47#47#32#32#42#32#105#110#32+ - #98#105#110#97#114#121#44#32#96#115#105#122#101#96#32#105#115#32#116#119#111+ - #32#117#115#104#111#114#116#115#10#47#47#32#32#42#32#96#97#115#32#120#121#96+ - #32#119#105#108#108#32#117#115#101#32#96#88#96#32#97#110#100#32#96#89#96#32+ - #102#111#114#32#112#111#105#110#116#115#10#47#47#32#32#42#32#96#97#115#32+ - #116#120#121#96#32#119#105#108#108#32#117#115#101#32#96#116#88#96#32#97#110+ - #100#32#96#116#89#96#32#102#111#114#32#112#111#105#110#116#115#10#47#47#32+ - #32#42#32#96#97#115#32#119#104#96#32#119#105#108#108#32#117#115#101#32#96#87+ - #105#100#116#104#96#32#97#110#100#32#96#72#101#105#103#104#116#96#32#102#111+ - #114#32#115#105#122#101#10#47#47#32#32#42#32#96#97#115#32#116#119#104#96#32+ - #119#105#108#108#32#117#115#101#32#96#116#87#105#100#116#104#96#32#97#110+ - #100#32#96#116#72#101#105#103#104#116#96#32#102#111#114#32#115#105#122#101+ - #10#47#47#32#32#42#32#96#97#115#32#109#111#110#115#116#101#114#105#100#96#58+ - #32#115#112#101#99#105#97#108#32#104#97#99#107#32#102#111#114#32#116#114#105+ - #103#103#101#114#115#58#32#109#111#110#115#116#101#114#32#114#101#99#111#114+ - #100#32#110#117#109#98#101#114#43#49#32#105#110#32#98#105#110#97#114#121#32+ - #40#115#111#32#48#32#109#101#97#110#115#32#34#110#111#110#101#34#41#10#47#47+ - #32#32#42#32#96#98#105#110#98#108#111#99#107#96#32#97#110#100#32#96#111#102+ - #102#115#101#116#96#32#40#97#110#100#32#96#91#93#96#32#97#114#114#97#121#115+ - #41#32#97#114#101#32#117#115#101#100#32#116#111#32#112#97#114#115#101#32#108+ - #101#103#97#99#121#32#98#105#110#97#114#121#32#102#111#114#109#97#116#10#10+ + #101#114#97#116#105#111#110#13#10#47#47#32#116#104#101#32#101#110#103#105+ + #110#101#32#119#105#108#108#32#117#115#101#32#116#104#105#115#32#100#101#115+ + #99#114#105#112#116#105#111#110#32#116#111#32#112#97#114#115#101#32#108#101+ + #103#97#99#121#32#98#105#110#97#114#121#32#109#97#112#32#102#111#114#109#97+ + #116#13#10#13#10#47#47#32#110#111#116#101#115#58#13#10#47#47#32#32#42#32#102+ + #105#101#108#100#32#119#105#116#104#111#117#116#32#111#102#102#115#101#116+ + #32#105#115#32#110#111#116#32#105#110#32#98#105#110#97#114#121#32#102#111+ + #114#109#97#116#13#10#47#47#32#32#42#32#102#105#101#108#100#115#32#119#105+ + #116#104#32#96#119#114#105#116#101#100#101#102#97#117#108#116#96#32#119#105+ + #108#108#32#98#101#32#119#114#105#116#116#101#110#32#101#118#101#110#32#105+ + #102#32#116#104#101#121#32#99#111#110#116#97#105#110#32#100#101#102#97#117+ + #108#116#32#118#97#108#117#101#115#13#10#47#47#32#32#42#32#102#105#101#108+ + #100#115#32#119#105#116#104#32#96#105#110#116#101#114#110#97#108#96#32#119+ + #111#110#39#116#32#98#101#32#119#114#105#116#116#101#110#32#116#111#32#97+ + #110#121#32#102#105#108#101#32#101#118#101#114#32#40#97#110#100#32#119#111+ + #110#39#116#32#98#101#32#114#101#97#100#41#13#10#47#47#32#32#42#32#96#117#98+ + #121#116#101#96#32#105#115#32#117#110#115#105#103#110#101#100#32#98#121#116+ + #101#44#32#97#110#100#32#96#98#121#116#101#96#32#105#115#32#115#105#103#110+ + #101#100#32#98#121#116#101#13#10#47#47#32#32#42#32#97#108#108#32#115#116#114+ + #105#110#103#115#32#97#114#101#32#105#110#32#117#116#102#45#56#13#10#47#47+ + #32#32#42#32#115#116#114#117#99#116#32#119#105#116#104#32#96#104#101#97#100+ + #101#114#96#32#102#108#97#103#32#119#105#108#108#32#99#111#110#116#97#105+ + #110#32#97#108#108#32#111#116#104#101#114#32#115#116#114#117#99#116#115#32+ + #97#110#100#32#105#116#39#115#32#111#119#110#32#102#105#101#108#100#115#32+ + #97#115#32#116#111#112#45#108#101#118#101#108#32#101#110#116#105#116#105#101+ + #115#13#10#47#47#32#32#42#32#105#110#32#98#105#110#97#114#121#44#32#96#115+ + #105#122#101#96#32#105#115#32#116#119#111#32#117#115#104#111#114#116#115#13+ + #10#47#47#32#32#42#32#96#97#115#32#120#121#96#32#119#105#108#108#32#117#115+ + #101#32#96#88#96#32#97#110#100#32#96#89#96#32#102#111#114#32#112#111#105#110+ + #116#115#13#10#47#47#32#32#42#32#96#97#115#32#116#120#121#96#32#119#105#108+ + #108#32#117#115#101#32#96#116#88#96#32#97#110#100#32#96#116#89#96#32#102#111+ + #114#32#112#111#105#110#116#115#13#10#47#47#32#32#42#32#96#97#115#32#119#104+ + #96#32#119#105#108#108#32#117#115#101#32#96#87#105#100#116#104#96#32#97#110+ + #100#32#96#72#101#105#103#104#116#96#32#102#111#114#32#115#105#122#101#13#10+ + #47#47#32#32#42#32#96#97#115#32#116#119#104#96#32#119#105#108#108#32#117#115+ + #101#32#96#116#87#105#100#116#104#96#32#97#110#100#32#96#116#72#101#105#103+ + #104#116#96#32#102#111#114#32#115#105#122#101#13#10#47#47#32#32#42#32#96#97+ + #115#32#109#111#110#115#116#101#114#105#100#96#58#32#115#112#101#99#105#97+ + #108#32#104#97#99#107#32#102#111#114#32#116#114#105#103#103#101#114#115#58+ + #32#109#111#110#115#116#101#114#32#114#101#99#111#114#100#32#110#117#109#98+ + #101#114#43#49#32#105#110#32#98#105#110#97#114#121#32#40#115#111#32#48#32+ + #109#101#97#110#115#32#34#110#111#110#101#34#41#13#10#47#47#32#32#42#32#96+ + #98#105#110#98#108#111#99#107#96#32#97#110#100#32#96#111#102#102#115#101#116+ + #96#32#40#97#110#100#32#96#91#93#96#32#97#114#114#97#121#115#41#32#97#114+ + #101#32#117#115#101#100#32#116#111#32#112#97#114#115#101#32#108#101#103#97+ + #99#121#32#98#105#110#97#114#121#32#102#111#114#109#97#116#13#10#13#10#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ - #47#47#47#47#47#10#47#47#32#109#97#105#110#32#98#108#111#99#107#115#10#34+ + #47#47#47#13#10#47#47#32#109#97#105#110#32#98#108#111#99#107#115#13#10#34+ #109#97#112#34#32#115#105#122#101#32#52#53#50#32#98#121#116#101#115#32#104+ - #101#97#100#101#114#32#98#105#110#98#108#111#99#107#32#55#32#123#10#32#32#34+ - #110#97#109#101#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32#111+ + #101#97#100#101#114#32#98#105#110#98#108#111#99#107#32#55#32#123#13#10#32#32+ + #34#110#97#109#101#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32#111+ #102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116+ - #32#116#105#112#32#34#109#97#112#32#110#97#109#101#34#59#10#32#32#34#97#117+ - #116#104#111#114#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32#111+ - #102#102#115#101#116#32#51#50#32#100#101#102#97#117#108#116#32#34#34#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#97#112+ - #32#97#117#116#104#111#114#34#59#10#32#32#34#100#101#115#99#114#105#112#116+ - #105#111#110#34#32#116#121#112#101#32#99#104#97#114#91#50#53#54#93#32#111+ - #102#102#115#101#116#32#54#52#32#100#101#102#97#117#108#116#32#34#34#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#97#112+ - #32#100#101#115#99#114#105#112#116#105#111#110#34#59#10#32#32#34#109#117#115+ - #105#99#34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102+ - #115#101#116#32#51#50#48#32#100#101#102#97#117#108#116#32#39#83#116#97#110+ - #100#97#114#116#46#119#97#100#58#68#50#68#77#85#83#92#208#159#208#160#208+ - #158#208#161#208#162#208#158#208#162#208#144#39#32#119#114#105#116#101#100+ - #101#102#97#117#108#116#32#116#105#112#32#34#109#117#115#105#99#32#114#101+ - #115#111#117#114#99#101#34#59#10#32#32#34#115#107#121#34#32#116#121#112#101+ - #32#99#104#97#114#91#54#52#93#32#111#102#102#115#101#116#32#51#56#52#32#100+ - #101#102#97#117#108#116#32#39#83#116#97#110#100#97#114#116#46#119#97#100#58+ - #68#50#68#83#75#89#92#82#83#75#89#49#39#32#119#114#105#116#101#100#101#102+ - #97#117#108#116#32#116#105#112#32#34#115#107#121#32#114#101#115#111#117#114+ - #99#101#34#59#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32#115#105+ - #122#101#32#111#102#102#115#101#116#32#52#52#56#32#97#115#32#119#104#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#47#47#32#110#111#116+ - #32#105#110#32#98#105#110#97#114#121#10#32#32#47#47#32#116#101#109#112#111+ - #114#97#114#121#44#32#102#111#114#32#108#105#103#104#116#105#110#103#32#101+ - #120#112#101#114#105#109#101#110#116#115#10#32#32#34#108#105#103#104#116#95+ - #97#109#98#105#101#110#116#34#32#116#121#112#101#32#99#111#108#111#114#32+ - #100#101#102#97#117#108#116#32#40#48#32#48#32#48#32#50#53#53#41#32#116#105+ - #112#32#34#97#109#98#105#101#110#116#32#108#105#103#104#116#32#102#111#114+ - #32#116#104#101#32#119#104#111#108#101#32#108#101#118#101#108#34#59#10#125+ - #10#10#34#116#101#120#116#117#114#101#34#32#115#105#122#101#32#54#53#32#98+ - #121#116#101#115#32#98#105#110#98#108#111#99#107#32#49#32#123#10#32#32#34+ - #112#97#116#104#34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111+ - #102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116+ - #59#10#32#32#34#97#110#105#109#97#116#101#100#34#32#116#121#112#101#32#98+ - #111#111#108#32#111#102#102#115#101#116#32#54#52#32#100#101#102#97#117#108+ - #116#32#102#97#108#115#101#59#10#125#10#10#34#112#97#110#101#108#34#32#115+ - #105#122#101#32#49#56#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107+ - #32#50#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121#112+ - #101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115#32+ - #120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #115#105#122#101#34#32#116#121#112#101#32#115#105#122#101#32#111#102#102#115+ - #101#116#32#56#32#97#115#32#119#104#32#97#115#32#119#104#32#119#114#105#116+ - #101#100#101#102#97#117#108#116#59#10#32#32#34#116#101#120#116#117#114#101+ - #34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116+ - #32#49#50#32#116#101#120#116#117#114#101#32#119#114#105#116#101#100#101#102+ - #97#117#108#116#59#10#32#32#34#116#121#112#101#34#32#116#121#112#101#32#117+ - #115#104#111#114#116#32#111#102#102#115#101#116#32#49#52#32#98#105#116#115+ - #101#116#32#117#110#105#113#117#101#32#80#97#110#101#108#84#121#112#101#32+ - #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#97#108#112+ - #104#97#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+ - #116#32#49#54#32#100#101#102#97#117#108#116#32#48#59#10#32#32#34#102#108#97+ - #103#115#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+ - #116#32#49#55#32#98#105#116#115#101#116#32#80#97#110#101#108#70#108#97#103+ - #32#100#101#102#97#117#108#116#32#80#65#78#69#76#95#70#76#65#71#95#78#79#78+ - #69#59#10#32#32#47#47#32#109#111#118#105#110#103#32#112#108#97#116#102#111+ - #114#109#32#111#112#116#105#111#110#115#44#32#110#111#116#32#105#110#32#98+ - #105#110#97#114#121#10#32#32#34#109#111#118#101#95#115#112#101#101#100#34#32+ - #116#121#112#101#32#112#111#105#110#116#32#100#101#102#97#117#108#116#32#40+ - #48#32#48#41#59#10#32#32#34#115#105#122#101#95#115#112#101#101#100#34#32#116+ - #121#112#101#32#112#111#105#110#116#32#100#101#102#97#117#108#116#32#40#48+ - #32#48#41#59#32#47#47#32#97#108#97#115#44#32#96#115#105#122#101#96#32#99#97+ - #110#110#111#116#32#98#101#32#110#101#103#97#116#105#118#101#10#32#32#34#109+ - #111#118#101#95#115#116#97#114#116#34#32#116#121#112#101#32#112#111#105#110+ - #116#32#100#101#102#97#117#108#116#32#40#48#32#48#41#59#10#32#32#34#109#111+ - #118#101#95#101#110#100#34#32#116#121#112#101#32#112#111#105#110#116#32#100+ - #101#102#97#117#108#116#32#40#48#32#48#41#59#10#32#32#34#115#105#122#101#95+ - #101#110#100#34#32#116#121#112#101#32#115#105#122#101#32#100#101#102#97#117+ - #108#116#32#40#48#32#48#41#59#10#32#32#34#109#111#118#101#95#97#99#116#105+ + #32#116#105#112#32#34#109#97#112#32#110#97#109#101#34#59#13#10#32#32#34#97+ + #117#116#104#111#114#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32+ + #111#102#102#115#101#116#32#51#50#32#100#101#102#97#117#108#116#32#34#34#32+ + #119#114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#97+ + #112#32#97#117#116#104#111#114#34#59#13#10#32#32#34#100#101#115#99#114#105+ + #112#116#105#111#110#34#32#116#121#112#101#32#99#104#97#114#91#50#53#54#93+ + #32#111#102#102#115#101#116#32#54#52#32#100#101#102#97#117#108#116#32#34#34+ + #32#119#114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109+ + #97#112#32#100#101#115#99#114#105#112#116#105#111#110#34#59#13#10#32#32#34+ + #109#117#115#105#99#34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32+ + #111#102#102#115#101#116#32#51#50#48#32#100#101#102#97#117#108#116#32#39#83+ + #116#97#110#100#97#114#116#46#119#97#100#58#68#50#68#77#85#83#92#208#159#208+ + #160#208#158#208#161#208#162#208#158#208#162#208#144#39#32#119#114#105#116+ + #101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#117#115#105#99#32+ + #114#101#115#111#117#114#99#101#34#59#13#10#32#32#34#115#107#121#34#32#116+ + #121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115#101#116#32#51+ + #56#52#32#100#101#102#97#117#108#116#32#39#83#116#97#110#100#97#114#116#46+ + #119#97#100#58#68#50#68#83#75#89#92#82#83#75#89#49#39#32#119#114#105#116#101+ + #100#101#102#97#117#108#116#32#116#105#112#32#34#115#107#121#32#114#101#115+ + #111#117#114#99#101#34#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112+ + #101#32#115#105#122#101#32#111#102#102#115#101#116#32#52#52#56#32#97#115#32+ + #119#104#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#47+ + #47#32#110#111#116#32#105#110#32#98#105#110#97#114#121#13#10#32#32#47#47#32+ + #116#101#109#112#111#114#97#114#121#44#32#102#111#114#32#108#105#103#104#116+ + #105#110#103#32#101#120#112#101#114#105#109#101#110#116#115#13#10#32#32#34+ + #108#105#103#104#116#95#97#109#98#105#101#110#116#34#32#116#121#112#101#32+ + #99#111#108#111#114#32#100#101#102#97#117#108#116#32#40#48#32#48#32#48#32#50+ + #53#53#41#32#116#105#112#32#34#97#109#98#105#101#110#116#32#108#105#103#104+ + #116#32#102#111#114#32#116#104#101#32#119#104#111#108#101#32#108#101#118#101+ + #108#34#59#13#10#125#13#10#13#10#34#116#101#120#116#117#114#101#34#32#115+ + #105#122#101#32#54#53#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107+ + #32#49#32#123#13#10#32#32#34#112#97#116#104#34#32#116#121#112#101#32#99#104+ + #97#114#91#54#52#93#32#111#102#102#115#101#116#32#48#32#119#114#105#116#101+ + #100#101#102#97#117#108#116#59#13#10#32#32#34#97#110#105#109#97#116#101#100+ + #34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#54#52+ + #32#100#101#102#97#117#108#116#32#102#97#108#115#101#59#13#10#125#13#10#13+ + #10#34#112#97#110#101#108#34#32#115#105#122#101#32#49#56#32#98#121#116#101+ + #115#32#98#105#110#98#108#111#99#107#32#50#32#123#13#10#32#32#34#112#111#115+ + #105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102+ + #102#115#101#116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101+ + #102#97#117#108#116#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112#101+ + #32#115#105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#119#104#32+ + #97#115#32#119#104#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#32#32#34#116#101#120#116#117#114#101#34#32#116#121#112#101#32#117#115+ + #104#111#114#116#32#111#102#102#115#101#116#32#49#50#32#116#101#120#116#117+ + #114#101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34+ + #116#121#112#101#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102+ + #102#115#101#116#32#49#52#32#98#105#116#115#101#116#32#117#110#105#113#117+ + #101#32#80#97#110#101#108#84#121#112#101#32#119#114#105#116#101#100#101#102+ + #97#117#108#116#59#13#10#32#32#34#97#108#112#104#97#34#32#116#121#112#101#32+ + #117#98#121#116#101#32#111#102#102#115#101#116#32#49#54#32#100#101#102#97+ + #117#108#116#32#48#59#13#10#32#32#34#102#108#97#103#115#34#32#116#121#112+ + #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#55#32#98#105#116+ + #115#101#116#32#80#97#110#101#108#70#108#97#103#32#100#101#102#97#117#108+ + #116#32#80#65#78#69#76#95#70#76#65#71#95#78#79#78#69#59#13#10#32#32#47#47#32+ + #109#111#118#105#110#103#32#112#108#97#116#102#111#114#109#32#111#112#116+ + #105#111#110#115#44#32#110#111#116#32#105#110#32#98#105#110#97#114#121#13#10+ + #32#32#34#109#111#118#101#95#115#112#101#101#100#34#32#116#121#112#101#32+ + #112#111#105#110#116#32#100#101#102#97#117#108#116#32#40#48#32#48#41#59#13+ + #10#32#32#34#115#105#122#101#95#115#112#101#101#100#34#32#116#121#112#101#32+ + #112#111#105#110#116#32#100#101#102#97#117#108#116#32#40#48#32#48#41#59#32+ + #47#47#32#97#108#97#115#44#32#96#115#105#122#101#96#32#99#97#110#110#111#116+ + #32#98#101#32#110#101#103#97#116#105#118#101#13#10#32#32#34#109#111#118#101+ + #95#115#116#97#114#116#34#32#116#121#112#101#32#112#111#105#110#116#32#100+ + #101#102#97#117#108#116#32#40#48#32#48#41#59#13#10#32#32#34#109#111#118#101+ + #95#101#110#100#34#32#116#121#112#101#32#112#111#105#110#116#32#100#101#102+ + #97#117#108#116#32#40#48#32#48#41#59#13#10#32#32#34#115#105#122#101#95#101+ + #110#100#34#32#116#121#112#101#32#115#105#122#101#32#100#101#102#97#117#108+ + #116#32#40#48#32#48#41#59#13#10#32#32#34#109#111#118#101#95#97#99#116#105+ #118#101#34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108+ - #116#32#102#97#108#115#101#59#10#32#32#34#109#111#118#101#95#111#110#99#101+ - #34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108#116#32+ - #102#97#108#115#101#59#10#32#32#34#101#110#100#95#112#111#115#95#116#114#105+ - #103#103#101#114#34#32#116#114#105#103#103#101#114#32#100#101#102#97#117#108+ - #116#32#110#117#108#108#59#10#32#32#34#101#110#100#95#115#105#122#101#95#116+ + #116#32#102#97#108#115#101#59#13#10#32#32#34#109#111#118#101#95#111#110#99+ + #101#34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108#116+ + #32#102#97#108#115#101#59#13#10#32#32#34#101#110#100#95#112#111#115#95#116+ #114#105#103#103#101#114#34#32#116#114#105#103#103#101#114#32#100#101#102#97+ - #117#108#116#32#110#117#108#108#59#10#125#10#10#34#105#116#101#109#34#32#115+ - #105#122#101#32#49#48#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107+ - #32#51#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121#112+ - #101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115#32+ - #120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #116#121#112#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ - #115#101#116#32#56#32#101#110#117#109#32#73#116#101#109#32#119#114#105#116+ - #101#100#101#102#97#117#108#116#59#10#32#32#34#111#112#116#105#111#110#115+ - #34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32+ - #57#32#98#105#116#115#101#116#32#73#116#101#109#79#112#116#105#111#110#32+ - #100#101#102#97#117#108#116#32#73#84#69#77#95#79#80#84#73#79#78#95#78#79#78+ - #69#59#10#125#10#10#34#109#111#110#115#116#101#114#34#32#115#105#122#101#32+ - #49#48#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107#32#53#32#123#10+ + #117#108#116#32#110#117#108#108#59#13#10#32#32#34#101#110#100#95#115#105#122+ + #101#95#116#114#105#103#103#101#114#34#32#116#114#105#103#103#101#114#32#100+ + #101#102#97#117#108#116#32#110#117#108#108#59#13#10#125#13#10#13#10#34#105+ + #116#101#109#34#32#115#105#122#101#32#49#48#32#98#121#116#101#115#32#98#105+ + #110#98#108#111#99#107#32#51#32#123#13#10#32#32#34#112#111#115#105#116#105+ + #111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101+ + #116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#32#32#34#116#121#112#101#34#32#116#121#112#101#32#117#98+ + #121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109#32#73#116+ + #101#109#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34+ + #111#112#116#105#111#110#115#34#32#116#121#112#101#32#117#98#121#116#101#32+ + #111#102#102#115#101#116#32#57#32#98#105#116#115#101#116#32#73#116#101#109+ + #79#112#116#105#111#110#32#100#101#102#97#117#108#116#32#73#84#69#77#95#79+ + #80#84#73#79#78#95#78#79#78#69#59#13#10#125#13#10#13#10#34#109#111#110#115+ + #116#101#114#34#32#115#105#122#101#32#49#48#32#98#121#116#101#115#32#98#105+ + #110#98#108#111#99#107#32#53#32#123#13#10#32#32#34#112#111#115#105#116#105+ + #111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101+ + #116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#32#32#34#116#121#112#101#34#32#116#121#112#101#32#117#98+ + #121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109#32#77#111+ + #110#115#116#101#114#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#32#32#34#100#105#114#101#99#116#105#111#110#34#32#116#121#112#101#32#117+ + #98#121#116#101#32#111#102#102#115#101#116#32#57#32#101#110#117#109#32#68+ + #105#114#84#121#112#101#32#100#101#102#97#117#108#116#32#68#73#82#95#76#69+ + #70#84#59#13#10#125#13#10#13#10#34#97#114#101#97#34#32#115#105#122#101#32#49+ + #48#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107#32#52#32#123#13#10+ #32#32#34#112#111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111+ #105#110#116#32#111#102#102#115#101#116#32#48#32#97#115#32#120#121#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#116#121#112#101+ - #34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32+ - #56#32#101#110#117#109#32#77#111#110#115#116#101#114#32#119#114#105#116#101+ - #100#101#102#97#117#108#116#59#10#32#32#34#100#105#114#101#99#116#105#111+ - #110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+ - #32#57#32#101#110#117#109#32#68#105#114#84#121#112#101#32#100#101#102#97#117+ - #108#116#32#68#73#82#95#76#69#70#84#59#10#125#10#10#34#97#114#101#97#34#32+ - #115#105#122#101#32#49#48#32#98#121#116#101#115#32#98#105#110#98#108#111#99+ - #107#32#52#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121+ - #112#101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115+ - #32#120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #116#121#112#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ - #115#101#116#32#56#32#101#110#117#109#32#65#114#101#97#84#121#112#101#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#100#105#114#101+ - #99#116#105#111#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102+ - #102#115#101#116#32#57#32#101#110#117#109#32#68#105#114#84#121#112#101#32+ - #100#101#102#97#117#108#116#32#68#73#82#95#76#69#70#84#59#10#125#10#10#34+ - #116#114#105#103#103#101#114#34#32#115#105#122#101#32#49#52#56#32#98#121#116+ - #101#115#32#98#105#110#98#108#111#99#107#32#54#32#123#10#32#32#34#112#111+ - #115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111+ - #102#102#115#101#116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100+ - #101#102#97#117#108#116#59#10#32#32#34#115#105#122#101#34#32#116#121#112#101+ - #32#115#105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#119#104#32+ - #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#101#110#97#98+ - #108#101#100#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101+ - #116#32#49#50#32#100#101#102#97#117#108#116#32#116#114#117#101#59#10#32#32+ - #34#116#101#120#116#117#114#101#95#112#97#110#101#108#34#32#116#121#112#101+ - #32#105#110#116#32#111#102#102#115#101#116#32#49#51#32#112#97#110#101#108#32+ - #100#101#102#97#117#108#116#32#110#117#108#108#59#10#32#32#34#116#121#112+ + #114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#116#121#112+ #101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+ - #32#49#55#32#101#110#117#109#32#84#114#105#103#103#101#114#84#121#112#101#32+ - #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#97#99#116#105+ - #118#97#116#101#95#116#121#112#101#34#32#116#121#112#101#32#117#98#121#116+ - #101#32#111#102#102#115#101#116#32#49#56#32#98#105#116#115#101#116#32#65#99+ - #116#105#118#97#116#101#84#121#112#101#59#10#32#32#34#107#101#121#115#34#32+ - #116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#57+ - #32#98#105#116#115#101#116#32#75#101#121#32#100#101#102#97#117#108#116#32#75+ - #69#89#95#78#79#78#69#59#10#32#32#47#47#87#65#82#78#73#78#71#58#32#34#116+ - #114#105#103#100#97#116#97#34#32#77#85#83#84#32#98#101#32#100#101#102#105+ - #110#101#100#32#98#101#102#111#114#101#32#34#116#121#112#101#34#44#32#97#110+ - #100#32#34#116#121#112#101#34#32#77#85#83#84#32#98#101#32#110#97#109#101#100+ - #32#34#116#121#112#101#34#32#40#102#111#114#32#110#111#119#44#32#99#97#110+ - #32#98#101#32#99#104#97#110#103#101#100#32#108#97#116#101#114#41#10#32#32#34+ - #116#114#105#103#103#101#114#100#97#116#97#34#32#116#121#112#101#32#116#114+ - #105#103#100#97#116#97#91#49#50#56#93#32#111#102#102#115#101#116#32#50#48#59+ - #32#47#47#32#116#104#101#32#111#110#108#121#32#115#112#101#99#105#97#108#32+ - #110#101#115#116#101#100#32#115#116#114#117#99#116#117#114#101#10#32#32#47+ - #47#68#79#32#78#79#84#32#85#83#69#33#32#101#120#112#101#114#105#109#101#110+ - #116#97#108#32#102#101#97#116#117#114#101#33#32#119#105#108#108#32#98#101#32+ - #114#101#109#111#118#101#100#33#10#32#32#34#101#120#111#109#97#95#105#110+ - #105#116#34#32#116#121#112#101#32#115#116#114#105#110#103#32#100#101#102#97+ - #117#108#116#32#34#34#32#116#105#112#32#34#119#105#108#108#32#98#101#32#99+ - #97#108#108#101#100#32#111#110#32#116#114#105#103#103#101#114#32#99#114#101+ - #97#116#105#111#110#34#59#10#32#32#34#101#120#111#109#97#95#116#104#105#110+ - #107#34#32#116#121#112#101#32#115#116#114#105#110#103#32#100#101#102#97#117+ - #108#116#32#34#34#32#116#105#112#32#34#119#105#108#108#32#98#101#32#99#97+ - #108#108#101#100#32#111#110#32#101#97#99#104#32#116#104#105#110#107#32#115+ - #116#101#112#34#59#10#32#32#34#101#120#111#109#97#95#99#104#101#99#107#34#32+ - #116#121#112#101#32#115#116#114#105#110#103#32#100#101#102#97#117#108#116#32+ - #34#34#32#116#105#112#32#34#119#105#108#108#32#98#101#32#99#97#108#108#101+ - #100#32#98#101#102#111#114#101#32#97#99#116#105#118#97#116#105#111#110#34#59+ - #10#32#32#34#101#120#111#109#97#95#97#99#116#105#111#110#34#32#116#121#112+ - #101#32#115#116#114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#32+ - #116#105#112#32#34#119#105#108#108#32#98#101#32#99#97#108#108#101#100#32#111+ - #110#32#97#99#116#105#118#97#116#105#111#110#34#59#10#125#10#10#10#47#47#47+ - #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ + #32#56#32#101#110#117#109#32#65#114#101#97#84#121#112#101#32#119#114#105#116+ + #101#100#101#102#97#117#108#116#59#13#10#32#32#34#100#105#114#101#99#116#105+ + #111#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+ + #116#32#57#32#101#110#117#109#32#68#105#114#84#121#112#101#32#100#101#102#97+ + #117#108#116#32#68#73#82#95#76#69#70#84#59#13#10#125#13#10#13#10#34#116#114+ + #105#103#103#101#114#34#32#115#105#122#101#32#49#52#56#32#98#121#116#101#115+ + #32#98#105#110#98#108#111#99#107#32#54#32#123#13#10#32#32#34#112#111#115#105+ + #116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102+ + #115#101#116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101#102+ + #97#117#108#116#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32+ + #115#105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#119#104#32+ + #119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#101#110#97+ + #98#108#101#100#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115+ + #101#116#32#49#50#32#100#101#102#97#117#108#116#32#116#114#117#101#59#13#10+ + #32#32#34#116#101#120#116#117#114#101#95#112#97#110#101#108#34#32#116#121+ + #112#101#32#105#110#116#32#111#102#102#115#101#116#32#49#51#32#112#97#110+ + #101#108#32#100#101#102#97#117#108#116#32#110#117#108#108#59#13#10#32#32#34+ + #116#121#112#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ + #115#101#116#32#49#55#32#101#110#117#109#32#84#114#105#103#103#101#114#84+ + #121#112#101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32+ + #32#34#97#99#116#105#118#97#116#101#95#116#121#112#101#34#32#116#121#112#101+ + #32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#56#32#98#105#116#115+ + #101#116#32#65#99#116#105#118#97#116#101#84#121#112#101#59#13#10#32#32#34+ + #107#101#121#115#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ + #115#101#116#32#49#57#32#98#105#116#115#101#116#32#75#101#121#32#100#101#102+ + #97#117#108#116#32#75#69#89#95#78#79#78#69#59#13#10#32#32#47#47#87#65#82#78+ + #73#78#71#58#32#34#116#114#105#103#100#97#116#97#34#32#77#85#83#84#32#98#101+ + #32#100#101#102#105#110#101#100#32#98#101#102#111#114#101#32#34#116#121#112+ + #101#34#44#32#97#110#100#32#34#116#121#112#101#34#32#77#85#83#84#32#98#101+ + #32#110#97#109#101#100#32#34#116#121#112#101#34#32#40#102#111#114#32#110#111+ + #119#44#32#99#97#110#32#98#101#32#99#104#97#110#103#101#100#32#108#97#116+ + #101#114#41#13#10#32#32#34#116#114#105#103#103#101#114#100#97#116#97#34#32+ + #116#121#112#101#32#116#114#105#103#100#97#116#97#91#49#50#56#93#32#111#102+ + #102#115#101#116#32#50#48#59#32#47#47#32#116#104#101#32#111#110#108#121#32+ + #115#112#101#99#105#97#108#32#110#101#115#116#101#100#32#115#116#114#117#99+ + #116#117#114#101#13#10#32#32#47#47#68#79#32#78#79#84#32#85#83#69#33#32#101+ + #120#112#101#114#105#109#101#110#116#97#108#32#102#101#97#116#117#114#101#33+ + #32#119#105#108#108#32#98#101#32#114#101#109#111#118#101#100#33#13#10#32#32+ + #34#101#120#111#109#97#95#105#110#105#116#34#32#116#121#112#101#32#115#116+ + #114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34+ + #119#105#108#108#32#98#101#32#99#97#108#108#101#100#32#111#110#32#116#114+ + #105#103#103#101#114#32#99#114#101#97#116#105#111#110#34#59#13#10#32#32#34+ + #101#120#111#109#97#95#116#104#105#110#107#34#32#116#121#112#101#32#115#116+ + #114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34+ + #119#105#108#108#32#98#101#32#99#97#108#108#101#100#32#111#110#32#101#97#99+ + #104#32#116#104#105#110#107#32#115#116#101#112#34#59#13#10#32#32#34#101#120+ + #111#109#97#95#99#104#101#99#107#34#32#116#121#112#101#32#115#116#114#105+ + #110#103#32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34#119#105+ + #108#108#32#98#101#32#99#97#108#108#101#100#32#98#101#102#111#114#101#32#97+ + #99#116#105#118#97#116#105#111#110#34#59#13#10#32#32#34#101#120#111#109#97+ + #95#97#99#116#105#111#110#34#32#116#121#112#101#32#115#116#114#105#110#103+ + #32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34#119#105#108#108+ + #32#98#101#32#99#97#108#108#101#100#32#111#110#32#97#99#116#105#118#97#116+ + #105#111#110#34#59#13#10#125#13#10#13#10#13#10#47#47#47#47#47#47#47#47#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ - #47#47#10#47#47#32#115#112#101#99#105#97#108#32#116#101#120#116#117#114#101+ - #32#105#100#101#110#116#105#102#105#101#114#115#44#32#117#115#101#100#32#116+ - #111#32#103#101#110#101#114#97#116#101#32#112#97#115#99#97#108#32#115#111+ - #117#114#99#101#115#10#101#110#117#109#32#84#101#120#116#117#114#101#83#112+ - #101#99#105#97#108#32#123#10#32#32#84#69#88#84#85#82#69#95#83#80#69#67#73#65+ - #76#95#87#65#84#69#82#32#61#32#45#49#44#10#32#32#84#69#88#84#85#82#69#95#83+ - #80#69#67#73#65#76#95#65#67#73#68#49#32#61#32#45#50#44#10#32#32#84#69#88#84+ - #85#82#69#95#83#80#69#67#73#65#76#95#65#67#73#68#50#32#61#32#45#51#44#10#32+ - #32#84#69#88#84#85#82#69#95#78#79#78#69#32#61#32#45#52#44#10#125#10#10#47#47+ - #32#100#105#114#101#99#116#105#111#110#115#10#101#110#117#109#32#68#105#114+ - #84#121#112#101#32#123#10#32#32#68#73#82#95#76#69#70#84#44#32#47#47#32#48#10+ - #32#32#68#73#82#95#82#73#71#72#84#44#32#47#47#32#49#10#32#32#68#73#82#95#80+ - #82#69#83#69#82#86#69#44#32#47#47#32#50#10#32#32#68#73#82#95#82#69#86#69#82+ - #83#69#44#32#47#47#32#51#10#125#10#10#47#47#32#116#114#105#103#103#101#114+ - #115#10#101#110#117#109#32#84#114#105#103#103#101#114#84#121#112#101#32#123+ - #10#32#32#84#82#73#71#71#69#82#95#78#79#78#69#44#32#47#47#32#48#10#32#32#84+ - #82#73#71#71#69#82#95#69#88#73#84#44#32#47#47#32#49#10#32#32#84#82#73#71#71+ - #69#82#95#84#69#76#69#80#79#82#84#44#32#47#47#32#50#10#32#32#84#82#73#71#71+ - #69#82#95#79#80#69#78#68#79#79#82#44#32#47#47#32#51#10#32#32#84#82#73#71#71+ - #69#82#95#67#76#79#83#69#68#79#79#82#44#32#47#47#32#52#10#32#32#84#82#73#71+ - #71#69#82#95#68#79#79#82#44#32#47#47#32#53#10#32#32#84#82#73#71#71#69#82#95+ - #68#79#79#82#53#44#32#47#47#32#54#10#32#32#84#82#73#71#71#69#82#95#67#76#79+ - #83#69#84#82#65#80#44#32#47#47#32#55#10#32#32#84#82#73#71#71#69#82#95#84#82+ - #65#80#44#32#47#47#32#56#10#32#32#84#82#73#71#71#69#82#95#80#82#69#83#83#44+ - #32#47#47#32#57#10#32#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#44#32#47+ - #47#32#49#48#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#85#80#44#32#47#47+ - #32#49#49#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79#87#78#44#32#47+ - #47#32#49#50#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#44#32#47#47#32#49+ - #51#10#32#32#84#82#73#71#71#69#82#95#84#69#88#84#85#82#69#44#32#47#47#32#49+ - #52#10#32#32#84#82#73#71#71#69#82#95#79#78#44#32#47#47#32#49#53#10#32#32#84+ - #82#73#71#71#69#82#95#79#70#70#44#32#47#47#32#49#54#10#32#32#84#82#73#71#71+ - #69#82#95#79#78#79#70#70#44#32#47#47#32#49#55#10#32#32#84#82#73#71#71#69#82+ - #95#83#79#85#78#68#44#32#47#47#32#49#56#10#32#32#84#82#73#71#71#69#82#95#83+ - #80#65#87#78#77#79#78#83#84#69#82#44#32#47#47#32#49#57#10#32#32#84#82#73#71+ - #71#69#82#95#83#80#65#87#78#73#84#69#77#44#32#47#47#32#50#48#10#32#32#84#82+ - #73#71#71#69#82#95#77#85#83#73#67#44#32#47#47#32#50#49#10#32#32#84#82#73#71+ - #71#69#82#95#80#85#83#72#44#32#47#47#32#50#50#10#32#32#84#82#73#71#71#69#82+ - #95#83#67#79#82#69#44#32#47#47#32#50#51#10#32#32#84#82#73#71#71#69#82#95#77+ - #69#83#83#65#71#69#44#32#47#47#32#50#52#10#32#32#84#82#73#71#71#69#82#95#68+ - #65#77#65#71#69#44#32#47#47#32#50#53#10#32#32#84#82#73#71#71#69#82#95#72#69+ - #65#76#84#72#44#32#47#47#32#50#54#10#32#32#84#82#73#71#71#69#82#95#83#72#79+ - #84#44#32#47#47#32#50#55#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84+ - #44#32#47#47#32#50#56#10#32#32#84#82#73#71#71#69#82#95#83#67#82#73#80#84#44+ - #32#47#47#32#50#57#10#32#32#47#47#10#32#32#84#82#73#71#71#69#82#95#77#65#88+ - #32#61#32#77#65#88#44#10#125#10#10#47#47#32#34#97#115#32#88#88#88#34#32#109+ - #101#97#110#115#32#34#103#101#110#101#114#97#116#101#32#116#104#105#115#32+ - #105#100#101#110#116#105#102#105#101#114#32#102#111#114#32#112#97#115#99#97+ - #108#32#115#111#117#114#99#101#115#10#98#105#116#115#101#116#32#80#97#110+ - #101#108#84#121#112#101#32#123#10#32#32#80#65#78#69#76#95#78#79#78#69#32#61+ - #32#48#44#32#47#47#32#48#10#32#32#80#65#78#69#76#95#87#65#76#76#44#32#47#47+ - #32#49#10#32#32#80#65#78#69#76#95#66#65#67#75#44#32#47#47#32#50#10#32#32#80+ - #65#78#69#76#95#70#79#82#69#44#32#47#47#32#52#10#32#32#80#65#78#69#76#95#87+ - #65#84#69#82#44#32#47#47#32#56#10#32#32#80#65#78#69#76#95#65#67#73#68#49#44+ - #32#47#47#32#49#54#10#32#32#80#65#78#69#76#95#65#67#73#68#50#44#32#47#47#32+ - #51#50#10#32#32#80#65#78#69#76#95#83#84#69#80#44#32#47#47#32#54#52#10#32#32+ - #80#65#78#69#76#95#76#73#70#84#85#80#44#32#47#47#32#49#50#56#10#32#32#80#65+ - #78#69#76#95#76#73#70#84#68#79#87#78#44#32#47#47#32#50#53#54#10#32#32#80#65+ - #78#69#76#95#79#80#69#78#68#79#79#82#44#32#47#47#32#53#49#50#10#32#32#80#65+ - #78#69#76#95#67#76#79#83#69#68#79#79#82#44#32#47#47#32#49#48#50#52#10#32#32+ - #80#65#78#69#76#95#66#76#79#67#75#77#79#78#44#32#47#47#32#50#48#52#56#10#32+ - #32#80#65#78#69#76#95#76#73#70#84#76#69#70#84#44#32#47#47#32#52#48#57#54#10+ - #32#32#80#65#78#69#76#95#76#73#70#84#82#73#71#72#84#44#32#47#47#32#56#49#57+ - #50#10#125#10#10#98#105#116#115#101#116#32#80#97#110#101#108#70#108#97#103+ - #32#123#10#32#32#80#65#78#69#76#95#70#76#65#71#95#78#79#78#69#32#61#32#48#44+ - #32#47#47#32#48#10#32#32#80#65#78#69#76#95#70#76#65#71#95#66#76#69#78#68#73+ - #78#71#44#32#47#47#32#49#10#32#32#80#65#78#69#76#95#70#76#65#71#95#72#73#68+ - #69#44#32#47#47#32#50#10#32#32#80#65#78#69#76#95#70#76#65#71#95#87#65#84#69+ - #82#84#69#88#84#85#82#69#83#44#32#47#47#32#52#10#125#10#10#101#110#117#109+ - #32#69#102#102#101#99#116#65#99#116#105#111#110#32#123#10#32#32#69#70#70#69+ - #67#84#95#78#79#78#69#44#32#47#47#32#48#10#32#32#69#70#70#69#67#84#95#84#69+ - #76#69#80#79#82#84#44#32#47#47#32#49#10#32#32#69#70#70#69#67#84#95#82#69#83+ - #80#65#87#78#44#32#47#47#32#50#10#32#32#69#70#70#69#67#84#95#70#73#82#69#44+ - #32#47#47#32#51#10#125#10#10#47#47#87#65#82#78#73#78#71#33#32#109#97#120#32+ - #97#108#108#111#119#101#100#32#105#116#101#109#115#32#116#121#112#101#115#32+ - #105#115#32#49#50#55#10#101#110#117#109#32#73#116#101#109#32#123#10#32#32#73+ - #84#69#77#95#78#79#78#69#44#32#47#47#32#48#10#32#32#73#84#69#77#95#77#69#68+ - #75#73#84#95#83#77#65#76#76#44#32#47#47#32#49#10#32#32#73#84#69#77#95#77#69+ - #68#75#73#84#95#76#65#82#71#69#44#32#47#47#32#50#10#32#32#73#84#69#77#95#77+ - #69#68#75#73#84#95#66#76#65#67#75#44#32#47#47#32#51#10#32#32#73#84#69#77#95+ - #65#82#77#79#82#95#71#82#69#69#78#44#32#47#47#32#52#10#32#32#73#84#69#77#95+ - #65#82#77#79#82#95#66#76#85#69#44#32#47#47#32#53#10#32#32#73#84#69#77#95#83+ - #80#72#69#82#69#95#66#76#85#69#44#32#47#47#32#54#10#32#32#73#84#69#77#95#83+ - #80#72#69#82#69#95#87#72#73#84#69#44#32#47#47#32#55#10#32#32#73#84#69#77#95+ - #83#85#73#84#44#32#47#47#32#56#10#32#32#73#84#69#77#95#79#88#89#71#69#78#44+ - #32#47#47#32#57#10#32#32#73#84#69#77#95#73#78#86#85#76#44#32#47#47#32#49#48+ - #10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#65#87#44#32#47#47#32#49#49+ - #10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#72#79#84#71#85#78#49#44#32+ - #47#47#32#49#50#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#72#79#84#71+ - #85#78#50#44#32#47#47#32#49#51#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95+ - #67#72#65#73#78#71#85#78#44#32#47#47#32#49#52#10#32#32#73#84#69#77#95#87#69+ - #65#80#79#78#95#82#79#67#75#69#84#76#65#85#78#67#72#69#82#44#32#47#47#32#49+ - #53#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#80#76#65#83#77#65#44#32#47+ - #47#32#49#54#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#66#70#71#44#32#47+ - #47#32#49#55#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#85#80#69#82#80+ - #85#76#69#77#69#84#44#32#47#47#32#49#56#10#32#32#73#84#69#77#95#65#77#77#79+ - #95#66#85#76#76#69#84#83#44#32#47#47#32#49#57#10#32#32#73#84#69#77#95#65#77+ - #77#79#95#66#85#76#76#69#84#83#95#66#79#88#44#32#47#47#32#50#48#10#32#32#73+ - #84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#44#32#47#47#32#50#49#10#32#32+ - #73#84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#95#66#79#88#44#32#47#47#32+ - #50#50#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75#69#84#44#32#47#47+ - #32#50#51#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75#69#84#95#66#79+ - #88#44#32#47#47#32#50#52#10#32#32#73#84#69#77#95#65#77#77#79#95#67#69#76#76+ - #44#32#47#47#32#50#53#10#32#32#73#84#69#77#95#65#77#77#79#95#67#69#76#76#95+ - #66#73#71#44#32#47#47#32#50#54#10#32#32#73#84#69#77#95#65#77#77#79#95#66#65+ - #67#75#80#65#67#75#44#32#47#47#32#50#55#10#32#32#73#84#69#77#95#75#69#89#95+ - #82#69#68#44#32#47#47#32#50#56#10#32#32#73#84#69#77#95#75#69#89#95#71#82#69+ - #69#78#44#32#47#47#32#50#57#10#32#32#73#84#69#77#95#75#69#89#95#66#76#85#69+ - #44#32#47#47#32#51#48#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#75#65#83+ - #84#69#84#44#32#47#47#32#51#49#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95+ - #80#73#83#84#79#76#44#32#47#47#32#51#50#10#32#32#73#84#69#77#95#66#79#84#84+ - #76#69#44#32#47#47#32#51#51#10#32#32#73#84#69#77#95#72#69#76#77#69#84#44#32+ - #47#47#32#51#52#10#32#32#73#84#69#77#95#74#69#84#80#65#67#75#44#32#47#47#32+ - #51#53#10#32#32#73#84#69#77#95#73#78#86#73#83#44#32#47#47#32#51#54#10#32#32+ - #73#84#69#77#95#87#69#65#80#79#78#95#70#76#65#77#69#84#72#82#79#87#69#82#44+ - #32#47#47#32#51#55#10#32#32#73#84#69#77#95#65#77#77#79#95#70#85#69#76#67#65+ - #78#44#32#47#47#32#51#56#10#32#32#47#47#10#32#32#73#84#69#77#95#77#65#88#32+ - #61#32#77#65#88#44#32#47#47#32#115#116#111#114#101#32#116#104#101#32#108#97+ - #115#116#32#105#116#101#109#39#115#32#105#100#32#105#110#32#104#101#114#101+ - #32#117#115#101#32#116#104#105#115#32#105#110#32#102#111#114#32#108#111#111+ - #112#115#10#125#10#10#98#105#116#115#101#116#32#73#116#101#109#79#112#116+ - #105#111#110#32#123#10#32#32#73#84#69#77#95#79#80#84#73#79#78#95#78#79#78#69+ - #32#61#32#48#44#32#47#47#32#48#10#32#32#73#84#69#77#95#79#80#84#73#79#78#95+ - #79#78#76#89#68#77#44#32#47#47#32#49#10#32#32#73#84#69#77#95#79#80#84#73#79+ - #78#95#70#65#76#76#44#32#47#47#32#50#10#125#10#10#101#110#117#109#32#65#114+ - #101#97#84#121#112#101#32#123#10#32#32#65#82#69#65#95#78#79#78#69#44#32#47+ - #47#32#48#10#32#32#65#82#69#65#95#80#76#65#89#69#82#80#79#73#78#84#49#44#32+ - #47#47#32#49#10#32#32#65#82#69#65#95#80#76#65#89#69#82#80#79#73#78#84#50#44+ - #32#47#47#32#50#10#32#32#65#82#69#65#95#68#77#80#79#73#78#84#44#32#47#47#32+ - #51#10#32#32#65#82#69#65#95#82#69#68#70#76#65#71#44#32#47#47#32#52#10#32#32+ - #65#82#69#65#95#66#76#85#69#70#76#65#71#44#32#47#47#32#53#10#32#32#65#82#69+ - #65#95#68#79#77#70#76#65#71#44#32#47#47#32#54#10#32#32#65#82#69#65#95#82#69+ - #68#84#69#65#77#80#79#73#78#84#44#32#47#47#32#55#10#32#32#65#82#69#65#95#66+ - #76#85#69#84#69#65#77#80#79#73#78#84#44#32#47#47#32#56#10#125#10#10#101#110+ - #117#109#32#77#111#110#115#116#101#114#32#123#10#32#32#77#79#78#83#84#69#82+ - #95#78#79#78#69#44#32#47#47#32#48#10#32#32#77#79#78#83#84#69#82#95#68#69#77+ - #79#78#44#32#47#47#32#49#10#32#32#77#79#78#83#84#69#82#95#73#77#80#44#32#47+ - #47#32#50#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#89#44#32#47#47#32#51+ - #10#32#32#77#79#78#83#84#69#82#95#83#69#82#71#44#32#47#47#32#52#10#32#32#77+ - #79#78#83#84#69#82#95#67#89#66#69#82#44#32#47#47#32#53#10#32#32#77#79#78#83+ - #84#69#82#95#67#71#85#78#44#32#47#47#32#54#10#32#32#77#79#78#83#84#69#82#95+ - #66#65#82#79#78#44#32#47#47#32#55#10#32#32#77#79#78#83#84#69#82#95#75#78#73+ - #71#72#84#44#32#47#47#32#56#10#32#32#77#79#78#83#84#69#82#95#67#65#67#79#44+ - #32#47#47#32#57#10#32#32#77#79#78#83#84#69#82#95#83#79#85#76#44#32#47#47#32+ - #49#48#10#32#32#77#79#78#83#84#69#82#95#80#65#73#78#44#32#47#47#32#49#49#10+ - #32#32#77#79#78#83#84#69#82#95#83#80#73#68#69#82#44#32#47#47#32#49#50#10#32+ - #32#77#79#78#83#84#69#82#95#66#83#80#44#32#47#47#32#49#51#10#32#32#77#79#78+ - #83#84#69#82#95#77#65#78#67#85#66#44#32#47#47#32#49#52#10#32#32#77#79#78#83+ - #84#69#82#95#83#75#69#76#44#32#47#47#32#49#53#10#32#32#77#79#78#83#84#69#82+ - #95#86#73#76#69#44#32#47#47#32#49#54#10#32#32#77#79#78#83#84#69#82#95#70#73+ - #83#72#44#32#47#47#32#49#55#10#32#32#77#79#78#83#84#69#82#95#66#65#82#82#69+ - #76#44#32#47#47#32#49#56#10#32#32#77#79#78#83#84#69#82#95#82#79#66#79#44#32+ - #47#47#32#49#57#10#32#32#77#79#78#83#84#69#82#95#77#65#78#44#32#47#47#32#50+ - #48#10#32#32#47#47#32#97#108#105#97#115#101#115#32#40#102#105#120#109#101#58+ - #32#105#116#32#115#104#111#117#108#100#32#98#101#32#96#77#79#78#83#84#69#82+ - #95#90#79#77#66#73#69#32#61#32#77#79#78#83#84#69#82#95#90#79#77#66#89#96#33+ - #41#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#73#69#32#61#32#51#44#10#125+ - #10#10#101#110#117#109#32#77#111#110#115#116#101#114#66#101#104#97#118#105+ - #111#117#114#32#123#10#32#32#66#72#95#78#79#82#77#65#76#44#32#47#47#32#48#10+ - #32#32#66#72#95#75#73#76#76#69#82#44#32#47#47#32#49#10#32#32#66#72#95#77#65+ - #78#73#65#67#44#32#47#47#32#50#10#32#32#66#72#95#73#78#83#65#78#69#44#32#47+ - #47#32#51#10#32#32#66#72#95#67#65#78#78#73#66#65#76#44#32#47#47#32#52#10#32+ - #32#66#72#95#71#79#79#68#44#32#47#47#32#53#10#125#10#10#101#110#117#109#32+ - #84#114#105#103#103#101#114#83#104#111#116#32#123#10#32#32#84#82#73#71#71#69+ - #82#95#83#72#79#84#95#80#73#83#84#79#76#44#32#47#47#32#48#10#32#32#84#82#73+ - #71#71#69#82#95#83#72#79#84#95#66#85#76#76#69#84#44#32#47#47#32#49#10#32#32+ - #84#82#73#71#71#69#82#95#83#72#79#84#95#83#72#79#84#71#85#78#44#32#47#47#32+ - #50#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#83#83#71#44#32#47#47#32+ - #51#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#73#77#80#44#32#47#47#32+ - #52#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#80#76#65#83#77#65#44#32+ - #47#47#32#53#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#83#80#73#68#69+ - #82#44#32#47#47#32#54#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#67#65+ - #67#79#44#32#47#47#32#55#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#66+ - #65#82#79#78#44#32#47#47#32#56#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84+ - #95#77#65#78#67#85#66#44#32#47#47#32#57#10#32#32#84#82#73#71#71#69#82#95#83+ - #72#79#84#95#82#69#86#44#32#47#47#32#49#48#10#32#32#84#82#73#71#71#69#82#95+ - #83#72#79#84#95#82#79#67#75#69#84#44#32#47#47#32#49#49#10#32#32#84#82#73#71+ - #71#69#82#95#83#72#79#84#95#66#70#71#44#32#47#47#32#49#50#10#32#32#84#82#73+ - #71#71#69#82#95#83#72#79#84#95#69#88#80#76#44#32#47#47#32#49#51#10#32#32#84+ - #82#73#71#71#69#82#95#83#72#79#84#95#66#70#71#69#88#80#76#44#32#47#47#32#49+ - #52#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#70#76#65#77#69#44#32#47+ - #47#32#49#53#10#32#32#47#47#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95+ - #77#65#88#32#61#32#77#65#88#44#10#125#10#10#101#110#117#109#32#84#114#105+ - #103#103#101#114#83#104#111#116#84#97#114#103#101#116#32#123#10#32#32#84#82+ - #73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#78#79#78#69#44#32#47+ - #47#32#48#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84+ - #95#77#79#78#44#32#47#47#32#49#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84+ - #95#84#65#82#71#69#84#95#80#76#82#44#32#47#47#32#50#10#32#32#84#82#73#71#71+ - #69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#82#69#68#44#32#47#47#32#51#10+ - #32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#66#76#85+ - #69#44#32#47#47#32#52#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65+ - #82#71#69#84#95#77#79#78#80#76#82#44#32#47#47#32#53#10#32#32#84#82#73#71#71+ - #69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#80#76#82#77#79#78#44#32#47#47+ - #32#54#10#125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#83#104#111+ - #116#65#105#109#32#123#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73+ - #77#95#68#69#70#65#85#76#84#44#32#47#47#32#48#10#32#32#84#82#73#71#71#69#82+ - #95#83#72#79#84#95#65#73#77#95#65#76#76#77#65#80#44#32#47#47#32#49#10#32#32+ - #84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82#65#67#69#44#32#47+ - #47#32#50#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82+ - #65#67#69#65#76#76#44#32#47#47#32#51#10#125#10#10#101#110#117#109#32#84#114+ - #105#103#103#101#114#69#102#102#101#99#116#32#123#10#32#32#84#82#73#71#71#69+ - #82#95#69#70#70#69#67#84#95#80#65#82#84#73#67#76#69#44#32#47#47#32#48#10#32+ - #32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#65#78#73#77#65#84#73#79#78+ - #44#32#47#47#32#49#10#125#10#10#101#110#117#109#32#84#114#105#103#103#101+ - #114#69#102#102#101#99#116#84#121#112#101#32#123#10#32#32#84#82#73#71#71#69+ - #82#95#69#70#70#69#67#84#95#83#76#73#81#85#73#68#44#32#47#47#32#48#10#32#32+ - #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#76#76#73#81#85#73#68#44#32#47+ - #47#32#49#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#68#76#73#81+ - #85#73#68#44#32#47#47#32#50#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67+ - #84#95#66#76#79#79#68#44#32#47#47#32#51#10#32#32#84#82#73#71#71#69#82#95#69+ - #70#70#69#67#84#95#83#80#65#82#75#44#32#47#47#32#52#10#32#32#84#82#73#71#71+ - #69#82#95#69#70#70#69#67#84#95#66#85#66#66#76#69#44#32#47#47#32#53#10#32#32+ - #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#77#65#88#32#61#32#77#65#88#44+ - #10#125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#69#102#102#101+ - #99#116#80#111#115#32#123#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84+ - #95#80#79#83#95#67#69#78#84#69#82#44#32#47#47#32#48#10#32#32#84#82#73#71#71+ - #69#82#95#69#70#70#69#67#84#95#80#79#83#95#65#82#69#65#44#32#47#47#32#49#10+ - #125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#77#117#115#105#99+ - #65#99#116#105#111#110#32#123#10#32#32#84#82#73#71#71#69#82#95#77#85#83#73+ - #67#95#65#67#84#73#79#78#95#83#84#79#80#44#32#47#47#32#48#10#32#32#84#82#73+ - #71#71#69#82#95#77#85#83#73#67#95#65#67#84#73#79#78#95#80#76#65#89#44#32#47+ - #47#32#49#59#32#117#110#112#97#117#115#101#32#111#114#32#114#101#115#116#97+ - #114#116#10#125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#83#99+ - #111#114#101#65#99#116#105#111#110#32#123#10#32#32#84#82#73#71#71#69#82#95+ - #83#67#79#82#69#95#65#67#84#73#79#78#95#65#68#68#44#32#47#47#32#48#10#32#32+ - #84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#83#85#66#44+ - #32#47#47#32#49#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84+ - #73#79#78#95#87#73#78#44#32#47#47#32#50#10#32#32#84#82#73#71#71#69#82#95#83+ - #67#79#82#69#95#65#67#84#73#79#78#95#76#79#79#83#69#44#32#47#47#32#51#10#125+ - #10#10#101#110#117#109#32#84#114#105#103#103#101#114#77#101#115#115#97#103+ - #101#68#101#115#116#32#123#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65+ - #71#69#95#68#69#83#84#95#77#69#44#32#47#47#32#48#10#32#32#84#82#73#71#71#69+ - #82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#77#89#95#84#69#65#77#44#32#47+ - #47#32#49#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83+ - #84#95#69#78#69#77#89#95#84#69#65#77#44#32#47#47#32#50#10#32#32#84#82#73#71+ - #71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#82#69#68#95#84#69#65#77+ - #44#32#47#47#32#51#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95+ - #68#69#83#84#95#66#76#85#69#95#84#69#65#77#44#32#47#47#32#52#10#32#32#84#82+ - #73#71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#69#86#69#82#89#79+ - #78#69#44#32#47#47#32#53#10#125#10#10#101#110#117#109#32#84#114#105#103#103+ - #101#114#77#101#115#115#97#103#101#75#105#110#100#32#123#10#32#32#84#82#73+ - #71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78#68#95#67#72#65#84#44#32#47+ - #47#32#48#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78+ - #68#95#71#65#77#69#44#32#47#47#32#49#10#125#10#10#98#105#116#115#101#116#32+ - #65#99#116#105#118#97#116#101#84#121#112#101#32#123#10#32#32#65#67#84#73#86+ - #65#84#69#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#10#32#32#65#67#84#73+ - #86#65#84#69#95#80#76#65#89#69#82#67#79#76#76#73#68#69#44#32#47#47#32#49#10+ + #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#13#10#47#47#32+ + #115#112#101#99#105#97#108#32#116#101#120#116#117#114#101#32#105#100#101#110+ + #116#105#102#105#101#114#115#44#32#117#115#101#100#32#116#111#32#103#101#110+ + #101#114#97#116#101#32#112#97#115#99#97#108#32#115#111#117#114#99#101#115#13+ + #10#101#110#117#109#32#84#101#120#116#117#114#101#83#112#101#99#105#97#108+ + #32#123#13#10#32#32#84#69#88#84#85#82#69#95#83#80#69#67#73#65#76#95#87#65#84+ + #69#82#32#61#32#45#49#44#13#10#32#32#84#69#88#84#85#82#69#95#83#80#69#67#73+ + #65#76#95#65#67#73#68#49#32#61#32#45#50#44#13#10#32#32#84#69#88#84#85#82#69+ + #95#83#80#69#67#73#65#76#95#65#67#73#68#50#32#61#32#45#51#44#13#10#32#32#84+ + #69#88#84#85#82#69#95#78#79#78#69#32#61#32#45#52#44#13#10#125#13#10#13#10#47+ + #47#32#100#105#114#101#99#116#105#111#110#115#13#10#101#110#117#109#32#68+ + #105#114#84#121#112#101#32#123#13#10#32#32#68#73#82#95#76#69#70#84#44#32#47+ + #47#32#48#13#10#32#32#68#73#82#95#82#73#71#72#84#44#32#47#47#32#49#13#10#32+ + #32#68#73#82#95#80#82#69#83#69#82#86#69#44#32#47#47#32#50#13#10#32#32#68#73+ + #82#95#82#69#86#69#82#83#69#44#32#47#47#32#51#13#10#125#13#10#13#10#47#47#32+ + #116#114#105#103#103#101#114#115#13#10#101#110#117#109#32#84#114#105#103#103+ + #101#114#84#121#112#101#32#123#13#10#32#32#84#82#73#71#71#69#82#95#78#79#78+ + #69#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#69#88#73#84#44#32+ + #47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#84#69#76#69#80#79#82#84#44+ + #32#47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#79#80#69#78#68#79#79#82+ + #44#32#47#47#32#51#13#10#32#32#84#82#73#71#71#69#82#95#67#76#79#83#69#68#79+ + #79#82#44#32#47#47#32#52#13#10#32#32#84#82#73#71#71#69#82#95#68#79#79#82#44+ + #32#47#47#32#53#13#10#32#32#84#82#73#71#71#69#82#95#68#79#79#82#53#44#32#47+ + #47#32#54#13#10#32#32#84#82#73#71#71#69#82#95#67#76#79#83#69#84#82#65#80#44+ + #32#47#47#32#55#13#10#32#32#84#82#73#71#71#69#82#95#84#82#65#80#44#32#47#47+ + #32#56#13#10#32#32#84#82#73#71#71#69#82#95#80#82#69#83#83#44#32#47#47#32#57+ + #13#10#32#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#44#32#47#47#32#49#48+ + #13#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#85#80#44#32#47#47#32#49#49+ + #13#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79#87#78#44#32#47#47#32+ + #49#50#13#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#44#32#47#47#32#49#51+ + #13#10#32#32#84#82#73#71#71#69#82#95#84#69#88#84#85#82#69#44#32#47#47#32#49+ + #52#13#10#32#32#84#82#73#71#71#69#82#95#79#78#44#32#47#47#32#49#53#13#10#32+ + #32#84#82#73#71#71#69#82#95#79#70#70#44#32#47#47#32#49#54#13#10#32#32#84#82+ + #73#71#71#69#82#95#79#78#79#70#70#44#32#47#47#32#49#55#13#10#32#32#84#82#73+ + #71#71#69#82#95#83#79#85#78#68#44#32#47#47#32#49#56#13#10#32#32#84#82#73#71+ + #71#69#82#95#83#80#65#87#78#77#79#78#83#84#69#82#44#32#47#47#32#49#57#13#10+ + #32#32#84#82#73#71#71#69#82#95#83#80#65#87#78#73#84#69#77#44#32#47#47#32#50+ + #48#13#10#32#32#84#82#73#71#71#69#82#95#77#85#83#73#67#44#32#47#47#32#50#49+ + #13#10#32#32#84#82#73#71#71#69#82#95#80#85#83#72#44#32#47#47#32#50#50#13#10+ + #32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#44#32#47#47#32#50#51#13#10#32+ + #32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#44#32#47#47#32#50#52#13#10+ + #32#32#84#82#73#71#71#69#82#95#68#65#77#65#71#69#44#32#47#47#32#50#53#13#10+ + #32#32#84#82#73#71#71#69#82#95#72#69#65#76#84#72#44#32#47#47#32#50#54#13#10+ + #32#32#84#82#73#71#71#69#82#95#83#72#79#84#44#32#47#47#32#50#55#13#10#32#32+ + #84#82#73#71#71#69#82#95#69#70#70#69#67#84#44#32#47#47#32#50#56#13#10#32#32+ + #84#82#73#71#71#69#82#95#83#67#82#73#80#84#44#32#47#47#32#50#57#13#10#32#32+ + #47#47#13#10#32#32#84#82#73#71#71#69#82#95#77#65#88#32#61#32#77#65#88#44#13+ + #10#125#13#10#13#10#47#47#32#34#97#115#32#88#88#88#34#32#109#101#97#110#115+ + #32#34#103#101#110#101#114#97#116#101#32#116#104#105#115#32#105#100#101#110+ + #116#105#102#105#101#114#32#102#111#114#32#112#97#115#99#97#108#32#115#111+ + #117#114#99#101#115#13#10#98#105#116#115#101#116#32#80#97#110#101#108#84#121+ + #112#101#32#123#13#10#32#32#80#65#78#69#76#95#78#79#78#69#32#61#32#48#44#32+ + #47#47#32#48#13#10#32#32#80#65#78#69#76#95#87#65#76#76#44#32#47#47#32#49#13+ + #10#32#32#80#65#78#69#76#95#66#65#67#75#44#32#47#47#32#50#13#10#32#32#80#65+ + #78#69#76#95#70#79#82#69#44#32#47#47#32#52#13#10#32#32#80#65#78#69#76#95#87+ + #65#84#69#82#44#32#47#47#32#56#13#10#32#32#80#65#78#69#76#95#65#67#73#68#49+ + #44#32#47#47#32#49#54#13#10#32#32#80#65#78#69#76#95#65#67#73#68#50#44#32#47+ + #47#32#51#50#13#10#32#32#80#65#78#69#76#95#83#84#69#80#44#32#47#47#32#54#52+ + #13#10#32#32#80#65#78#69#76#95#76#73#70#84#85#80#44#32#47#47#32#49#50#56#13+ + #10#32#32#80#65#78#69#76#95#76#73#70#84#68#79#87#78#44#32#47#47#32#50#53#54+ + #13#10#32#32#80#65#78#69#76#95#79#80#69#78#68#79#79#82#44#32#47#47#32#53#49+ + #50#13#10#32#32#80#65#78#69#76#95#67#76#79#83#69#68#79#79#82#44#32#47#47#32+ + #49#48#50#52#13#10#32#32#80#65#78#69#76#95#66#76#79#67#75#77#79#78#44#32#47+ + #47#32#50#48#52#56#13#10#32#32#80#65#78#69#76#95#76#73#70#84#76#69#70#84#44+ + #32#47#47#32#52#48#57#54#13#10#32#32#80#65#78#69#76#95#76#73#70#84#82#73#71+ + #72#84#44#32#47#47#32#56#49#57#50#13#10#125#13#10#13#10#98#105#116#115#101+ + #116#32#80#97#110#101#108#70#108#97#103#32#123#13#10#32#32#80#65#78#69#76#95+ + #70#76#65#71#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#80#65+ + #78#69#76#95#70#76#65#71#95#66#76#69#78#68#73#78#71#44#32#47#47#32#49#13#10+ + #32#32#80#65#78#69#76#95#70#76#65#71#95#72#73#68#69#44#32#47#47#32#50#13#10+ + #32#32#80#65#78#69#76#95#70#76#65#71#95#87#65#84#69#82#84#69#88#84#85#82#69+ + #83#44#32#47#47#32#52#13#10#125#13#10#13#10#101#110#117#109#32#69#102#102+ + #101#99#116#65#99#116#105#111#110#32#123#13#10#32#32#69#70#70#69#67#84#95#78+ + #79#78#69#44#32#47#47#32#48#13#10#32#32#69#70#70#69#67#84#95#84#69#76#69#80+ + #79#82#84#44#32#47#47#32#49#13#10#32#32#69#70#70#69#67#84#95#82#69#83#80#65+ + #87#78#44#32#47#47#32#50#13#10#32#32#69#70#70#69#67#84#95#70#73#82#69#44#32+ + #47#47#32#51#13#10#125#13#10#13#10#47#47#87#65#82#78#73#78#71#33#32#109#97+ + #120#32#97#108#108#111#119#101#100#32#105#116#101#109#115#32#116#121#112#101+ + #115#32#105#115#32#49#50#55#13#10#101#110#117#109#32#73#116#101#109#32#123+ + #13#10#32#32#73#84#69#77#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#73#84+ + #69#77#95#77#69#68#75#73#84#95#83#77#65#76#76#44#32#47#47#32#49#13#10#32#32+ + #73#84#69#77#95#77#69#68#75#73#84#95#76#65#82#71#69#44#32#47#47#32#50#13#10+ + #32#32#73#84#69#77#95#77#69#68#75#73#84#95#66#76#65#67#75#44#32#47#47#32#51+ + #13#10#32#32#73#84#69#77#95#65#82#77#79#82#95#71#82#69#69#78#44#32#47#47#32+ + #52#13#10#32#32#73#84#69#77#95#65#82#77#79#82#95#66#76#85#69#44#32#47#47#32+ + #53#13#10#32#32#73#84#69#77#95#83#80#72#69#82#69#95#66#76#85#69#44#32#47#47+ + #32#54#13#10#32#32#73#84#69#77#95#83#80#72#69#82#69#95#87#72#73#84#69#44#32+ + #47#47#32#55#13#10#32#32#73#84#69#77#95#83#85#73#84#44#32#47#47#32#56#13#10+ + #32#32#73#84#69#77#95#79#88#89#71#69#78#44#32#47#47#32#57#13#10#32#32#73#84+ + #69#77#95#73#78#86#85#76#44#32#47#47#32#49#48#13#10#32#32#73#84#69#77#95#87+ + #69#65#80#79#78#95#83#65#87#44#32#47#47#32#49#49#13#10#32#32#73#84#69#77#95+ + #87#69#65#80#79#78#95#83#72#79#84#71#85#78#49#44#32#47#47#32#49#50#13#10#32+ + #32#73#84#69#77#95#87#69#65#80#79#78#95#83#72#79#84#71#85#78#50#44#32#47#47+ + #32#49#51#13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#67#72#65#73#78#71+ + #85#78#44#32#47#47#32#49#52#13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95+ + #82#79#67#75#69#84#76#65#85#78#67#72#69#82#44#32#47#47#32#49#53#13#10#32#32+ + #73#84#69#77#95#87#69#65#80#79#78#95#80#76#65#83#77#65#44#32#47#47#32#49#54+ + #13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#66#70#71#44#32#47#47#32#49+ + #55#13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#85#80#69#82#67#72#65+ + #73#78#71#85#78#44#32#47#47#32#49#56#13#10#32#32#73#84#69#77#95#65#77#77#79+ + #95#66#85#76#76#69#84#83#44#32#47#47#32#49#57#13#10#32#32#73#84#69#77#95#65+ + #77#77#79#95#66#85#76#76#69#84#83#95#66#79#88#44#32#47#47#32#50#48#13#10#32+ + #32#73#84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#44#32#47#47#32#50#49#13+ + #10#32#32#73#84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#95#66#79#88#44#32+ + #47#47#32#50#50#13#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75#69#84+ + #44#32#47#47#32#50#51#13#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75+ + #69#84#95#66#79#88#44#32#47#47#32#50#52#13#10#32#32#73#84#69#77#95#65#77#77+ + #79#95#67#69#76#76#44#32#47#47#32#50#53#13#10#32#32#73#84#69#77#95#65#77#77+ + #79#95#67#69#76#76#95#66#73#71#44#32#47#47#32#50#54#13#10#32#32#73#84#69#77+ + #95#65#77#77#79#95#66#65#67#75#80#65#67#75#44#32#47#47#32#50#55#13#10#32#32+ + #73#84#69#77#95#75#69#89#95#82#69#68#44#32#47#47#32#50#56#13#10#32#32#73#84+ + #69#77#95#75#69#89#95#71#82#69#69#78#44#32#47#47#32#50#57#13#10#32#32#73#84+ + #69#77#95#75#69#89#95#66#76#85#69#44#32#47#47#32#51#48#13#10#32#32#73#84#69+ + #77#95#87#69#65#80#79#78#95#73#82#79#78#70#73#83#84#44#32#47#47#32#51#49#13+ + #10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#80#73#83#84#79#76#44#32#47#47+ + #32#51#50#13#10#32#32#73#84#69#77#95#66#79#84#84#76#69#44#32#47#47#32#51#51+ + #13#10#32#32#73#84#69#77#95#72#69#76#77#69#84#44#32#47#47#32#51#52#13#10#32+ + #32#73#84#69#77#95#74#69#84#80#65#67#75#44#32#47#47#32#51#53#13#10#32#32#73+ + #84#69#77#95#73#78#86#73#83#44#32#47#47#32#51#54#13#10#32#32#73#84#69#77#95+ + #87#69#65#80#79#78#95#70#76#65#77#69#84#72#82#79#87#69#82#44#32#47#47#32#51+ + #55#13#10#32#32#73#84#69#77#95#65#77#77#79#95#70#85#69#76#67#65#78#44#32#47+ + #47#32#51#56#13#10#32#32#47#47#32#98#97#99#107#119#97#114#100#32#99#111#109+ + #112#97#116#105#98#105#108#105#116#121#32#97#108#105#97#115#101#115#13#10#32+ + #32#73#84#69#77#95#87#69#65#80#79#78#95#83#85#80#69#82#80#85#76#69#77#69#84+ + #32#61#32#49#56#44#32#32#47#47#32#73#84#69#77#95#87#69#65#80#79#78#95#83#85+ + #80#69#82#67#72#65#73#78#71#85#78#13#10#32#32#47#47#13#10#32#32#73#84#69#77+ + #95#77#65#88#32#61#32#77#65#88#44#32#47#47#32#115#116#111#114#101#32#116#104+ + #101#32#108#97#115#116#32#105#116#101#109#39#115#32#105#100#32#105#110#32+ + #104#101#114#101#32#117#115#101#32#116#104#105#115#32#105#110#32#102#111#114+ + #32#108#111#111#112#115#13#10#125#13#10#13#10#98#105#116#115#101#116#32#73+ + #116#101#109#79#112#116#105#111#110#32#123#13#10#32#32#73#84#69#77#95#79#80+ + #84#73#79#78#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#73#84+ + #69#77#95#79#80#84#73#79#78#95#79#78#76#89#68#77#44#32#47#47#32#49#13#10#32+ + #32#73#84#69#77#95#79#80#84#73#79#78#95#70#65#76#76#44#32#47#47#32#50#13#10+ + #125#13#10#13#10#101#110#117#109#32#65#114#101#97#84#121#112#101#32#123#13+ + #10#32#32#65#82#69#65#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#65#82#69+ + #65#95#80#76#65#89#69#82#80#79#73#78#84#49#44#32#47#47#32#49#13#10#32#32#65+ + #82#69#65#95#80#76#65#89#69#82#80#79#73#78#84#50#44#32#47#47#32#50#13#10#32+ + #32#65#82#69#65#95#68#77#80#79#73#78#84#44#32#47#47#32#51#13#10#32#32#65#82+ + #69#65#95#82#69#68#70#76#65#71#44#32#47#47#32#52#13#10#32#32#65#82#69#65#95+ + #66#76#85#69#70#76#65#71#44#32#47#47#32#53#13#10#32#32#65#82#69#65#95#68#79+ + #77#70#76#65#71#44#32#47#47#32#54#13#10#32#32#65#82#69#65#95#82#69#68#84#69+ + #65#77#80#79#73#78#84#44#32#47#47#32#55#13#10#32#32#65#82#69#65#95#66#76#85+ + #69#84#69#65#77#80#79#73#78#84#44#32#47#47#32#56#13#10#125#13#10#13#10#101+ + #110#117#109#32#77#111#110#115#116#101#114#32#123#13#10#32#32#77#79#78#83#84+ + #69#82#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#77#79#78#83#84#69#82#95+ + #68#69#77#79#78#44#32#47#47#32#49#13#10#32#32#77#79#78#83#84#69#82#95#73#77+ + #80#44#32#47#47#32#50#13#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#89#44+ + #32#47#47#32#51#13#10#32#32#77#79#78#83#84#69#82#95#83#69#82#71#44#32#47#47+ + #32#52#13#10#32#32#77#79#78#83#84#69#82#95#67#89#66#69#82#44#32#47#47#32#53+ + #13#10#32#32#77#79#78#83#84#69#82#95#67#71#85#78#44#32#47#47#32#54#13#10#32+ + #32#77#79#78#83#84#69#82#95#66#65#82#79#78#44#32#47#47#32#55#13#10#32#32#77+ + #79#78#83#84#69#82#95#75#78#73#71#72#84#44#32#47#47#32#56#13#10#32#32#77#79+ + #78#83#84#69#82#95#67#65#67#79#44#32#47#47#32#57#13#10#32#32#77#79#78#83#84+ + #69#82#95#83#79#85#76#44#32#47#47#32#49#48#13#10#32#32#77#79#78#83#84#69#82+ + #95#80#65#73#78#44#32#47#47#32#49#49#13#10#32#32#77#79#78#83#84#69#82#95#83+ + #80#73#68#69#82#44#32#47#47#32#49#50#13#10#32#32#77#79#78#83#84#69#82#95#66+ + #83#80#44#32#47#47#32#49#51#13#10#32#32#77#79#78#83#84#69#82#95#77#65#78#67+ + #85#66#44#32#47#47#32#49#52#13#10#32#32#77#79#78#83#84#69#82#95#83#75#69#76+ + #44#32#47#47#32#49#53#13#10#32#32#77#79#78#83#84#69#82#95#86#73#76#69#44#32+ + #47#47#32#49#54#13#10#32#32#77#79#78#83#84#69#82#95#70#73#83#72#44#32#47#47+ + #32#49#55#13#10#32#32#77#79#78#83#84#69#82#95#66#65#82#82#69#76#44#32#47#47+ + #32#49#56#13#10#32#32#77#79#78#83#84#69#82#95#82#79#66#79#44#32#47#47#32#49+ + #57#13#10#32#32#77#79#78#83#84#69#82#95#77#65#78#44#32#47#47#32#50#48#13#10+ + #32#32#47#47#32#97#108#105#97#115#101#115#32#40#102#105#120#109#101#58#32+ + #105#116#32#115#104#111#117#108#100#32#98#101#32#96#77#79#78#83#84#69#82#95+ + #90#79#77#66#73#69#32#61#32#77#79#78#83#84#69#82#95#90#79#77#66#89#96#33#41+ + #13#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#73#69#32#61#32#51#44#13#10+ + #125#13#10#13#10#101#110#117#109#32#77#111#110#115#116#101#114#66#101#104#97+ + #118#105#111#117#114#32#123#13#10#32#32#66#72#95#78#79#82#77#65#76#44#32#47+ + #47#32#48#13#10#32#32#66#72#95#75#73#76#76#69#82#44#32#47#47#32#49#13#10#32+ + #32#66#72#95#77#65#78#73#65#67#44#32#47#47#32#50#13#10#32#32#66#72#95#73#78+ + #83#65#78#69#44#32#47#47#32#51#13#10#32#32#66#72#95#67#65#78#78#73#66#65#76+ + #44#32#47#47#32#52#13#10#32#32#66#72#95#71#79#79#68#44#32#47#47#32#53#13#10+ + #125#13#10#13#10#101#110#117#109#32#84#114#105#103#103#101#114#83#104#111+ + #116#32#123#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#80#73#83#84+ + #79#76#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95+ + #66#85#76#76#69#84#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#83+ + #72#79#84#95#83#72#79#84#71#85#78#44#32#47#47#32#50#13#10#32#32#84#82#73#71+ + #71#69#82#95#83#72#79#84#95#83#83#71#44#32#47#47#32#51#13#10#32#32#84#82#73+ + #71#71#69#82#95#83#72#79#84#95#73#77#80#44#32#47#47#32#52#13#10#32#32#84#82+ + #73#71#71#69#82#95#83#72#79#84#95#80#76#65#83#77#65#44#32#47#47#32#53#13#10+ + #32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#83#80#73#68#69#82#44#32#47#47+ + #32#54#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#67#65#67#79#44#32+ + #47#47#32#55#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#66#65#82#79+ + #78#44#32#47#47#32#56#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#77+ + #65#78#67#85#66#44#32#47#47#32#57#13#10#32#32#84#82#73#71#71#69#82#95#83#72+ + #79#84#95#82#69#86#44#32#47#47#32#49#48#13#10#32#32#84#82#73#71#71#69#82#95+ + #83#72#79#84#95#82#79#67#75#69#84#44#32#47#47#32#49#49#13#10#32#32#84#82#73+ + #71#71#69#82#95#83#72#79#84#95#66#70#71#44#32#47#47#32#49#50#13#10#32#32#84+ + #82#73#71#71#69#82#95#83#72#79#84#95#69#88#80#76#44#32#47#47#32#49#51#13#10+ + #32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#66#70#71#69#88#80#76#44#32#47+ + #47#32#49#52#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#70#76#65#77+ + #69#44#32#47#47#32#49#53#13#10#32#32#47#47#13#10#32#32#84#82#73#71#71#69#82+ + #95#83#72#79#84#95#77#65#88#32#61#32#77#65#88#44#13#10#125#13#10#13#10#101+ + #110#117#109#32#84#114#105#103#103#101#114#83#104#111#116#84#97#114#103#101+ + #116#32#123#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71+ + #69#84#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95+ + #83#72#79#84#95#84#65#82#71#69#84#95#77#79#78#44#32#47#47#32#49#13#10#32#32+ + #84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#80#76#82#44#32+ + #47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71+ + #69#84#95#82#69#68#44#32#47#47#32#51#13#10#32#32#84#82#73#71#71#69#82#95#83+ + #72#79#84#95#84#65#82#71#69#84#95#66#76#85#69#44#32#47#47#32#52#13#10#32#32+ + #84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#77#79#78#80#76+ + #82#44#32#47#47#32#53#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84+ + #65#82#71#69#84#95#80#76#82#77#79#78#44#32#47#47#32#54#13#10#125#13#10#13#10+ + #101#110#117#109#32#84#114#105#103#103#101#114#83#104#111#116#65#105#109#32+ + #123#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#68#69#70+ + #65#85#76#84#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79+ + #84#95#65#73#77#95#65#76#76#77#65#80#44#32#47#47#32#49#13#10#32#32#84#82#73+ + #71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82#65#67#69#44#32#47#47#32#50+ + #13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82#65#67+ + #69#65#76#76#44#32#47#47#32#51#13#10#125#13#10#13#10#101#110#117#109#32#84+ + #114#105#103#103#101#114#69#102#102#101#99#116#32#123#13#10#32#32#84#82#73+ + #71#71#69#82#95#69#70#70#69#67#84#95#80#65#82#84#73#67#76#69#44#32#47#47#32+ + #48#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#65#78#73#77#65+ + #84#73#79#78#44#32#47#47#32#49#13#10#125#13#10#13#10#101#110#117#109#32#84+ + #114#105#103#103#101#114#69#102#102#101#99#116#84#121#112#101#32#123#13#10+ + #32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#83#76#73#81#85#73#68#44+ + #32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#76+ + #76#73#81#85#73#68#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#69+ + #70#70#69#67#84#95#68#76#73#81#85#73#68#44#32#47#47#32#50#13#10#32#32#84#82+ + #73#71#71#69#82#95#69#70#70#69#67#84#95#66#76#79#79#68#44#32#47#47#32#51#13+ + #10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#83#80#65#82#75#44#32+ + #47#47#32#52#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#66#85+ + #66#66#76#69#44#32#47#47#32#53#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70+ + #69#67#84#95#77#65#88#32#61#32#77#65#88#44#13#10#125#13#10#13#10#101#110#117+ + #109#32#84#114#105#103#103#101#114#69#102#102#101#99#116#80#111#115#32#123+ + #13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#80#79#83#95#67#69+ + #78#84#69#82#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70+ + #69#67#84#95#80#79#83#95#65#82#69#65#44#32#47#47#32#49#13#10#125#13#10#13#10+ + #101#110#117#109#32#84#114#105#103#103#101#114#77#117#115#105#99#65#99#116+ + #105#111#110#32#123#13#10#32#32#84#82#73#71#71#69#82#95#77#85#83#73#67#95#65+ + #67#84#73#79#78#95#83#84#79#80#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71+ + #69#82#95#77#85#83#73#67#95#65#67#84#73#79#78#95#80#76#65#89#44#32#47#47#32+ + #49#59#32#117#110#112#97#117#115#101#32#111#114#32#114#101#115#116#97#114+ + #116#13#10#125#13#10#13#10#101#110#117#109#32#84#114#105#103#103#101#114#83+ + #99#111#114#101#65#99#116#105#111#110#32#123#13#10#32#32#84#82#73#71#71#69+ + #82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#65#68#68#44#32#47#47#32#48#13+ + #10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#83+ + #85#66#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69+ + #95#65#67#84#73#79#78#95#87#73#78#44#32#47#47#32#50#13#10#32#32#84#82#73#71+ + #71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#76#79#79#83#69#44#32#47+ + #47#32#51#13#10#125#13#10#13#10#101#110#117#109#32#84#114#105#103#103#101+ + #114#77#101#115#115#97#103#101#68#101#115#116#32#123#13#10#32#32#84#82#73#71+ + #71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#77#69#44#32#47#47#32#48+ + #13#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95+ + #77#89#95#84#69#65#77#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95+ + #77#69#83#83#65#71#69#95#68#69#83#84#95#69#78#69#77#89#95#84#69#65#77#44#32+ + #47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#68+ + #69#83#84#95#82#69#68#95#84#69#65#77#44#32#47#47#32#51#13#10#32#32#84#82#73+ + #71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#66#76#85#69#95#84#69+ + #65#77#44#32#47#47#32#52#13#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65+ + #71#69#95#68#69#83#84#95#69#86#69#82#89#79#78#69#44#32#47#47#32#53#13#10#125+ + #13#10#13#10#101#110#117#109#32#84#114#105#103#103#101#114#77#101#115#115#97+ + #103#101#75#105#110#100#32#123#13#10#32#32#84#82#73#71#71#69#82#95#77#69#83+ + #83#65#71#69#95#75#73#78#68#95#67#72#65#84#44#32#47#47#32#48#13#10#32#32#84+ + #82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78#68#95#71#65#77#69#44+ + #32#47#47#32#49#13#10#125#13#10#13#10#98#105#116#115#101#116#32#65#99#116+ + #105#118#97#116#101#84#121#112#101#32#123#13#10#32#32#65#67#84#73#86#65#84+ + #69#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#65#67#84#73#86+ + #65#84#69#95#80#76#65#89#69#82#67#79#76#76#73#68#69#44#32#47#47#32#49#13#10+ #32#32#65#67#84#73#86#65#84#69#95#77#79#78#83#84#69#82#67#79#76#76#73#68#69+ - #44#32#47#47#32#50#10#32#32#65#67#84#73#86#65#84#69#95#80#76#65#89#69#82#80+ - #82#69#83#83#44#32#47#47#32#52#10#32#32#65#67#84#73#86#65#84#69#95#77#79#78+ - #83#84#69#82#80#82#69#83#83#44#32#47#47#32#56#10#32#32#65#67#84#73#86#65#84+ - #69#95#83#72#79#84#44#32#47#47#32#49#54#10#32#32#65#67#84#73#86#65#84#69#95+ - #78#79#77#79#78#83#84#69#82#44#32#47#47#32#51#50#10#32#32#65#67#84#73#86#65+ - #84#69#95#67#85#83#84#79#77#32#61#32#50#53#53#44#32#47#47#32#110#111#116#101+ - #32#116#104#97#116#32#34#100#105#114#101#99#116#32#97#115#115#105#103#110#34+ - #32#102#105#101#108#100#32#100#111#101#115#110#39#116#32#97#102#102#101#99+ - #116#32#98#105#116#32#99#111#117#110#116#101#114#10#125#10#10#98#105#116#115+ - #101#116#32#75#101#121#32#123#10#32#32#75#69#89#95#78#79#78#69#32#61#32#48+ - #44#32#47#47#32#48#10#32#32#75#69#89#95#82#69#68#44#32#47#47#32#49#10#32#32+ - #75#69#89#95#71#82#69#69#78#44#32#47#47#32#50#10#32#32#75#69#89#95#66#76#85+ - #69#44#32#47#47#32#52#10#32#32#75#69#89#95#82#69#68#84#69#65#77#44#32#47#47+ - #32#56#10#32#32#75#69#89#95#66#76#85#69#84#69#65#77#44#32#47#47#32#49#54#10+ - #125#10#10#101#110#117#109#32#72#105#116#84#121#112#101#32#123#10#32#32#72+ - #73#84#95#83#79#77#69#44#32#47#47#32#48#10#32#32#72#73#84#95#82#79#67#75#69+ - #84#44#32#47#47#32#49#10#32#32#72#73#84#95#66#70#71#44#32#47#47#32#50#10#32+ - #32#72#73#84#95#84#82#65#80#44#32#47#47#32#51#10#32#32#72#73#84#95#70#65#76+ - #76#44#32#47#47#32#52#10#32#32#72#73#84#95#87#65#84#69#82#44#32#47#47#32#53+ - #10#32#32#72#73#84#95#65#67#73#68#44#32#47#47#32#54#10#32#32#72#73#84#95#69+ - #76#69#67#84#82#79#44#32#47#47#32#55#10#32#32#72#73#84#95#70#76#65#77#69#44+ - #32#47#47#32#56#10#32#32#72#73#84#95#83#69#76#70#44#32#47#47#32#57#10#32#32+ - #72#73#84#95#68#73#83#67#79#78#44#32#47#47#32#49#48#10#125#10#10#10#47#47#47+ - #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ + #44#32#47#47#32#50#13#10#32#32#65#67#84#73#86#65#84#69#95#80#76#65#89#69#82+ + #80#82#69#83#83#44#32#47#47#32#52#13#10#32#32#65#67#84#73#86#65#84#69#95#77+ + #79#78#83#84#69#82#80#82#69#83#83#44#32#47#47#32#56#13#10#32#32#65#67#84#73+ + #86#65#84#69#95#83#72#79#84#44#32#47#47#32#49#54#13#10#32#32#65#67#84#73#86+ + #65#84#69#95#78#79#77#79#78#83#84#69#82#44#32#47#47#32#51#50#13#10#32#32#65+ + #67#84#73#86#65#84#69#95#67#85#83#84#79#77#32#61#32#50#53#53#44#32#47#47#32+ + #110#111#116#101#32#116#104#97#116#32#34#100#105#114#101#99#116#32#97#115+ + #115#105#103#110#34#32#102#105#101#108#100#32#100#111#101#115#110#39#116#32+ + #97#102#102#101#99#116#32#98#105#116#32#99#111#117#110#116#101#114#13#10#125+ + #13#10#13#10#98#105#116#115#101#116#32#75#101#121#32#123#13#10#32#32#75#69+ + #89#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#75#69#89#95#82+ + #69#68#44#32#47#47#32#49#13#10#32#32#75#69#89#95#71#82#69#69#78#44#32#47#47+ + #32#50#13#10#32#32#75#69#89#95#66#76#85#69#44#32#47#47#32#52#13#10#32#32#75+ + #69#89#95#82#69#68#84#69#65#77#44#32#47#47#32#56#13#10#32#32#75#69#89#95#66+ + #76#85#69#84#69#65#77#44#32#47#47#32#49#54#13#10#125#13#10#13#10#101#110#117+ + #109#32#72#105#116#84#121#112#101#32#123#13#10#32#32#72#73#84#95#83#79#77#69+ + #44#32#47#47#32#48#13#10#32#32#72#73#84#95#82#79#67#75#69#84#44#32#47#47#32+ + #49#13#10#32#32#72#73#84#95#66#70#71#44#32#47#47#32#50#13#10#32#32#72#73#84+ + #95#84#82#65#80#44#32#47#47#32#51#13#10#32#32#72#73#84#95#70#65#76#76#44#32+ + #47#47#32#52#13#10#32#32#72#73#84#95#87#65#84#69#82#44#32#47#47#32#53#13#10+ + #32#32#72#73#84#95#65#67#73#68#44#32#47#47#32#54#13#10#32#32#72#73#84#95#69+ + #76#69#67#84#82#79#44#32#47#47#32#55#13#10#32#32#72#73#84#95#70#76#65#77#69+ + #44#32#47#47#32#56#13#10#32#32#72#73#84#95#83#69#76#70#44#32#47#47#32#57#13+ + #10#32#32#72#73#84#95#68#73#83#67#79#78#44#32#47#47#32#49#48#13#10#125#13#10+ + #13#10#13#10#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+ - #47#47#10#47#47#32#118#97#114#105#111#117#115#32#116#114#105#103#103#101#114+ - #115#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73+ - #71#71#69#82#95#69#88#73#84#32#123#10#32#32#34#109#97#112#34#32#116#121#112+ - #101#32#99#104#97#114#91#49#54#93#32#111#102#102#115#101#116#32#48#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#59#10#125#10#10#84#114#105#103+ - #103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#84#69#76+ - #69#80#79#82#84#32#123#10#32#32#34#116#97#114#103#101#116#34#32#116#121#112+ - #101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#119#114#105+ - #116#101#100#101#102#97#117#108#116#59#10#32#32#34#100#50#100#34#32#116#121+ - #112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#56#32#100#101#102+ - #97#117#108#116#32#102#97#108#115#101#59#10#32#32#34#115#105#108#101#110#116+ - #34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#57#32+ - #100#101#102#97#117#108#116#32#102#97#108#115#101#59#10#32#32#34#100#105#114+ - #101#99#116#105#111#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111+ - #102#102#115#101#116#32#49#48#32#101#110#117#109#32#68#105#114#84#121#112+ - #101#32#100#101#102#97#117#108#116#32#68#73#82#95#76#69#70#84#59#10#125#10+ - #10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#40#84#82#73#71+ - #71#69#82#95#79#80#69#78#68#79#79#82#44#32#84#82#73#71#71#69#82#95#67#76#79+ - #83#69#68#79#79#82#44#32#84#82#73#71#71#69#82#95#68#79#79#82#44#32#84#82#73+ - #71#71#69#82#95#68#79#79#82#53#44#32#84#82#73#71#71#69#82#95#67#76#79#83#69+ - #84#82#65#80#44#32#84#82#73#71#71#69#82#95#84#82#65#80#44#32#84#82#73#71#71+ - #69#82#95#76#73#70#84#85#80#44#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79+ - #87#78#44#32#84#82#73#71#71#69#82#95#76#73#70#84#41#32#123#10#32#32#34#112+ - #97#110#101#108#105#100#34#32#116#121#112#101#32#105#110#116#32#111#102#102+ - #115#101#116#32#48#32#112#97#110#101#108#32#119#114#105#116#101#100#101#102+ - #97#117#108#116#59#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101+ - #32#98#111#111#108#32#111#102#102#115#101#116#32#52#32#100#101#102#97#117+ - #108#116#32#102#97#108#115#101#59#10#32#32#34#100#50#100#34#32#116#121#112+ - #101#32#98#111#111#108#32#111#102#102#115#101#116#32#53#32#100#101#102#97+ - #117#108#116#32#102#97#108#115#101#59#10#125#10#10#84#114#105#103#103#101+ + #47#47#47#47#47#47#47#47#47#13#10#47#47#32#118#97#114#105#111#117#115#32#116+ + #114#105#103#103#101#114#115#13#10#84#114#105#103#103#101#114#68#97#116#97+ + #32#102#111#114#32#84#82#73#71#71#69#82#95#69#88#73#84#32#123#13#10#32#32#34+ + #109#97#112#34#32#116#121#112#101#32#99#104#97#114#91#49#54#93#32#111#102+ + #102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ + #13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111+ + #114#32#84#82#73#71#71#69#82#95#84#69#76#69#80#79#82#84#32#123#13#10#32#32+ + #34#116#97#114#103#101#116#34#32#116#121#112#101#32#112#111#105#110#116#32+ + #111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108+ + #116#59#13#10#32#32#34#100#50#100#34#32#116#121#112#101#32#98#111#111#108#32+ + #111#102#102#115#101#116#32#56#32#100#101#102#97#117#108#116#32#102#97#108+ + #115#101#59#13#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32+ + #98#111#111#108#32#111#102#102#115#101#116#32#57#32#100#101#102#97#117#108+ + #116#32#102#97#108#115#101#59#13#10#32#32#34#100#105#114#101#99#116#105#111+ + #110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+ + #32#49#48#32#101#110#117#109#32#68#105#114#84#121#112#101#32#100#101#102#97+ + #117#108#116#32#68#73#82#95#76#69#70#84#59#13#10#125#13#10#13#10#84#114#105+ + #103#103#101#114#68#97#116#97#32#102#111#114#32#40#84#82#73#71#71#69#82#95+ + #79#80#69#78#68#79#79#82#44#32#84#82#73#71#71#69#82#95#67#76#79#83#69#68#79+ + #79#82#44#32#84#82#73#71#71#69#82#95#68#79#79#82#44#32#84#82#73#71#71#69#82+ + #95#68#79#79#82#53#44#32#84#82#73#71#71#69#82#95#67#76#79#83#69#84#82#65#80+ + #44#32#84#82#73#71#71#69#82#95#84#82#65#80#44#32#84#82#73#71#71#69#82#95#76+ + #73#70#84#85#80#44#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79#87#78#44#32+ + #84#82#73#71#71#69#82#95#76#73#70#84#41#32#123#13#10#32#32#34#112#97#110#101+ + #108#105#100#34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116+ + #32#48#32#112#97#110#101#108#32#119#114#105#116#101#100#101#102#97#117#108+ + #116#59#13#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32#98+ + #111#111#108#32#111#102#102#115#101#116#32#52#32#100#101#102#97#117#108#116+ + #32#102#97#108#115#101#59#13#10#32#32#34#100#50#100#34#32#116#121#112#101#32+ + #98#111#111#108#32#111#102#102#115#101#116#32#53#32#100#101#102#97#117#108+ + #116#32#102#97#108#115#101#59#13#10#125#13#10#13#10#84#114#105#103#103#101+ #114#68#97#116#97#32#102#111#114#32#40#84#82#73#71#71#69#82#95#80#82#69#83+ #83#44#32#84#82#73#71#71#69#82#95#79#78#44#32#84#82#73#71#71#69#82#95#79#70+ - #70#44#32#84#82#73#71#71#69#82#95#79#78#79#70#70#41#32#123#10#32#32#34#112+ - #111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32+ - #111#102#102#115#101#116#32#48#32#97#115#32#116#120#121#32#100#101#102#97+ - #117#108#116#32#40#48#32#48#41#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32#115#105#122#101+ - #32#111#102#102#115#101#116#32#56#32#97#115#32#116#119#104#32#100#101#102#97+ - #117#108#116#32#40#48#32#48#41#59#10#32#32#34#119#97#105#116#34#32#116#121+ - #112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49#50#32+ - #100#101#102#97#117#108#116#32#48#59#10#32#32#34#99#111#117#110#116#34#32#97+ - #108#105#97#115#32#112#114#101#115#115#67#111#117#110#116#32#116#121#112#101+ - #32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49#52#32#100#101+ - #102#97#117#108#116#32#48#59#10#32#32#34#109#111#110#115#116#101#114#105#100+ - #34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116#32#49#54#32+ - #109#111#110#115#116#101#114#32#97#115#32#109#111#110#115#116#101#114#105+ - #100#32#100#101#102#97#117#108#116#32#110#117#108#108#59#10#32#32#34#101#120+ - #116#95#114#97#110#100#111#109#34#32#116#121#112#101#32#98#111#111#108#32+ - #111#102#102#115#101#116#32#50#48#32#100#101#102#97#117#108#116#32#102#97+ - #108#115#101#59#10#32#32#47#47#32#116#104#105#115#32#111#110#101#32#105#115+ - #32#102#111#114#32#109#111#118#105#110#103#32#112#108#97#116#102#111#114#109+ - #115#10#32#32#34#112#97#110#101#108#105#100#34#32#112#97#110#101#108#32#100+ - #101#102#97#117#108#116#32#110#117#108#108#59#10#32#32#34#115#105#108#101+ - #110#116#34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108+ - #116#32#116#114#117#101#59#10#32#32#34#115#111#117#110#100#34#32#116#121#112+ - #101#32#115#116#114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#59#10+ - #125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#83#99#111#114#101+ - #84#101#97#109#32#123#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84+ - #69#65#77#95#77#73#78#69#95#82#69#68#44#32#47#47#32#48#10#32#32#84#82#73#71+ - #71#69#82#95#83#67#79#82#69#95#84#69#65#77#95#77#73#78#69#95#66#76#85#69#44+ - #32#47#47#32#49#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84#69#65+ - #77#95#70#79#82#67#69#95#82#69#68#44#32#47#47#32#50#10#32#32#84#82#73#71#71+ - #69#82#95#83#67#79#82#69#95#84#69#65#77#95#70#79#82#67#69#95#66#76#85#69#44+ - #32#47#47#32#51#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102+ - #111#114#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#32#123#10#125#10#10#84+ - #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+ - #95#84#69#88#84#85#82#69#32#123#10#32#32#34#97#99#116#105#118#97#116#101#95+ - #111#110#99#101#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115+ - #101#116#32#48#32#100#101#102#97#117#108#116#32#102#97#108#115#101#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#97#110#105#109#97+ + #70#44#32#84#82#73#71#71#69#82#95#79#78#79#70#70#41#32#123#13#10#32#32#34+ + #112#111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110+ + #116#32#111#102#102#115#101#116#32#48#32#97#115#32#116#120#121#32#100#101+ + #102#97#117#108#116#32#40#48#32#48#41#32#119#114#105#116#101#100#101#102#97+ + #117#108#116#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32#115+ + #105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#116#119#104#32+ + #100#101#102#97#117#108#116#32#40#48#32#48#41#59#13#10#32#32#34#119#97#105+ + #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+ + #116#32#49#50#32#100#101#102#97#117#108#116#32#48#59#13#10#32#32#34#99#111+ + #117#110#116#34#32#97#108#105#97#115#32#112#114#101#115#115#67#111#117#110+ + #116#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+ + #116#32#49#52#32#100#101#102#97#117#108#116#32#48#59#13#10#32#32#34#109#111+ + #110#115#116#101#114#105#100#34#32#116#121#112#101#32#105#110#116#32#111#102+ + #102#115#101#116#32#49#54#32#109#111#110#115#116#101#114#32#97#115#32#109+ + #111#110#115#116#101#114#105#100#32#100#101#102#97#117#108#116#32#110#117+ + #108#108#59#13#10#32#32#34#101#120#116#95#114#97#110#100#111#109#34#32#116+ + #121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#50#48#32#100+ + #101#102#97#117#108#116#32#102#97#108#115#101#59#13#10#32#32#47#47#32#116+ + #104#105#115#32#111#110#101#32#105#115#32#102#111#114#32#109#111#118#105#110+ + #103#32#112#108#97#116#102#111#114#109#115#13#10#32#32#34#112#97#110#101#108+ + #105#100#34#32#112#97#110#101#108#32#100#101#102#97#117#108#116#32#110#117+ + #108#108#59#13#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32+ + #98#111#111#108#32#100#101#102#97#117#108#116#32#116#114#117#101#59#13#10#32+ + #32#34#115#111#117#110#100#34#32#116#121#112#101#32#115#116#114#105#110#103+ + #32#100#101#102#97#117#108#116#32#34#34#59#13#10#125#13#10#13#10#101#110#117+ + #109#32#84#114#105#103#103#101#114#83#99#111#114#101#84#101#97#109#32#123#13+ + #10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84#69#65#77#95#77#73#78+ + #69#95#82#69#68#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#83#67+ + #79#82#69#95#84#69#65#77#95#77#73#78#69#95#66#76#85#69#44#32#47#47#32#49#13+ + #10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84#69#65#77#95#70#79#82+ + #67#69#95#82#69#68#44#32#47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#83+ + #67#79#82#69#95#84#69#65#77#95#70#79#82#67#69#95#66#76#85#69#44#32#47#47#32+ + #51#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111+ + #114#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#32#123#13#10#125#13#10#13+ + #10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71+ + #69#82#95#84#69#88#84#85#82#69#32#123#13#10#32#32#34#97#99#116#105#118#97+ #116#101#95#111#110#99#101#34#32#116#121#112#101#32#98#111#111#108#32#111+ - #102#102#115#101#116#32#49#32#100#101#102#97#117#108#116#32#102#97#108#115+ - #101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#125#10#10#84+ - #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+ - #95#83#79#85#78#68#32#123#10#32#32#34#115#111#117#110#100#95#110#97#109#101+ - #34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115#101+ - #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #118#111#108#117#109#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111+ - #102#102#115#101#116#32#54#52#32#100#101#102#97#117#108#116#32#48#32#119#114+ - #105#116#101#100#101#102#97#117#108#116#59#32#47#47#63#63#63#32#100#101#102+ - #97#117#108#116#32#63#63#63#10#32#32#34#112#97#110#34#32#116#121#112#101#32+ - #117#98#121#116#101#32#111#102#102#115#101#116#32#54#53#32#100#101#102#97+ - #117#108#116#32#48#59#10#32#32#34#108#111#99#97#108#34#32#116#121#112#101#32+ - #98#111#111#108#32#111#102#102#115#101#116#32#54#54#32#100#101#102#97#117+ - #108#116#32#116#114#117#101#59#32#47#47#63#63#63#32#100#101#102#97#117#108+ - #116#32#63#63#63#10#32#32#34#112#108#97#121#95#99#111#117#110#116#34#32#116+ - #121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#54#55#32+ - #100#101#102#97#117#108#116#32#49#59#10#32#32#34#115#111#117#110#100#95#115+ - #119#105#116#99#104#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102+ - #115#101#116#32#54#56#32#100#101#102#97#117#108#116#32#102#97#108#115#101#59+ - #32#47#47#63#63#63#32#100#101#102#97#117#108#116#32#63#63#63#10#125#10#10#84+ - #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+ - #95#83#80#65#87#78#77#79#78#83#84#69#82#32#123#10#32#32#34#112#111#115#105+ - #116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102+ - #115#101#116#32#48#32#97#115#32#116#120#121#32#119#114#105#116#101#100#101+ - #102#97#117#108#116#59#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115+ - #32#115#112#97#119#110#77#111#110#115#84#121#112#101#32#116#121#112#101#32+ - #117#98#121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109#32+ - #77#111#110#115#116#101#114#32#100#101#102#97#117#108#116#32#77#79#78#83#84+ - #69#82#95#73#77#80#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10+ - #32#32#34#104#101#97#108#116#104#34#32#116#121#112#101#32#105#110#116#32#111+ - #102#102#115#101#116#32#49#50#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#100#105#114#101#99#116#105#111#110#34#32#116#121#112#101+ - #32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#54#32#101#110#117+ - #109#32#68#105#114#84#121#112#101#32#100#101#102#97#117#108#116#32#68#73#82+ - #95#76#69#70#84#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32+ - #32#34#97#99#116#105#118#101#34#32#116#121#112#101#32#98#111#111#108#32#111+ - #102#102#115#101#116#32#49#55#32#100#101#102#97#117#108#116#32#116#114#117+ - #101#59#10#32#32#34#99#111#117#110#116#34#32#97#108#105#97#115#32#109#111+ - #110#115#67#111#117#110#116#32#116#121#112#101#32#105#110#116#32#111#102#102+ - #115#101#116#32#50#48#32#100#101#102#97#117#108#116#32#49#32#119#114#105#116+ - #101#100#101#102#97#117#108#116#59#10#32#32#34#101#102#102#101#99#116#34#32+ - #116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#50#52+ - #32#101#110#117#109#32#69#102#102#101#99#116#65#99#116#105#111#110#32#100+ - #101#102#97#117#108#116#32#69#70#70#69#67#84#95#78#79#78#69#32#119#114#105+ - #116#101#100#101#102#97#117#108#116#59#10#32#32#34#109#97#120#34#32#116#121+ + #102#102#115#101#116#32#48#32#100#101#102#97#117#108#116#32#102#97#108#115+ + #101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#97+ + #110#105#109#97#116#101#95#111#110#99#101#34#32#116#121#112#101#32#98#111+ + #111#108#32#111#102#102#115#101#116#32#49#32#100#101#102#97#117#108#116#32+ + #102#97#108#115#101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114+ + #32#84#82#73#71#71#69#82#95#83#79#85#78#68#32#123#13#10#32#32#34#115#111#117+ + #110#100#95#110#97#109#101#34#32#116#121#112#101#32#99#104#97#114#91#54#52+ + #93#32#111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97+ + #117#108#116#59#13#10#32#32#34#118#111#108#117#109#101#34#32#116#121#112#101+ + #32#117#98#121#116#101#32#111#102#102#115#101#116#32#54#52#32#100#101#102#97+ + #117#108#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#32+ + #47#47#63#63#63#32#100#101#102#97#117#108#116#32#63#63#63#13#10#32#32#34#112+ + #97#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+ + #116#32#54#53#32#100#101#102#97#117#108#116#32#48#59#13#10#32#32#34#108#111+ + #99#97#108#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101+ + #116#32#54#54#32#100#101#102#97#117#108#116#32#116#114#117#101#59#32#47#47+ + #63#63#63#32#100#101#102#97#117#108#116#32#63#63#63#13#10#32#32#34#112#108+ + #97#121#95#99#111#117#110#116#34#32#116#121#112#101#32#117#98#121#116#101#32+ + #111#102#102#115#101#116#32#54#55#32#100#101#102#97#117#108#116#32#49#59#13+ + #10#32#32#34#115#111#117#110#100#95#115#119#105#116#99#104#34#32#116#121#112+ + #101#32#98#111#111#108#32#111#102#102#115#101#116#32#54#56#32#100#101#102#97+ + #117#108#116#32#102#97#108#115#101#59#32#47#47#63#63#63#32#100#101#102#97+ + #117#108#116#32#63#63#63#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68+ + #97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#80#65#87#78#77#79#78+ + #83#84#69#82#32#123#13#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116+ + #121#112#101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97+ + #115#32#116#120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#115#112#97#119#110+ + #77#111#110#115#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32+ + #111#102#102#115#101#116#32#56#32#101#110#117#109#32#77#111#110#115#116#101+ + #114#32#100#101#102#97#117#108#116#32#77#79#78#83#84#69#82#95#73#77#80#32+ + #119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#104#101#97+ + #108#116#104#34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116+ + #32#49#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32+ + #34#100#105#114#101#99#116#105#111#110#34#32#116#121#112#101#32#117#98#121+ + #116#101#32#111#102#102#115#101#116#32#49#54#32#101#110#117#109#32#68#105+ + #114#84#121#112#101#32#100#101#102#97#117#108#116#32#68#73#82#95#76#69#70#84+ + #32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#97#99+ + #116#105#118#101#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115+ + #101#116#32#49#55#32#100#101#102#97#117#108#116#32#116#114#117#101#59#13#10+ + #32#32#34#99#111#117#110#116#34#32#97#108#105#97#115#32#109#111#110#115#67+ + #111#117#110#116#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101+ + #116#32#50#48#32#100#101#102#97#117#108#116#32#49#32#119#114#105#116#101#100+ + #101#102#97#117#108#116#59#13#10#32#32#34#101#102#102#101#99#116#34#32#116+ + #121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#50#52#32+ + #101#110#117#109#32#69#102#102#101#99#116#65#99#116#105#111#110#32#100#101+ + #102#97#117#108#116#32#69#70#70#69#67#84#95#78#79#78#69#32#119#114#105#116+ + #101#100#101#102#97#117#108#116#59#13#10#32#32#34#109#97#120#34#32#116#121+ #112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#50#54#32+ #100#101#102#97#117#108#116#32#49#32#119#114#105#116#101#100#101#102#97#117+ - #108#116#59#10#32#32#34#100#101#108#97#121#34#32#116#121#112#101#32#117#115+ - #104#111#114#116#32#111#102#102#115#101#116#32#50#56#32#100#101#102#97#117+ - #108#116#32#49#48#48#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ - #10#32#32#34#98#101#104#97#118#105#111#117#114#34#32#116#121#112#101#32#117+ - #98#121#116#101#32#111#102#102#115#101#116#32#51#48#32#101#110#117#109#32#77+ - #111#110#115#116#101#114#66#101#104#97#118#105#111#117#114#32#100#101#102#97+ - #117#108#116#32#66#72#95#78#79#82#77#65#76#59#10#125#10#10#84#114#105#103+ - #103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#80#65+ - #87#78#73#84#69#77#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32+ - #116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32+ - #97#115#32#116#120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ - #10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#115#112#97#119#110+ - #73#116#101#109#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32+ - #111#102#102#115#101#116#32#56#32#101#110#117#109#32#73#116#101#109#32#100+ - #101#102#97#117#108#116#32#73#84#69#77#95#78#79#78#69#32#119#114#105#116#101+ - #100#101#102#97#117#108#116#59#10#32#32#34#103#114#97#118#105#116#121#34#32+ - #116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#57#32#100+ - #101#102#97#117#108#116#32#116#114#117#101#59#10#32#32#34#100#109#111#110+ - #108#121#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116+ - #32#49#48#32#100#101#102#97#117#108#116#32#102#97#108#115#101#59#10#32#32#34+ - #99#111#117#110#116#34#32#97#108#105#97#115#32#105#116#101#109#67#111#117+ - #110#116#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116#32#49+ - #50#32#100#101#102#97#117#108#116#32#49#59#10#32#32#34#101#102#102#101#99+ - #116#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+ - #32#49#54#32#101#110#117#109#32#69#102#102#101#99#116#65#99#116#105#111#110+ - #32#100#101#102#97#117#108#116#32#69#70#70#69#67#84#95#78#79#78#69#32#119+ - #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#109#97#120#34#32+ - #116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49+ - #56#32#100#101#102#97#117#108#116#32#49#59#10#32#32#34#100#101#108#97#121#34+ - #32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32+ - #50#48#32#100#101#102#97#117#108#116#32#49#48#48#48#32#119#114#105#116#101+ - #100#101#102#97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97+ - #116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#77#85#83#73#67#32#123#10+ - #32#32#34#110#97#109#101#34#32#97#108#105#97#115#32#109#117#115#105#99#78#97+ - #109#101#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115+ - #101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32+ - #34#97#99#116#105#111#110#34#32#97#108#105#97#115#32#109#117#115#105#99#65+ - #99#116#105#111#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ - #115#101#116#32#54#52#32#101#110#117#109#32#84#114#105#103#103#101#114#77+ - #117#115#105#99#65#99#116#105#111#110#32#119#114#105#116#101#100#101#102#97+ - #117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102+ - #111#114#32#84#82#73#71#71#69#82#95#80#85#83#72#32#123#10#32#32#34#97#110+ + #108#116#59#13#10#32#32#34#100#101#108#97#121#34#32#116#121#112#101#32#117+ + #115#104#111#114#116#32#111#102#102#115#101#116#32#50#56#32#100#101#102#97+ + #117#108#116#32#49#48#48#48#32#119#114#105#116#101#100#101#102#97#117#108+ + #116#59#13#10#32#32#34#98#101#104#97#118#105#111#117#114#34#32#116#121#112+ + #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#51#48#32#101#110+ + #117#109#32#77#111#110#115#116#101#114#66#101#104#97#118#105#111#117#114#32+ + #100#101#102#97#117#108#116#32#66#72#95#78#79#82#77#65#76#59#13#10#125#13#10+ + #13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71+ + #71#69#82#95#83#80#65#87#78#73#84#69#77#32#123#13#10#32#32#34#112#111#115+ + #105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102+ + #102#115#101#116#32#48#32#97#115#32#116#120#121#32#119#114#105#116#101#100+ + #101#102#97#117#108#116#59#13#10#32#32#34#116#121#112#101#34#32#97#108#105+ + #97#115#32#115#112#97#119#110#73#116#101#109#84#121#112#101#32#116#121#112+ + #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117+ + #109#32#73#116#101#109#32#100#101#102#97#117#108#116#32#73#84#69#77#95#78#79+ + #78#69#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34+ + #103#114#97#118#105#116#121#34#32#116#121#112#101#32#98#111#111#108#32#111+ + #102#102#115#101#116#32#57#32#100#101#102#97#117#108#116#32#116#114#117#101+ + #59#13#10#32#32#34#100#109#111#110#108#121#34#32#116#121#112#101#32#98#111+ + #111#108#32#111#102#102#115#101#116#32#49#48#32#100#101#102#97#117#108#116+ + #32#102#97#108#115#101#59#13#10#32#32#34#99#111#117#110#116#34#32#97#108#105+ + #97#115#32#105#116#101#109#67#111#117#110#116#32#116#121#112#101#32#105#110+ + #116#32#111#102#102#115#101#116#32#49#50#32#100#101#102#97#117#108#116#32#49+ + #59#13#10#32#32#34#101#102#102#101#99#116#34#32#116#121#112#101#32#117#98+ + #121#116#101#32#111#102#102#115#101#116#32#49#54#32#101#110#117#109#32#69+ + #102#102#101#99#116#65#99#116#105#111#110#32#100#101#102#97#117#108#116#32+ + #69#70#70#69#67#84#95#78#79#78#69#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#32#32#34#109#97#120#34#32#116#121#112#101#32#117#115#104+ + #111#114#116#32#111#102#102#115#101#116#32#49#56#32#100#101#102#97#117#108+ + #116#32#49#59#13#10#32#32#34#100#101#108#97#121#34#32#116#121#112#101#32#117+ + #115#104#111#114#116#32#111#102#102#115#101#116#32#50#48#32#100#101#102#97+ + #117#108#116#32#49#48#48#48#32#119#114#105#116#101#100#101#102#97#117#108+ + #116#59#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102+ + #111#114#32#84#82#73#71#71#69#82#95#77#85#83#73#67#32#123#13#10#32#32#34#110+ + #97#109#101#34#32#97#108#105#97#115#32#109#117#115#105#99#78#97#109#101#32+ + #116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115#101#116#32+ + #48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#97+ + #99#116#105#111#110#34#32#97#108#105#97#115#32#109#117#115#105#99#65#99#116+ + #105#111#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+ + #116#32#54#52#32#101#110#117#109#32#84#114#105#103#103#101#114#77#117#115+ + #105#99#65#99#116#105#111#110#32#119#114#105#116#101#100#101#102#97#117#108+ + #116#59#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102+ + #111#114#32#84#82#73#71#71#69#82#95#80#85#83#72#32#123#13#10#32#32#34#97#110+ #103#108#101#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102+ - #115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10+ - #32#32#34#102#111#114#99#101#34#32#116#121#112#101#32#117#98#121#116#101#32+ - #111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#114#101#115#101#116#95#118#101#108#111#99#105#116#121#34+ - #32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#51#32+ - #100#101#102#97#117#108#116#32#102#97#108#115#101#32#119#114#105#116#101#100+ - #101#102#97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116+ - #97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#67#79#82#69#32#123#10#32#32+ - #34#97#99#116#105#111#110#34#32#97#108#105#97#115#32#115#99#111#114#101#65+ - #99#116#105#111#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ - #115#101#116#32#48#32#101#110#117#109#32#84#114#105#103#103#101#114#83#99+ - #111#114#101#65#99#116#105#111#110#32#100#101#102#97#117#108#116#32#84#82#73+ - #71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#65#68#68#32#119#114+ - #105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#99#111#117#110#116#34+ - #32#97#108#105#97#115#32#115#99#111#114#101#67#111#117#110#116#32#116#121+ - #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#32#100#101+ - #102#97#117#108#116#32#49#32#119#114#105#116#101#100#101#102#97#117#108#116+ - #59#10#32#32#34#116#101#97#109#34#32#97#108#105#97#115#32#115#99#111#114#101+ - #84#101#97#109#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115+ - #101#116#32#50#32#101#110#117#109#32#84#114#105#103#103#101#114#83#99#111+ - #114#101#84#101#97#109#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ - #10#32#32#34#99#111#110#115#111#108#101#34#32#97#108#105#97#115#32#115#99+ - #111#114#101#67#111#110#32#116#121#112#101#32#98#111#111#108#32#111#102#102+ - #115#101#116#32#51#32#100#101#102#97#117#108#116#32#102#97#108#115#101#32+ - #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#109#101#115+ - #115#97#103#101#34#32#97#108#105#97#115#32#115#99#111#114#101#77#115#103#32+ - #116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#52#32#100+ - #101#102#97#117#108#116#32#116#114#117#101#32#119#114#105#116#101#100#101+ - #102#97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97+ - #32#102#111#114#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#32#123#10#32+ - #32#34#107#105#110#100#34#32#116#121#112#101#32#117#98#121#116#101#32#111+ - #102#102#115#101#116#32#48#32#101#110#117#109#32#84#114#105#103#103#101#114+ - #77#101#115#115#97#103#101#75#105#110#100#32#100#101#102#97#117#108#116#32+ - #84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78#68#95#71#65#77#69+ - #32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#100#101+ - #115#116#34#32#97#108#105#97#115#32#109#115#103#68#101#115#116#32#116#121+ - #112#101#32#117#98#121#116#101#32#101#110#117#109#32#84#114#105#103#103#101+ - #114#77#101#115#115#97#103#101#68#101#115#116#32#111#102#102#115#101#116#32+ - #49#59#10#32#32#34#116#101#120#116#34#32#116#121#112#101#32#99#104#97#114#91+ - #49#48#48#93#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101+ - #102#97#117#108#116#59#10#32#32#34#116#105#109#101#34#32#97#108#105#97#115+ - #32#109#115#103#84#105#109#101#32#116#121#112#101#32#117#115#104#111#114#116+ - #32#111#102#102#115#101#116#32#49#48#50#32#119#114#105#116#101#100#101#102+ - #97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32+ - #102#111#114#32#84#82#73#71#71#69#82#95#68#65#77#65#71#69#32#123#10#32#32#34+ - #97#109#111#117#110#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32+ - #111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#105#110#116#101#114#118#97#108#34#32#116#121#112#101#32+ - #117#115#104#111#114#116#32#111#102#102#115#101#116#32#50#32#119#114#105#116+ - #101#100#101#102#97#117#108#116#59#10#32#32#34#107#105#110#100#34#32#116#121+ - #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#52#32#101#110+ - #117#109#32#72#105#116#84#121#112#101#32#100#101#102#97#117#108#116#32#72#73+ - #84#95#83#79#77#69#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10+ - #125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82+ - #73#71#71#69#82#95#72#69#65#76#84#72#32#123#10#32#32#34#97#109#111#117#110+ + #115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#32#32#34#102#111#114#99#101#34#32#116#121#112#101#32#117#98#121#116#101+ + #32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#32#32#34#114#101#115#101#116#95#118#101#108#111#99#105#116+ + #121#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32+ + #51#32#100#101#102#97#117#108#116#32#102#97#108#115#101#32#119#114#105#116+ + #101#100#101#102#97#117#108#116#59#13#10#125#13#10#13#10#84#114#105#103#103+ + #101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#67#79#82+ + #69#32#123#13#10#32#32#34#97#99#116#105#111#110#34#32#97#108#105#97#115#32+ + #115#99#111#114#101#65#99#116#105#111#110#32#116#121#112#101#32#117#98#121+ + #116#101#32#111#102#102#115#101#116#32#48#32#101#110#117#109#32#84#114#105+ + #103#103#101#114#83#99#111#114#101#65#99#116#105#111#110#32#100#101#102#97+ + #117#108#116#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78+ + #95#65#68#68#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32+ + #32#34#99#111#117#110#116#34#32#97#108#105#97#115#32#115#99#111#114#101#67+ + #111#117#110#116#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115+ + #101#116#32#49#32#100#101#102#97#117#108#116#32#49#32#119#114#105#116#101+ + #100#101#102#97#117#108#116#59#13#10#32#32#34#116#101#97#109#34#32#97#108+ + #105#97#115#32#115#99#111#114#101#84#101#97#109#32#116#121#112#101#32#117#98+ + #121#116#101#32#111#102#102#115#101#116#32#50#32#101#110#117#109#32#84#114+ + #105#103#103#101#114#83#99#111#114#101#84#101#97#109#32#119#114#105#116#101+ + #100#101#102#97#117#108#116#59#13#10#32#32#34#99#111#110#115#111#108#101#34+ + #32#97#108#105#97#115#32#115#99#111#114#101#67#111#110#32#116#121#112#101#32+ + #98#111#111#108#32#111#102#102#115#101#116#32#51#32#100#101#102#97#117#108+ + #116#32#102#97#108#115#101#32#119#114#105#116#101#100#101#102#97#117#108#116+ + #59#13#10#32#32#34#109#101#115#115#97#103#101#34#32#97#108#105#97#115#32#115+ + #99#111#114#101#77#115#103#32#116#121#112#101#32#98#111#111#108#32#111#102+ + #102#115#101#116#32#52#32#100#101#102#97#117#108#116#32#116#114#117#101#32+ + #119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#125#13#10#13#10#84+ + #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+ + #95#77#69#83#83#65#71#69#32#123#13#10#32#32#34#107#105#110#100#34#32#116#121+ + #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#48#32#101#110+ + #117#109#32#84#114#105#103#103#101#114#77#101#115#115#97#103#101#75#105#110+ + #100#32#100#101#102#97#117#108#116#32#84#82#73#71#71#69#82#95#77#69#83#83#65+ + #71#69#95#75#73#78#68#95#71#65#77#69#32#119#114#105#116#101#100#101#102#97+ + #117#108#116#59#13#10#32#32#34#100#101#115#116#34#32#97#108#105#97#115#32+ + #109#115#103#68#101#115#116#32#116#121#112#101#32#117#98#121#116#101#32#101+ + #110#117#109#32#84#114#105#103#103#101#114#77#101#115#115#97#103#101#68#101+ + #115#116#32#111#102#102#115#101#116#32#49#59#13#10#32#32#34#116#101#120#116+ + #34#32#116#121#112#101#32#99#104#97#114#91#49#48#48#93#32#111#102#102#115+ + #101#116#32#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32+ + #32#34#116#105#109#101#34#32#97#108#105#97#115#32#109#115#103#84#105#109#101+ + #32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32+ + #49#48#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#125#13+ + #10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73+ + #71#71#69#82#95#68#65#77#65#71#69#32#123#13#10#32#32#34#97#109#111#117#110+ #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+ - #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #105#110#116#101#114#118#97#108#34#32#116#121#112#101#32#117#115#104#111#114+ - #116#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102#97+ - #117#108#116#59#10#32#32#34#109#97#120#34#32#97#108#105#97#115#32#104#101#97+ - #108#77#97#120#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101+ - #116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #115#105#108#101#110#116#34#32#116#121#112#101#32#98#111#111#108#32#111#102+ - #102#115#101#116#32#53#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ - #10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84+ - #82#73#71#71#69#82#95#83#72#79#84#32#123#10#32#32#34#112#111#115#105#116#105+ - #111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101+ - #116#32#48#32#97#115#32#116#120#121#32#119#114#105#116#101#100#101#102#97+ - #117#108#116#59#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#115+ - #104#111#116#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32#111+ - #102#102#115#101#116#32#56#32#101#110#117#109#32#84#114#105#103#103#101#114+ - #83#104#111#116#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32+ - #32#34#116#97#114#103#101#116#34#32#97#108#105#97#115#32#115#104#111#116#84+ - #97#114#103#101#116#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+ - #115#101#116#32#57#32#101#110#117#109#32#84#114#105#103#103#101#114#83#104+ - #111#116#84#97#114#103#101#116#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#115#111#117#110#100#34#32#97#108#105#97#115#32#115#104+ - #111#116#83#111#117#110#100#32#116#121#112#101#32#110#101#103#98#111#111#108+ - #32#111#102#102#115#101#116#32#49#48#59#32#47#47#32#110#101#103#98#111#111+ - #108#33#10#32#32#34#97#105#109#34#32#116#121#112#101#32#98#121#116#101#32+ - #111#102#102#115#101#116#32#49#49#32#101#110#117#109#32#84#114#105#103#103+ - #101#114#83#104#111#116#65#105#109#32#100#101#102#97#117#108#116#32#84#82#73+ - #71#71#69#82#95#83#72#79#84#95#65#73#77#95#68#69#70#65#85#76#84#59#10#32#32+ - #34#112#97#110#101#108#105#100#34#32#116#121#112#101#32#105#110#116#32#111+ - #102#102#115#101#116#32#49#50#32#112#97#110#101#108#32#100#101#102#97#117+ - #108#116#32#110#117#108#108#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#115#105#103#104#116#34#32#116#121#112#101#32#117#115#104+ - #111#114#116#32#111#102#102#115#101#116#32#49#54#59#10#32#32#34#97#110#103+ - #108#101#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115+ - #101#116#32#49#56#59#10#32#32#34#119#97#105#116#34#32#116#121#112#101#32#117+ - #115#104#111#114#116#32#111#102#102#115#101#116#32#50#48#59#10#32#32#34#97+ - #99#99#117#114#97#99#121#34#32#116#121#112#101#32#117#115#104#111#114#116#32+ - #111#102#102#115#101#116#32#50#50#59#10#32#32#34#97#109#109#111#34#32#116+ - #121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#50#52+ - #59#10#32#32#34#114#101#108#111#97#100#34#32#116#121#112#101#32#117#115#104+ - #111#114#116#32#111#102#102#115#101#116#32#50#54#59#10#125#10#10#84#114#105+ - #103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#69+ - #70#70#69#67#84#32#123#10#32#32#34#99#111#117#110#116#34#32#97#108#105#97+ - #115#32#70#88#67#111#117#110#116#32#116#121#112#101#32#117#98#121#116#101#32+ - #111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#70#88#84#121+ + #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32+ + #34#105#110#116#101#114#118#97#108#34#32#116#121#112#101#32#117#115#104#111+ + #114#116#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102+ + #97#117#108#116#59#13#10#32#32#34#107#105#110#100#34#32#116#121#112#101#32+ + #117#98#121#116#101#32#111#102#102#115#101#116#32#52#32#101#110#117#109#32+ + #72#105#116#84#121#112#101#32#100#101#102#97#117#108#116#32#72#73#84#95#83+ + #79#77#69#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#125#13+ + #10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73+ + #71#71#69#82#95#72#69#65#76#84#72#32#123#13#10#32#32#34#97#109#111#117#110+ + #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+ + #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32+ + #34#105#110#116#101#114#118#97#108#34#32#116#121#112#101#32#117#115#104#111+ + #114#116#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102+ + #97#117#108#116#59#13#10#32#32#34#109#97#120#34#32#97#108#105#97#115#32#104+ + #101#97#108#77#97#120#32#116#121#112#101#32#98#111#111#108#32#111#102#102+ + #115#101#116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32#98#111#111#108+ + #32#111#102#102#115#101#116#32#53#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32+ + #102#111#114#32#84#82#73#71#71#69#82#95#83#72#79#84#32#123#13#10#32#32#34+ + #112#111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110+ + #116#32#111#102#102#115#101#116#32#48#32#97#115#32#116#120#121#32#119#114+ + #105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#116#121#112#101#34+ + #32#97#108#105#97#115#32#115#104#111#116#84#121#112#101#32#116#121#112#101+ + #32#117#98#121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109+ + #32#84#114#105#103#103#101#114#83#104#111#116#32#119#114#105#116#101#100#101+ + #102#97#117#108#116#59#13#10#32#32#34#116#97#114#103#101#116#34#32#97#108+ + #105#97#115#32#115#104#111#116#84#97#114#103#101#116#32#116#121#112#101#32+ + #117#98#121#116#101#32#111#102#102#115#101#116#32#57#32#101#110#117#109#32+ + #84#114#105#103#103#101#114#83#104#111#116#84#97#114#103#101#116#32#119#114+ + #105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#111#117#110+ + #100#34#32#97#108#105#97#115#32#115#104#111#116#83#111#117#110#100#32#116+ + #121#112#101#32#110#101#103#98#111#111#108#32#111#102#102#115#101#116#32#49+ + #48#59#32#47#47#32#110#101#103#98#111#111#108#33#13#10#32#32#34#97#105#109+ + #34#32#116#121#112#101#32#98#121#116#101#32#111#102#102#115#101#116#32#49#49+ + #32#101#110#117#109#32#84#114#105#103#103#101#114#83#104#111#116#65#105#109+ + #32#100#101#102#97#117#108#116#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65+ + #73#77#95#68#69#70#65#85#76#84#59#13#10#32#32#34#112#97#110#101#108#105#100+ + #34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116#32#49#50#32+ + #112#97#110#101#108#32#100#101#102#97#117#108#116#32#110#117#108#108#32#119+ + #114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#105#103+ + #104#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115+ + #101#116#32#49#54#59#13#10#32#32#34#97#110#103#108#101#34#32#116#121#112#101+ + #32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49#56#59#13#10#32+ + #32#34#119#97#105#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32+ + #111#102#102#115#101#116#32#50#48#59#13#10#32#32#34#97#99#99#117#114#97#99+ + #121#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+ + #116#32#50#50#59#13#10#32#32#34#97#109#109#111#34#32#116#121#112#101#32#117+ + #115#104#111#114#116#32#111#102#102#115#101#116#32#50#52#59#13#10#32#32#34+ + #114#101#108#111#97#100#34#32#116#121#112#101#32#117#115#104#111#114#116#32+ + #111#102#102#115#101#116#32#50#54#59#13#10#125#13#10#13#10#84#114#105#103+ + #103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#69#70#70+ + #69#67#84#32#123#13#10#32#32#34#99#111#117#110#116#34#32#97#108#105#97#115+ + #32#70#88#67#111#117#110#116#32#116#121#112#101#32#117#98#121#116#101#32#111+ + #102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116+ + #59#13#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#70#88#84#121+ #112#101#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+ #32#49#32#101#110#117#109#32#84#114#105#103#103#101#114#69#102#102#101#99+ #116#32#100#101#102#97#117#108#116#32#84#82#73#71#71#69#82#95#69#70#70#69#67+ #84#95#80#65#82#84#73#67#76#69#32#119#114#105#116#101#100#101#102#97#117#108+ - #116#59#10#32#32#34#115#117#98#116#121#112#101#34#32#97#108#105#97#115#32#70+ - #88#83#117#98#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32#111+ - #102#102#115#101#116#32#50#32#101#110#117#109#32#84#114#105#103#103#101#114+ - #69#102#102#101#99#116#84#121#112#101#32#100#101#102#97#117#108#116#32#84#82+ - #73#71#71#69#82#95#69#70#70#69#67#84#95#83#80#65#82#75#32#119#114#105#116+ - #101#100#101#102#97#117#108#116#59#10#32#32#34#114#101#100#34#32#97#108#105+ - #97#115#32#70#88#82#101#100#32#116#121#112#101#32#117#98#121#116#101#32#111+ - #102#102#115#101#116#32#51#32#119#114#105#116#101#100#101#102#97#117#108#116+ - #59#10#32#32#34#103#114#101#101#110#34#32#97#108#105#97#115#32#70#88#71#114+ - #101#101#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+ - #116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #98#108#117#101#34#32#97#108#105#97#115#32#70#88#66#108#117#101#32#116#121+ - #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#53#32#119#114+ - #105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#112#111#115#34#32#97+ - #108#105#97#115#32#70#88#80#111#115#32#116#121#112#101#32#117#98#121#116#101+ - #32#111#102#102#115#101#116#32#54#32#101#110#117#109#32#84#114#105#103#103+ - #101#114#69#102#102#101#99#116#80#111#115#32#100#101#102#97#117#108#116#32+ - #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#80#79#83#95#67#69#78#84#69#82+ - #32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#119#97#105+ - #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+ - #116#32#56#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #118#101#108#95#120#34#32#116#121#112#101#32#98#121#116#101#32#111#102#102+ - #115#101#116#32#49#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ - #10#32#32#34#118#101#108#95#121#34#32#116#121#112#101#32#98#121#116#101#32+ - #111#102#102#115#101#116#32#49#49#32#119#114#105#116#101#100#101#102#97#117+ - #108#116#59#10#32#32#34#115#112#114#101#97#100#95#108#34#32#116#121#112#101+ - #32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#50#32#119#114#105+ - #116#101#100#101#102#97#117#108#116#59#10#32#32#34#115#112#114#101#97#100#95+ - #114#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+ - #32#49#51#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+ - #115#112#114#101#97#100#95#117#34#32#116#121#112#101#32#117#98#121#116#101+ - #32#111#102#102#115#101#116#32#49#52#32#119#114#105#116#101#100#101#102#97+ - #117#108#116#59#10#32#32#34#115#112#114#101#97#100#95#100#34#32#116#121#112+ - #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#53#32#119#114+ - #105#116#101#100#101#102#97#117#108#116#59#10#125#10 + #116#59#13#10#32#32#34#115#117#98#116#121#112#101#34#32#97#108#105#97#115#32+ + #70#88#83#117#98#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32+ + #111#102#102#115#101#116#32#50#32#101#110#117#109#32#84#114#105#103#103#101+ + #114#69#102#102#101#99#116#84#121#112#101#32#100#101#102#97#117#108#116#32+ + #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#83#80#65#82#75#32#119#114#105+ + #116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#114#101#100#34#32#97+ + #108#105#97#115#32#70#88#82#101#100#32#116#121#112#101#32#117#98#121#116#101+ + #32#111#102#102#115#101#116#32#51#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#32#32#34#103#114#101#101#110#34#32#97#108#105#97#115#32#70+ + #88#71#114#101#101#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102+ + #102#115#101#116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59+ + #13#10#32#32#34#98#108#117#101#34#32#97#108#105#97#115#32#70#88#66#108#117+ + #101#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32+ + #53#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#112+ + #111#115#34#32#97#108#105#97#115#32#70#88#80#111#115#32#116#121#112#101#32+ + #117#98#121#116#101#32#111#102#102#115#101#116#32#54#32#101#110#117#109#32+ + #84#114#105#103#103#101#114#69#102#102#101#99#116#80#111#115#32#100#101#102+ + #97#117#108#116#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#80#79#83#95+ + #67#69#78#84#69#82#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+ + #10#32#32#34#119#97#105#116#34#32#116#121#112#101#32#117#115#104#111#114#116+ + #32#111#102#102#115#101#116#32#56#32#119#114#105#116#101#100#101#102#97#117+ + #108#116#59#13#10#32#32#34#118#101#108#95#120#34#32#116#121#112#101#32#98+ + #121#116#101#32#111#102#102#115#101#116#32#49#48#32#119#114#105#116#101#100+ + #101#102#97#117#108#116#59#13#10#32#32#34#118#101#108#95#121#34#32#116#121+ + #112#101#32#98#121#116#101#32#111#102#102#115#101#116#32#49#49#32#119#114+ + #105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#112#114#101#97+ + #100#95#108#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115+ + #101#116#32#49#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10+ + #32#32#34#115#112#114#101#97#100#95#114#34#32#116#121#112#101#32#117#98#121+ + #116#101#32#111#102#102#115#101#116#32#49#51#32#119#114#105#116#101#100#101+ + #102#97#117#108#116#59#13#10#32#32#34#115#112#114#101#97#100#95#117#34#32+ + #116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#52+ + #32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#112+ + #114#101#97#100#95#100#34#32#116#121#112#101#32#117#98#121#116#101#32#111+ + #102#102#115#101#116#32#49#53#32#119#114#105#116#101#100#101#102#97#117#108+ + #116#59#13#10#125#13#10 ; \ No newline at end of file -- 2.29.2