text: using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using MenuAPI;
  using Newtonsoft.Json;
  using CitizenFX.Core;
  using static CitizenFX.Core.UI.Screen;
  using static CitizenFX.Core.Native.API;
  using static vMenuClient.CommonFunctions;
  using static vMenuShared.PermissionsManager;
  
  namespace vMenuClient
  {
      public struct ValidWeapon
      {
          public uint Hash;
          public string Name;
          public Dictionary<string, uint> Components;
          public Permission Perm;
          public string SpawnName;
          public int GetMaxAmmo { get { int ammo = 0; GetMaxAmmo(Game.PlayerPed.Handle, this.Hash, ref ammo); return ammo; } }
          public int CurrentAmmo;
          public int CurrentTint;
          public float Accuracy { get { Game.WeaponHudStats stats = new Game.WeaponHudStats(); Game.GetWeaponHudStats(Hash, ref stats); return stats.hudAccuracy; } }
          public float Damage { get { Game.WeaponHudStats stats = new Game.WeaponHudStats(); Game.GetWeaponHudStats(Hash, ref stats); return stats.hudDamage; } }
          public float Range { get { Game.WeaponHudStats stats = new Game.WeaponHudStats(); Game.GetWeaponHudStats(Hash, ref stats); return stats.hudRange; } }
          public float Speed { get { Game.WeaponHudStats stats = new Game.WeaponHudStats(); Game.GetWeaponHudStats(Hash, ref stats); return stats.hudSpeed; } }
      }
  
      public static class ValidWeapons
      {
          private static List<ValidWeapon> _weaponsList = new List<ValidWeapon>();
  
          public static List<ValidWeapon> WeaponList
          {
              get
              {
                  if (_weaponsList.Count == weaponNames.Count - 1)
                  {
                      return _weaponsList;
                  }
                  CreateWeaponsList();
                  return _weaponsList;
              }
          }
  
  
          private static Dictionary<string, string> _components = new Dictionary<string, string>();
          public static Dictionary<string, string> GetWeaponComponents()
          {
              if (_components.Count == 0)
              {
                  string addons = LoadResourceFile(GetCurrentResourceName(), "config/addons.json") ?? "{}";
                  _components = weaponComponentNames;
                  try
                  {
                      var addonsFile = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(addons);
                      if (addonsFile.ContainsKey("weapon_components"))
                      {
                          foreach (var item in addonsFile["weapon_components"])
                          {
                              string name = item;
                              string displayName = GetLabelText(name) ?? name;
                              int unused = 0;
                              if (GetWeaponComponentHudStats((uint)GetHashKey(name), ref unused))
                              {
                                  _components.Add(name, displayName);
                              }
                          }
                      }
                  }
                  catch
                  {
                      Log("[WARNING] The addons.json contains invalid JSON.");
                  }
              }
              return _components;
          }
  
          private static void CreateWeaponsList()
          {
              _weaponsList.Clear();
              foreach (var weapon in weaponNames)
              {
                  string realName = weapon.Key;
                  string localizedName = weapon.Value;
                  if (realName != "weapon_unarmed")
                  {
                      uint hash = (uint)GetHashKey(weapon.Key);
                      Dictionary<string, uint> componentHashes = new Dictionary<string, uint>();
                      foreach (var comp in GetWeaponComponents().Keys)
                      {
                          if (DoesWeaponTakeWeaponComponent(hash, (uint)GetHashKey(comp)))
                          {
                              if (!componentHashes.ContainsKey(GetWeaponComponents()[comp]))
                              {
                                  componentHashes.Add(GetWeaponComponents()[comp], (uint)GetHashKey(comp));
                              }
                          }
                      }
                      ValidWeapon vw = new ValidWeapon()
                      {
                          Hash = hash,
                          SpawnName = realName,
                          Name = localizedName,
                          Components = componentHashes,
                          Perm = weaponPermissions[realName]
                      };
                      if (!_weaponsList.Contains(vw))
                      {
                          _weaponsList.Add(vw);
                      }
                  }
              }
          }
  
          #region Weapon names, hashes and localized names (+ all components & tints).
          #region weapon descriptions & names
          public static readonly Dictionary<string, string> weaponDescriptions = new Dictionary<string, string>()
          {
              { "weapon_advancedrifle", GetLabelText("WTD_RIFLE_ADV") },
              { "weapon_appistol", GetLabelText("WTD_PIST_AP") },
              { "weapon_assaultrifle", GetLabelText("WTD_RIFLE_ASL") },
              { "weapon_assaultrifle_mk2", GetLabelText("WTD_RIFLE_ASL2") },
              { "weapon_assaultshotgun", GetLabelText("WTD_SG_ASL") },
              { "weapon_assaultsmg", GetLabelText("WTD_SMG_ASL") },
              { "weapon_autoshotgun", GetLabelText("WTD_AUTOSHGN") },
              { "weapon_bat", GetLabelText("WTD_BAT") },
              { "weapon_ball", GetLabelText("WT_BALL") + "."},
              { "weapon_battleaxe", GetLabelText("WTD_BATTLEAXE") },
              { "weapon_bottle", GetLabelText("WTD_BOTTLE") },
              { "weapon_bullpuprifle", GetLabelText("WTD_BULLRIFLE") },
              { "weapon_bullpuprifle_mk2", GetLabelText("WTD_BULLRIFLE2") },
              { "weapon_bullpupshotgun", GetLabelText("WTD_SG_BLP") },
              { "weapon_bzgas", GetLabelText("WT_BZGAS") + "."},
              { "weapon_carbinerifle", GetLabelText("WTD_RIFLE_CBN") },
              { "weapon_carbinerifle_mk2", GetLabelText("WTD_RIFLE_CBN2") },
              { "weapon_combatmg", GetLabelText("WTD_MG_CBT") },
              { "weapon_combatmg_mk2", GetLabelText("WTD_MG_CBT2") },
              { "weapon_combatpdw", GetLabelText("WTD_COMBATPDW") },
              { "weapon_combatpistol", GetLabelText("WTD_PIST_CBT") },
              { "weapon_compactlauncher", GetLabelText("WTD_CMPGL") },
              { "weapon_compactrifle", GetLabelText("WTD_CMPRIFLE") + "~n~" }, // this one is just too short to line-break properly, so we force another empty line
              { "weapon_crowbar", GetLabelText("WTD_CROWBAR") },
              { "weapon_dagger", GetLabelText("WTD_DAGGER") },
              { "weapon_dbshotgun", GetLabelText("WTD_DBSHGN") },
              { "weapon_doubleaction", GetLabelText("WTD_REV_DA") },
              { "weapon_fireextinguisher", GetLabelText("WT_FIRE") + "." },
              { "weapon_firework", GetLabelText("WT_FWRKLNCHR") + "." },
              { "weapon_flare", GetLabelText("WT_FLARE") + "." },
              { "weapon_flaregun", GetLabelText("WTD_FLAREGUN") },
              { "weapon_flashlight", GetLabelText("WTD_FLASHLIGHT") },
              { "weapon_golfclub", GetLabelText("WTD_GOLFCLUB") },
              { "weapon_grenade", GetLabelText("WTD_GNADE") },
              { "weapon_grenadelauncher", GetLabelText("WTD_GL") },
              { "weapon_gusenberg", GetLabelText("WTD2_GUSNBRG") },
              { "weapon_hammer", GetLabelText("WTD_HAMMER") },
              { "weapon_hatchet", GetLabelText("WTD_HATCHET") },
              { "weapon_heavypistol", GetLabelText("WTD2_HVYPISTOL") },
              { "weapon_heavyshotgun", GetLabelText("WTD2_HVYSHGN") },
              { "weapon_heavysniper", GetLabelText("WTD_SNIP_HVY") },
              { "weapon_heavysniper_mk2", GetLabelText("WTD_SNIP_HVY2") },
              { "weapon_hominglauncher", GetLabelText("WTD_HOMLNCH") },
              { "weapon_knife", GetLabelText("WTD_KNIFE") },
              { "weapon_knuckle", GetLabelText("WTD_KNUCKLE") },
              { "weapon_machete", GetLabelText("WTD_MACHETE") },
              { "weapon_machinepistol", GetLabelText("WTD_MCHPIST") },
              { "weapon_marksmanpistol", GetLabelText("WTD_MKPISTOL") },
              { "weapon_marksmanrifle", GetLabelText("WTD_MKRIFLE") },
              { "weapon_marksmanrifle_mk2", GetLabelText("WTD_MKRIFLE2") },
              { "weapon_mg", GetLabelText("WTD_MG") },
              { "weapon_microsmg", GetLabelText("WTD_SMG_MCR") },
              { "weapon_minigun", GetLabelText("WTD_MINIGUN") },
              { "weapon_minismg", GetLabelText("WTD_MINISMG") },
              { "weapon_molotov", GetLabelText("WTD_MOLOTOV") },
              { "weapon_musket", GetLabelText("WTD_MUSKET") },
              { "weapon_nightstick", GetLabelText("WTD_NGTSTK") },
              { "weapon_petrolcan", GetLabelText("WTD_PETROL") },
              { "weapon_pipebomb", GetLabelText("WTD_PIPEBOMB") },
              { "weapon_pistol", GetLabelText("WT_PIST_DESC") },
              { "weapon_pistol50", GetLabelText("WTD_PIST_50") },
              { "weapon_pistol_mk2", GetLabelText("WTD_PIST2") },
              { "weapon_poolcue", GetLabelText("WTD_POOLCUE") },
              { "weapon_proxmine", GetLabelText("WTD_PRXMINE") },
              { "weapon_pumpshotgun", GetLabelText("WTD_SG_PMP") },
              { "weapon_pumpshotgun_mk2", GetLabelText("WTD_SG_PMP2") },
              { "weapon_railgun", GetLabelText("WTD_RAILGUN") },
              { "weapon_revolver", GetLabelText("WTD_REVOLVER") },
              { "weapon_revolver_mk2", GetLabelText("WTD_REVOLVER2") },
              { "weapon_rpg", GetLabelText("WTD_RPG") },
              { "weapon_sawnoffshotgun", GetLabelText("WTD_SG_SOF") },
              { "weapon_smg", GetLabelText("WTD_SMG") },
              { "weapon_smg_mk2", GetLabelText("WTD_SMG2") },
              { "weapon_smokegrenade", GetLabelText("WTD_GNADE_SMK") },
              { "weapon_sniperrifle", GetLabelText("WTD_SNIP_RIF") },
              { "weapon_snowball", GetLabelText("WT_SNWBALL") + "." },
              { "weapon_snspistol", GetLabelText("WTD_SNSPISTOL") },
              { "weapon_snspistol_mk2", GetLabelText("WTD_SNSPISTOL2") },
              { "weapon_specialcarbine", GetLabelText("WTD_SPCARBINE") },
              { "weapon_specialcarbine_mk2", GetLabelText("WTD_SPCARBINE2") },
              { "weapon_stickybomb", GetLabelText("WTD_GNADE_STK") },
              { "weapon_stungun", GetLabelText("WTD_STUN") },
              { "weapon_switchblade", GetLabelText("WTD_SWBLADE") },
              { "weapon_unarmed", GetLabelText("WTD_UNARMED") },
              { "weapon_vintagepistol", GetLabelText("WTD_VPISTOL") },
              { "weapon_wrench", GetLabelText("WTD_WRENCH") },
              // DLC CHRISTMAS2018 (v 1604)
              { "weapon_raypistol", GetLabelText("WTD_RAYPISTOL") },
              { "weapon_raycarbine", GetLabelText("WTD_RAYCARBINE") },
              { "weapon_rayminigun", GetLabelText("WTD_RAYMINIGUN") },
              { "weapon_stone_hatchet", GetLabelText("WTD_SHATCHET") }
          };
  
          public static readonly Dictionary<string, string> weaponNames = new Dictionary<string, string>()
          {
              { "weapon_advancedrifle", GetLabelText("WT_RIFLE_ADV") },
              { "weapon_appistol", GetLabelText("WT_PIST_AP") },
              { "weapon_assaultrifle", GetLabelText("WT_RIFLE_ASL") },
              { "weapon_assaultrifle_mk2", GetLabelText("WT_RIFLE_ASL2") },
              { "weapon_assaultshotgun", GetLabelText("WT_SG_ASL") },
              { "weapon_assaultsmg", GetLabelText("WT_SMG_ASL") },
              { "weapon_autoshotgun", GetLabelText("WT_AUTOSHGN") },
              { "weapon_bat", GetLabelText("WT_BAT") },
              { "weapon_ball", GetLabelText("WT_BALL") },
              { "weapon_battleaxe", GetLabelText("WT_BATTLEAXE") },
              { "weapon_bottle", GetLabelText("WT_BOTTLE") },
              { "weapon_bullpuprifle", GetLabelText("WT_BULLRIFLE") },
              { "weapon_bullpuprifle_mk2", GetLabelText("WT_BULLRIFLE2") },
              { "weapon_bullpupshotgun", GetLabelText("WT_SG_BLP") },
              { "weapon_bzgas", GetLabelText("WT_BZGAS") },
              { "weapon_carbinerifle", GetLabelText("WT_RIFLE_CBN") },
              { "weapon_carbinerifle_mk2", GetLabelText("WT_RIFLE_CBN2") },
              { "weapon_combatmg", GetLabelText("WT_MG_CBT") },
              { "weapon_combatmg_mk2", GetLabelText("WT_MG_CBT2") },
              { "weapon_combatpdw", GetLabelText("WT_COMBATPDW") },
              { "weapon_combatpistol", GetLabelText("WT_PIST_CBT") },
              { "weapon_compactlauncher", GetLabelText("WT_CMPGL") },
              { "weapon_compactrifle", GetLabelText("WT_CMPRIFLE")},
              { "weapon_crowbar", GetLabelText("WT_CROWBAR") },
              { "weapon_dagger", GetLabelText("WT_DAGGER") },
              { "weapon_dbshotgun", GetLabelText("WT_DBSHGN") },
              { "weapon_doubleaction", GetLabelText("WT_REV_DA") },
              { "weapon_fireextinguisher", GetLabelText("WT_FIRE") },
              { "weapon_firework", GetLabelText("WT_FWRKLNCHR") },
              { "weapon_flare", GetLabelText("WT_FLARE") },
              { "weapon_flaregun", GetLabelText("WT_FLAREGUN") },
              { "weapon_flashlight", GetLabelText("WT_FLASHLIGHT") },
              { "weapon_golfclub", GetLabelText("WT_GOLFCLUB") },
              { "weapon_grenade", GetLabelText("WT_GNADE") },
              { "weapon_grenadelauncher", GetLabelText("WT_GL") },
              { "weapon_gusenberg", GetLabelText("WT_GUSENBERG") },
              { "weapon_hammer", GetLabelText("WT_HAMMER") },
              { "weapon_hatchet", GetLabelText("WT_HATCHET") },
              { "weapon_heavypistol", GetLabelText("WT_HEAVYPSTL") },
              { "weapon_heavyshotgun", GetLabelText("WT_HVYSHOT") },
              { "weapon_heavysniper", GetLabelText("WT_SNIP_HVY") },
              { "weapon_heavysniper_mk2", GetLabelText("WT_SNIP_HVY2") },
              { "weapon_hominglauncher", GetLabelText("WT_HOMLNCH") },
              { "weapon_knife", GetLabelText("WT_KNIFE") },
              { "weapon_knuckle", GetLabelText("WT_KNUCKLE") },
              { "weapon_machete", GetLabelText("WT_MACHETE") },
              { "weapon_machinepistol", GetLabelText("WT_MCHPIST") },
              { "weapon_marksmanpistol", GetLabelText("WT_MKPISTOL") },
              { "weapon_marksmanrifle", GetLabelText("WT_MKRIFLE") },
              { "weapon_marksmanrifle_mk2", GetLabelText("WT_MKRIFLE2") },
              { "weapon_mg", GetLabelText("WT_MG") },
              { "weapon_microsmg", GetLabelText("WT_SMG_MCR") },
              { "weapon_minigun", GetLabelText("WT_MINIGUN") },
              { "weapon_minismg", GetLabelText("WT_MINISMG") },
              { "weapon_molotov", GetLabelText("WT_MOLOTOV") },
              { "weapon_musket", GetLabelText("WT_MUSKET") },
              { "weapon_nightstick", GetLabelText("WT_NGTSTK") },
              { "weapon_petrolcan", GetLabelText("WT_PETROL") },
              { "weapon_pipebomb", GetLabelText("WT_PIPEBOMB") },
              { "weapon_pistol", GetLabelText("WT_PIST") },
              { "weapon_pistol50", GetLabelText("WT_PIST_50") },
              { "weapon_pistol_mk2", GetLabelText("WT_PIST2") },
              { "weapon_poolcue", GetLabelText("WT_POOLCUE") },
              { "weapon_proxmine", GetLabelText("WT_PRXMINE") },
              { "weapon_pumpshotgun", GetLabelText("WT_SG_PMP") },
              { "weapon_pumpshotgun_mk2", GetLabelText("WT_SG_PMP2") },
              { "weapon_railgun", GetLabelText("WT_RAILGUN") },
              { "weapon_revolver", GetLabelText("WT_REVOLVER") },
              { "weapon_revolver_mk2", GetLabelText("WT_REVOLVER2") },
              { "weapon_rpg", GetLabelText("WT_RPG") },
              { "weapon_sawnoffshotgun", GetLabelText("WT_SG_SOF") },
              { "weapon_smg", GetLabelText("WT_SMG") },
              { "weapon_smg_mk2", GetLabelText("WT_SMG2") },
              { "weapon_smokegrenade", GetLabelText("WT_GNADE_SMK") },
              { "weapon_sniperrifle", GetLabelText("WT_SNIP_RIF") },
              { "weapon_snowball", GetLabelText("WT_SNWBALL") },
              { "weapon_snspistol", GetLabelText("WT_SNSPISTOL") },
              { "weapon_snspistol_mk2", GetLabelText("WT_SNSPISTOL2") },
              { "weapon_specialcarbine", GetLabelText("WT_RIFLE_SCBN") },
              { "weapon_specialcarbine_mk2", GetLabelText("WT_SPCARBINE2") },
              { "weapon_stickybomb", GetLabelText("WT_GNADE_STK") },
              { "weapon_stungun", GetLabelText("WT_STUN") },
              { "weapon_switchblade", GetLabelText("WT_SWBLADE") },
              { "weapon_unarmed", GetLabelText("WT_UNARMED") },
              { "weapon_vintagepistol", GetLabelText("WT_VPISTOL") },
              { "weapon_wrench", GetLabelText("WT_WRENCH") },
              // DLC CHRISTMAS2018 (v 1604)
              { "weapon_raypistol", GetLabelText("WT_RAYPISTOL") },
              { "weapon_raycarbine", GetLabelText("WT_RAYCARBINE") },
              { "weapon_rayminigun", GetLabelText("WT_RAYMINIGUN") },
              { "weapon_stone_hatchet", GetLabelText("WT_SHATCHET") }
          };
          #endregion
  
          #region weapon permissions
          public static readonly Dictionary<string, Permission> weaponPermissions = new Dictionary<string, Permission>()
          {
              ["weapon_advancedrifle"] = Permission.WPAdvancedRifle,
              ["weapon_appistol"] = Permission.WPAPPistol,
              ["weapon_assaultrifle"] = Permission.WPAssaultRifle,
              ["weapon_assaultrifle_mk2"] = Permission.WPAssaultRifleMk2,
              ["weapon_assaultshotgun"] = Permission.WPAssaultShotgun,
              ["weapon_assaultsmg"] = Permission.WPAssaultSMG,
              ["weapon_autoshotgun"] = Permission.WPSweeperShotgun,
              ["weapon_ball"] = Permission.WPBall,
              ["weapon_bat"] = Permission.WPBat,
              ["weapon_battleaxe"] = Permission.WPBattleAxe,
              ["weapon_bottle"] = Permission.WPBottle,
              ["weapon_bullpuprifle"] = Permission.WPBullpupRifle,
              ["weapon_bullpuprifle_mk2"] = Permission.WPBullpupRifleMk2,
              ["weapon_bullpupshotgun"] = Permission.WPBullpupShotgun,
              ["weapon_bzgas"] = Permission.WPBZGas,
              ["weapon_carbinerifle"] = Permission.WPCarbineRifle,
              ["weapon_carbinerifle_mk2"] = Permission.WPCarbineRifleMk2,
              ["weapon_combatmg"] = Permission.WPCombatMG,
              ["weapon_combatmg_mk2"] = Permission.WPCombatMGMk2,
              ["weapon_combatpdw"] = Permission.WPCombatPDW,
              ["weapon_combatpistol"] = Permission.WPCombatPistol,
              ["weapon_compactlauncher"] = Permission.WPCompactGrenadeLauncher,
              ["weapon_compactrifle"] = Permission.WPCompactRifle,
              ["weapon_crowbar"] = Permission.WPCrowbar,
              ["weapon_dagger"] = Permission.WPDagger,
              ["weapon_dbshotgun"] = Permission.WPDoubleBarrelShotgun,
              ["weapon_doubleaction"] = Permission.WPDoubleAction,
              ["weapon_fireextinguisher"] = Permission.WPFireExtinguisher,
              ["weapon_firework"] = Permission.WPFirework,
              ["weapon_flare"] = Permission.WPFlare,
              ["weapon_flaregun"] = Permission.WPFlareGun,
              ["weapon_flashlight"] = Permission.WPFlashlight,
              ["weapon_golfclub"] = Permission.WPGolfClub,
              ["weapon_grenade"] = Permission.WPGrenade,
              ["weapon_grenadelauncher"] = Permission.WPGrenadeLauncher,
              ["weapon_gusenberg"] = Permission.WPGusenberg,
              ["weapon_hammer"] = Permission.WPHammer,
              ["weapon_hatchet"] = Permission.WPHatchet,
              ["weapon_heavypistol"] = Permission.WPHeavyPistol,
              ["weapon_heavyshotgun"] = Permission.WPHeavyShotgun,
              ["weapon_heavysniper"] = Permission.WPHeavySniper,
              ["weapon_heavysniper_mk2"] = Permission.WPHeavySniperMk2,
              ["weapon_hominglauncher"] = Permission.WPHomingLauncher,
              ["weapon_knife"] = Permission.WPKnife,
              ["weapon_knuckle"] = Permission.WPKnuckleDuster,
              ["weapon_machete"] = Permission.WPMachete,
              ["weapon_machinepistol"] = Permission.WPMachinePistol,
              ["weapon_marksmanpistol"] = Permission.WPMarksmanPistol,
              ["weapon_marksmanrifle"] = Permission.WPMarksmanRifle,
              ["weapon_marksmanrifle_mk2"] = Permission.WPMarksmanRifleMk2,
              ["weapon_mg"] = Permission.WPMG,
              ["weapon_microsmg"] = Permission.WPMicroSMG,
              ["weapon_minigun"] = Permission.WPMinigun,
              ["weapon_minismg"] = Permission.WPMiniSMG,
              ["weapon_molotov"] = Permission.WPMolotov,
              ["weapon_musket"] = Permission.WPMusket,
              ["weapon_nightstick"] = Permission.WPNightstick,
              ["weapon_petrolcan"] = Permission.WPPetrolCan,
              ["weapon_pipebomb"] = Permission.WPPipeBomb,
              ["weapon_pistol"] = Permission.WPPistol,
              ["weapon_pistol50"] = Permission.WPPistol50,
              ["weapon_pistol_mk2"] = Permission.WPPistolMk2,
              ["weapon_poolcue"] = Permission.WPPoolCue,
              ["weapon_proxmine"] = Permission.WPProximityMine,
              ["weapon_pumpshotgun"] = Permission.WPPumpShotgun,
              ["weapon_pumpshotgun_mk2"] = Permission.WPPumpShotgunMk2,
              ["weapon_railgun"] = Permission.WPRailgun,
              ["weapon_revolver"] = Permission.WPRevolver,
              ["weapon_revolver_mk2"] = Permission.WPRevolverMk2,
              ["weapon_rpg"] = Permission.WPRPG,
              ["weapon_sawnoffshotgun"] = Permission.WPSawnOffShotgun,
              ["weapon_smg"] = Permission.WPSMG,
              ["weapon_smg_mk2"] = Permission.WPSMGMk2,
              ["weapon_smokegrenade"] = Permission.WPSmokeGrenade,
              ["weapon_sniperrifle"] = Permission.WPSniperRifle,
              ["weapon_snowball"] = Permission.WPSnowball,
              ["weapon_snspistol"] = Permission.WPSNSPistol,
              ["weapon_snspistol_mk2"] = Permission.WPSNSPistolMk2,
              ["weapon_specialcarbine"] = Permission.WPSpecialCarbine,
              ["weapon_specialcarbine_mk2"] = Permission.WPSpecialCarbineMk2,
              ["weapon_stickybomb"] = Permission.WPStickyBomb,
              ["weapon_stungun"] = Permission.WPStunGun,
              ["weapon_switchblade"] = Permission.WPSwitchBlade,
              ["weapon_unarmed"] = Permission.WPUnarmed,
              ["weapon_vintagepistol"] = Permission.WPVintagePistol,
              ["weapon_wrench"] = Permission.WPWrench,
              // DLC CHRISTMAS2018 (v 1604)
              ["weapon_raypistol"] = Permission.WPPlasmaPistol,
              ["weapon_raycarbine"] = Permission.WPPlasmaCarbine,
              ["weapon_rayminigun"] = Permission.WPPlasmaMinigun,
              ["weapon_stone_hatchet"] = Permission.WPStoneHatchet,
          };
          #endregion
  
          #region weapon component names
          private static readonly Dictionary<string, string> weaponComponentNames = new Dictionary<string, string>()
          {
              ["COMPONENT_ADVANCEDRIFLE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_ADVANCEDRIFLE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_ADVANCEDRIFLE_VARMOD_LUXE"] = GetLabelText("WCT_VAR_METAL"),
              ["COMPONENT_APPISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_APPISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_APPISTOL_VARMOD_LUXE"] = GetLabelText("WCT_VAR_METAL"),
              ["COMPONENT_ASSAULTRIFLE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_ASSAULTRIFLE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_ASSAULTRIFLE_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_ASSAULTRIFLE_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_ASSAULTRIFLE_VARMOD_LUXE"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_ASSAULTSHOTGUN_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_ASSAULTSHOTGUN_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_ASSAULTSMG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_ASSAULTSMG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_ASSAULTSMG_VARMOD_LOWRIDER"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_AT_AR_AFGRIP_02"] = GetLabelText("WCT_GRIP"),
              ["COMPONENT_AT_AR_AFGRIP"] = GetLabelText("WCT_GRIP"),
              ["COMPONENT_AT_AR_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_AR_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_AR_FLSH"] = GetLabelText("WCT_FLASH"),
              ["COMPONENT_AT_AR_SUPP_02"] = GetLabelText("WCT_SUPP"),
              ["COMPONENT_AT_AR_SUPP"] = GetLabelText("WCT_SUPP"),
              ["COMPONENT_AT_BP_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_BP_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_CR_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_CR_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_MG_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_MG_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_MRFL_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_MRFL_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_MUZZLE_01"] = GetLabelText("WCT_MUZZ1"),
              ["COMPONENT_AT_MUZZLE_02"] = GetLabelText("WCT_MUZZ2"),
              ["COMPONENT_AT_MUZZLE_03"] = GetLabelText("WCT_MUZZ3"),
              ["COMPONENT_AT_MUZZLE_04"] = GetLabelText("WCT_MUZZ4"),
              ["COMPONENT_AT_MUZZLE_05"] = GetLabelText("WCT_MUZZ5"),
              ["COMPONENT_AT_MUZZLE_06"] = GetLabelText("WCT_MUZZ6"),
              ["COMPONENT_AT_MUZZLE_07"] = GetLabelText("WCT_MUZZ7"),
              ["COMPONENT_AT_MUZZLE_08"] = GetLabelText("WCT_MUZZ"),
              ["COMPONENT_AT_MUZZLE_09"] = GetLabelText("WCT_MUZZ9"),
              ["COMPONENT_AT_PI_COMP_02"] = GetLabelText("WCT_COMP"),
              ["COMPONENT_AT_PI_COMP_03"] = GetLabelText("WCT_COMP"),
              ["COMPONENT_AT_PI_COMP"] = GetLabelText("WCT_COMP"),
              ["COMPONENT_AT_PI_FLSH_02"] = GetLabelText("WCT_FLASH"),
              ["COMPONENT_AT_PI_FLSH_03"] = GetLabelText("WCT_FLASH"),
              ["COMPONENT_AT_PI_FLSH"] = GetLabelText("WCT_FLASH"),
              ["COMPONENT_AT_PI_RAIL_02"] = GetLabelText("WCT_SCOPE_PI"),
              ["COMPONENT_AT_PI_RAIL"] = GetLabelText("WCT_SCOPE_PI"),
              ["COMPONENT_AT_PI_SUPP_02"] = GetLabelText("WCT_SUPP"),
              ["COMPONENT_AT_PI_SUPP"] = GetLabelText("WCT_SUPP"),
              ["COMPONENT_AT_SB_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_SB_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_SC_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_SC_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM_MK2"] = GetLabelText("WCT_SCOPE_LRG2"),
              ["COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM"] = GetLabelText("WCT_SCOPE_LRG"),
              ["COMPONENT_AT_SCOPE_LARGE_MK2"] = GetLabelText("WCT_SCOPE_LRG2"),
              ["COMPONENT_AT_SCOPE_LARGE"] = GetLabelText("WCT_SCOPE_LRG"),
              ["COMPONENT_AT_SCOPE_MACRO_02_MK2"] = GetLabelText("WCT_SCOPE_MAC2"),
              ["COMPONENT_AT_SCOPE_MACRO_02_SMG_MK2"] = GetLabelText("WCT_SCOPE_MAC2"),
              ["COMPONENT_AT_SCOPE_MACRO_02"] = GetLabelText("WCT_SCOPE_MAC"),
              ["COMPONENT_AT_SCOPE_MACRO_MK2"] = GetLabelText("WCT_SCOPE_MAC2"),
              ["COMPONENT_AT_SCOPE_MACRO"] = GetLabelText("WCT_SCOPE_MAC"),
              ["COMPONENT_AT_SCOPE_MAX"] = GetLabelText("WCT_SCOPE_MAX"),
              ["COMPONENT_AT_SCOPE_MEDIUM_MK2"] = GetLabelText("WCT_SCOPE_MED2"),
              ["COMPONENT_AT_SCOPE_MEDIUM"] = GetLabelText("WCT_SCOPE_LRG"),
              ["COMPONENT_AT_SCOPE_NV"] = GetLabelText("WCT_SCOPE_NV"),
              ["COMPONENT_AT_SCOPE_SMALL_02"] = GetLabelText("WCT_SCOPE_SML"),
              ["COMPONENT_AT_SCOPE_SMALL_MK2"] = GetLabelText("WCT_SCOPE_SML2"),
              ["COMPONENT_AT_SCOPE_SMALL_SMG_MK2"] = GetLabelText("WCT_SCOPE_SML2"),
              ["COMPONENT_AT_SCOPE_SMALL"] = GetLabelText("WCT_SCOPE_SML"),
              ["COMPONENT_AT_SCOPE_THERMAL"] = GetLabelText("WCT_SCOPE_TH"),
              ["COMPONENT_AT_SIGHTS_SMG"] = GetLabelText("WCT_HOLO"),
              ["COMPONENT_AT_SIGHTS"] = GetLabelText("WCT_HOLO"),
              ["COMPONENT_AT_SR_BARREL_01"] = GetLabelText("WCT_BARR"),
              ["COMPONENT_AT_SR_BARREL_02"] = GetLabelText("WCT_BARR2"),
              ["COMPONENT_AT_SR_SUPP_03"] = GetLabelText("WCT_SUPP"),
              ["COMPONENT_AT_SR_SUPP"] = GetLabelText("WCT_SUPP"),
              ["COMPONENT_BULLPUPRIFLE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_BULLPUPRIFLE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_BULLPUPRIFLE_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_BULLPUPRIFLE_VARMOD_LOW"] = GetLabelText("WCT_VAR_METAL"),
              ["COMPONENT_CARBINERIFLE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_CARBINERIFLE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_CARBINERIFLE_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_CARBINERIFLE_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_CARBINERIFLE_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_CARBINERIFLE_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_CARBINERIFLE_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_CARBINERIFLE_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_CARBINERIFLE_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_CARBINERIFLE_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_CARBINERIFLE_VARMOD_LUXE"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_COMBATMG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_COMBATMG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_COMBATMG_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_COMBATMG_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_COMBATMG_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_COMBATMG_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_COMBATMG_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_COMBATMG_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_COMBATMG_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_COMBATMG_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_COMBATMG_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_COMBATMG_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_COMBATMG_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_COMBATMG_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_COMBATMG_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_COMBATMG_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_COMBATMG_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_COMBATMG_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_COMBATMG_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_COMBATPDW_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_COMBATPDW_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_COMBATPDW_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_COMBATPISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_COMBATPISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_COMBATPISTOL_VARMOD_LOWRIDER"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_COMPACTRIFLE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_COMPACTRIFLE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_COMPACTRIFLE_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_GUSENBERG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_GUSENBERG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_HEAVYPISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_HEAVYPISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_HEAVYPISTOL_VARMOD_LUXE"] = GetLabelText("WCT_VAR_WOOD"),
              ["COMPONENT_HEAVYSHOTGUN_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_HEAVYSHOTGUN_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_HEAVYSHOTGUN_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_HEAVYSNIPER_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_HEAVYSNIPER_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_HEAVYSNIPER_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_HEAVYSNIPER_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_HEAVYSNIPER_MK2_CLIP_EXPLOSIVE"] = GetLabelText("WCT_CLIP_EX"),
              ["COMPONENT_HEAVYSNIPER_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_HEAVYSNIPER_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_KNUCKLE_VARMOD_BALLAS"] = GetLabelText("WCT_KNUCK_BG"),
              ["COMPONENT_KNUCKLE_VARMOD_BASE"] = GetLabelText("WCT_KNUCK_01"),
              ["COMPONENT_KNUCKLE_VARMOD_DIAMOND"] = GetLabelText("WCT_KNUCK_DMD"),
              ["COMPONENT_KNUCKLE_VARMOD_DOLLAR"] = GetLabelText("WCT_KNUCK_DLR"),
              ["COMPONENT_KNUCKLE_VARMOD_HATE"] = GetLabelText("WCT_KNUCK_HT"),
              ["COMPONENT_KNUCKLE_VARMOD_KING"] = GetLabelText("WCT_KNUCK_SLG"),
              ["COMPONENT_KNUCKLE_VARMOD_LOVE"] = GetLabelText("WCT_KNUCK_LV"),
              ["COMPONENT_KNUCKLE_VARMOD_PIMP"] = GetLabelText("WCT_KNUCK_02"),
              ["COMPONENT_KNUCKLE_VARMOD_PLAYER"] = GetLabelText("WCT_KNUCK_PC"),
              ["COMPONENT_KNUCKLE_VARMOD_VAGOS"] = GetLabelText("WCT_KNUCK_VG"),
              ["COMPONENT_MACHINEPISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_MACHINEPISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_MACHINEPISTOL_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_MARKSMANRIFLE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_MARKSMANRIFLE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_MARKSMANRIFLE_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_MARKSMANRIFLE_VARMOD_LUXE"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_MG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_MG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_MG_VARMOD_LOWRIDER"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_MICROSMG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_MICROSMG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_MICROSMG_VARMOD_LUXE"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_MINISMG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_MINISMG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_PISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_PISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_PISTOL_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_PISTOL_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_PISTOL_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_PISTOL_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_PISTOL_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_PISTOL_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_PISTOL_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_PISTOL_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_PISTOL_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_PISTOL_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_PISTOL_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_PISTOL_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_PISTOL_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_PISTOL_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_PISTOL_MK2_CLIP_HOLLOWPOINT"] = GetLabelText("WCT_CLIP_HP"),
              ["COMPONENT_PISTOL_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_PISTOL_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_PISTOL_VARMOD_LUXE"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_PISTOL50_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_PISTOL50_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_PISTOL50_VARMOD_LUXE"] = GetLabelText("WCT_VAR_SIL"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CLIP_01"] = GetLabelText("WCT_SHELL"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_SHELL_AP"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CLIP_EXPLOSIVE"] = GetLabelText("WCT_SHELL_EX"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CLIP_HOLLOWPOINT"] = GetLabelText("WCT_SHELL_HP"),
              ["COMPONENT_PUMPSHOTGUN_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_SHELL_INC"),
              ["COMPONENT_PUMPSHOTGUN_VARMOD_LOWRIDER"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_REVOLVER_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_REVOLVER_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_REVOLVER_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_REVOLVER_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_REVOLVER_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_REVOLVER_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_REVOLVER_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_REVOLVER_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_REVOLVER_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_REVOLVER_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_REVOLVER_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_REVOLVER_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1_RV"),
              ["COMPONENT_REVOLVER_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_REVOLVER_MK2_CLIP_HOLLOWPOINT"] = GetLabelText("WCT_CLIP_HP"),
              ["COMPONENT_REVOLVER_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_REVOLVER_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_REVOLVER_VARMOD_BOSS"] = GetLabelText("WCT_REV_VARB"),
              ["COMPONENT_REVOLVER_VARMOD_GOON"] = GetLabelText("WCT_REV_VARG"),
              ["COMPONENT_SAWNOFFSHOTGUN_VARMOD_LUXE"] = GetLabelText("WCT_VAR_METAL"),
              ["COMPONENT_SMG_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_SMG_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_SMG_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_SMG_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_SMG_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_SMG_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_SMG_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_SMG_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_SMG_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_SMG_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_SMG_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_SMG_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_SMG_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_SMG_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_SMG_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_SMG_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_SMG_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_SMG_MK2_CLIP_HOLLOWPOINT"] = GetLabelText("WCT_CLIP_HP"),
              ["COMPONENT_SMG_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_SMG_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_SMG_VARMOD_LUXE"] = GetLabelText("WCT_VAR_GOLD"),
              ["COMPONENT_SNIPERRIFLE_VARMOD_LUXE"] = GetLabelText("WCT_VAR_WOOD"),
              ["COMPONENT_SNSPISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_SNSPISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_SNSPISTOL_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_SNSPISTOL_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_SNSPISTOL_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_SNSPISTOL_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_SNSPISTOL_MK2_CLIP_HOLLOWPOINT"] = GetLabelText("WCT_CLIP_HP"),
              ["COMPONENT_SNSPISTOL_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_SNSPISTOL_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_SNSPISTOL_VARMOD_LOWRIDER"] = GetLabelText("WCT_VAR_WOOD"),
              ["COMPONENT_SPECIALCARBINE_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_SPECIALCARBINE_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_SPECIALCARBINE_CLIP_03"] = GetLabelText("WCT_CLIP_DRM"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_02"] = GetLabelText("WCT_CAMO_2"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_03"] = GetLabelText("WCT_CAMO_3"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_04"] = GetLabelText("WCT_CAMO_4"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_05"] = GetLabelText("WCT_CAMO_5"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_06"] = GetLabelText("WCT_CAMO_6"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_07"] = GetLabelText("WCT_CAMO_7"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_08"] = GetLabelText("WCT_CAMO_8"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_09"] = GetLabelText("WCT_CAMO_9"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_10"] = GetLabelText("WCT_CAMO_10"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO_IND_01"] = GetLabelText("WCT_CAMO_IND"),
              ["COMPONENT_SPECIALCARBINE_MK2_CAMO"] = GetLabelText("WCT_CAMO_1"),
              ["COMPONENT_SPECIALCARBINE_MK2_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_SPECIALCARBINE_MK2_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              ["COMPONENT_SPECIALCARBINE_MK2_CLIP_ARMORPIERCING"] = GetLabelText("WCT_CLIP_AP"),
              ["COMPONENT_SPECIALCARBINE_MK2_CLIP_FMJ"] = GetLabelText("WCT_CLIP_FMJ"),
              ["COMPONENT_SPECIALCARBINE_MK2_CLIP_INCENDIARY"] = GetLabelText("WCT_CLIP_INC"),
              ["COMPONENT_SPECIALCARBINE_MK2_CLIP_TRACER"] = GetLabelText("WCT_CLIP_TR"),
              ["COMPONENT_SPECIALCARBINE_VARMOD_LOWRIDER"] = GetLabelText("WCT_VAR_ETCHM"),
              ["COMPONENT_SWITCHBLADE_VARMOD_BASE"] = GetLabelText("WCT_SB_BASE"),
              ["COMPONENT_SWITCHBLADE_VARMOD_VAR1"] = GetLabelText("WCT_SB_VAR1"),
              ["COMPONENT_SWITCHBLADE_VARMOD_VAR2"] = GetLabelText("WCT_SB_VAR2"),
              ["COMPONENT_VINTAGEPISTOL_CLIP_01"] = GetLabelText("WCT_CLIP1"),
              ["COMPONENT_VINTAGEPISTOL_CLIP_02"] = GetLabelText("WCT_CLIP2"),
              // CHRISTMAS 2018 DLC (v 1604)
              ["COMPONENT_RAYPISTOL_VARMOD_XMAS18"] = GetLabelText("WCT_VAR_RAY18")
          };
          #endregion
  
          #region weapon tints
          public static readonly Dictionary<string, int> WeaponTints = new Dictionary<string, int>()
          {
              ["Black"] = 0,
              ["Green"] = 1,
              ["Gold"] = 2,
              ["Pink"] = 3,
              ["Army"] = 4,
              ["LSPD"] = 5,
              ["Orange"] = 6,
              ["Platinum"] = 7,
          };
          #endregion
  
          #region weapon mk2 tints
          public static readonly Dictionary<string, int> WeaponTintsMkII = new Dictionary<string, int>()
          {
              ["Classic Black"] = 0,
              ["Classic Gray"] = 1,
              ["Classic Two Tone"] = 2,
              ["Classic White"] = 3,
              ["Classic Beige"] = 4,
              ["Classic Green"] = 5,
              ["Classic Blue"] = 6,
              ["Classic Earth"] = 7,
              ["Classic Brown & Black"] = 8,
              ["Red Contrast"] = 9,
              ["Blue Contrast"] = 10,
              ["Yellow Contrast"] = 11,
              ["Orange Contrast"] = 12,
              ["Bold Pink"] = 13,
              ["Bold Purple & Yellow"] = 14,
              ["Bold Orange"] = 15,
              ["Bold Green & Purple"] = 16,
              ["Bold Red Features"] = 17,
              ["Bold Green Features"] = 18,
              ["Bold Cyan Features"] = 19,
              ["Bold Yellow Features"] = 20,
              ["Bold Red & White"] = 21,
              ["Bold Blue & White"] = 22,
              ["Metallic Gold"] = 23,
              ["Metallic Platinum"] = 24,
              ["Metallic Gray & Lilac"] = 25,
              ["Metallic Purple & Lime"] = 26,
              ["Metallic Red"] = 27,
              ["Metallic Green"] = 28,
              ["Metallic Blue"] = 29,
              ["Metallic White & Aqua"] = 30,
              ["Metallic Red & Yellow"] = 31
          };
          #endregion
          #endregion
      }
  }
  