@elite-dangerous-almanac/core 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/PROVENANCE/equipment/SOURCES.md +149 -27
  2. package/PROVENANCE/i18n/SOURCES.md +251 -40
  3. package/PROVENANCE/ships/SOURCES.md +232 -63
  4. package/README.md +21 -6
  5. package/THIRD_PARTY_NOTICES.md +4 -1
  6. package/dist/{chunk-AAU7OM47.js → chunk-2OBUSQA7.js} +1 -1
  7. package/dist/{chunk-AAU7OM47.js.map → chunk-2OBUSQA7.js.map} +1 -1
  8. package/dist/chunk-3GNYPM6J.js +1 -0
  9. package/dist/chunk-3GNYPM6J.js.map +1 -0
  10. package/dist/{chunk-A6OINYNP.js → chunk-3WGXGBW5.js} +1 -1
  11. package/dist/{chunk-ABSDZINM.js → chunk-5YEHJM6V.js} +1 -1
  12. package/dist/{chunk-ABSDZINM.js.map → chunk-5YEHJM6V.js.map} +1 -1
  13. package/dist/{chunk-7S7ZTZZY.js → chunk-7EWZGDWY.js} +1 -1
  14. package/dist/chunk-A7IVMYNF.js +1 -0
  15. package/dist/chunk-A7IVMYNF.js.map +1 -0
  16. package/dist/{chunk-KPJ77VPS.js → chunk-BJU27V6C.js} +1 -1
  17. package/dist/{chunk-KPJ77VPS.js.map → chunk-BJU27V6C.js.map} +1 -1
  18. package/dist/chunk-C3LLPLLD.js +1 -0
  19. package/dist/chunk-C3LLPLLD.js.map +1 -0
  20. package/dist/chunk-DAQ3PJ4R.js +1 -0
  21. package/dist/chunk-DAQ3PJ4R.js.map +1 -0
  22. package/dist/chunk-DHACRCLI.js +1 -0
  23. package/dist/chunk-DHACRCLI.js.map +1 -0
  24. package/dist/chunk-EHFHRQEP.js +1 -0
  25. package/dist/{chunk-LOWDDWDT.js.map → chunk-EHFHRQEP.js.map} +1 -1
  26. package/dist/{chunk-YCGISPDR.js → chunk-ETWMPMZP.js} +1 -1
  27. package/dist/chunk-FJIWJYKO.js +1 -0
  28. package/dist/chunk-FJIWJYKO.js.map +1 -0
  29. package/dist/chunk-GIGRBFIJ.js +1 -0
  30. package/dist/{chunk-MGRDB2BZ.js.map → chunk-GIGRBFIJ.js.map} +1 -1
  31. package/dist/{chunk-4CBMQULR.js → chunk-IMNOEFUE.js} +1 -1
  32. package/dist/{chunk-4CBMQULR.js.map → chunk-IMNOEFUE.js.map} +1 -1
  33. package/dist/chunk-IN36YSS4.js +1 -0
  34. package/dist/chunk-IN36YSS4.js.map +1 -0
  35. package/dist/chunk-IUSMAX5T.js +1 -0
  36. package/dist/{chunk-6GJHUWMO.js.map → chunk-IUSMAX5T.js.map} +1 -1
  37. package/dist/{chunk-XQJERZUS.js → chunk-JCYOE3C4.js} +1 -1
  38. package/dist/{chunk-XQJERZUS.js.map → chunk-JCYOE3C4.js.map} +1 -1
  39. package/dist/chunk-LWNBWRKL.js +1 -0
  40. package/dist/{chunk-B7EYTZRK.js.map → chunk-LWNBWRKL.js.map} +1 -1
  41. package/dist/chunk-M6J7KP7G.js +1 -0
  42. package/dist/chunk-M6J7KP7G.js.map +1 -0
  43. package/dist/chunk-MT5AHPNP.js +1 -0
  44. package/dist/{chunk-3CKWT2F3.js.map → chunk-MT5AHPNP.js.map} +1 -1
  45. package/dist/chunk-OLKOWR7S.js +1 -0
  46. package/dist/chunk-OLKOWR7S.js.map +1 -0
  47. package/dist/chunk-QJECDMQQ.js +1 -0
  48. package/dist/{chunk-LZYHBFJC.js.map → chunk-QJECDMQQ.js.map} +1 -1
  49. package/dist/chunk-SC4MEHVY.js +1 -0
  50. package/dist/chunk-SC4MEHVY.js.map +1 -0
  51. package/dist/chunk-T7IQHFQ2.js +1 -0
  52. package/dist/chunk-T7IQHFQ2.js.map +1 -0
  53. package/dist/chunk-W5ULI75F.js +1 -0
  54. package/dist/chunk-W5ULI75F.js.map +1 -0
  55. package/dist/chunk-WV7QCDL5.js +1 -0
  56. package/dist/chunk-WV7QCDL5.js.map +1 -0
  57. package/dist/{chunk-SDXUPP4P.js → chunk-XSLPWM5N.js} +1 -1
  58. package/dist/{chunk-S3MONE55.js → chunk-YJAH6DFY.js} +1 -1
  59. package/dist/chunk-YJAH6DFY.js.map +1 -0
  60. package/dist/chunk-ZZTDEDXJ.js +1 -0
  61. package/dist/{chunk-FA5JVXVG.js.map → chunk-ZZTDEDXJ.js.map} +1 -1
  62. package/dist/equipment/engineering.d.ts +53 -1
  63. package/dist/equipment/engineering.js +1 -1
  64. package/dist/equipment/index.d.ts +13 -2
  65. package/dist/equipment/index.js +1 -1
  66. package/dist/equipment/modification-journal.js +1 -1
  67. package/dist/equipment/modifications.d.ts +32 -9
  68. package/dist/equipment/modifications.js +1 -1
  69. package/dist/equipment/suits.d.ts +32 -2
  70. package/dist/equipment/suits.js +1 -1
  71. package/dist/equipment/upgrade-costs.js +1 -1
  72. package/dist/equipment/weapons.d.ts +16 -2
  73. package/dist/equipment/weapons.js +1 -1
  74. package/dist/i18n/index.d.ts +76 -0
  75. package/dist/i18n/index.js +1 -1
  76. package/dist/i18n/modules.d.ts +10 -7
  77. package/dist/i18n/modules.js +1 -1
  78. package/dist/i18n/personal-modifications.d.ts +68 -0
  79. package/dist/i18n/personal-modifications.js +1 -0
  80. package/dist/i18n/personal-modifications.js.map +1 -0
  81. package/dist/i18n/personal-weapons.d.ts +33 -0
  82. package/dist/i18n/personal-weapons.js +1 -0
  83. package/dist/i18n/personal-weapons.js.map +1 -0
  84. package/dist/i18n/pre-engineered.js +1 -1
  85. package/dist/i18n/suits.d.ts +59 -0
  86. package/dist/i18n/suits.js +1 -0
  87. package/dist/i18n/suits.js.map +1 -0
  88. package/dist/materials/index.js +1 -1
  89. package/dist/materials/micro-resources-all.js +1 -1
  90. package/dist/materials/micro-resources.js +1 -1
  91. package/dist/ships/blueprint-costs.js +1 -1
  92. package/dist/ships/blueprint-journal.js +1 -1
  93. package/dist/ships/build-metrics.js +1 -1
  94. package/dist/ships/engineering-options.d.ts +2 -2
  95. package/dist/ships/engineering-options.js +1 -1
  96. package/dist/ships/engineering.js +1 -1
  97. package/dist/ships/index.d.ts +5 -5
  98. package/dist/ships/index.js +1 -1
  99. package/dist/ships/loadout-calculations.d.ts +11 -2
  100. package/dist/ships/loadout-calculations.js +1 -1
  101. package/dist/ships/loadout-validation.d.ts +7 -2
  102. package/dist/ships/loadout-validation.js +1 -1
  103. package/dist/ships/modules-all.d.ts +2 -2
  104. package/dist/ships/modules-all.js +1 -1
  105. package/dist/ships/modules-core.d.ts +3 -3
  106. package/dist/ships/modules-core.js +1 -1
  107. package/dist/ships/modules-hardpoint.d.ts +1 -1
  108. package/dist/ships/modules-internal.d.ts +17 -6
  109. package/dist/ships/modules-internal.js +1 -1
  110. package/dist/ships/modules-utility.d.ts +1 -1
  111. package/dist/ships/modules.d.ts +14 -7
  112. package/dist/ships/modules.js +1 -1
  113. package/dist/ships/pre-engineered-stats.js +1 -1
  114. package/dist/ships/pre-engineered.js +1 -1
  115. package/dist/ships/shield-capacitor.js +1 -1
  116. package/dist/ships/ship-loadout.d.ts +71 -23
  117. package/dist/ships/ship-loadout.js +1 -1
  118. package/dist/ships/weapons.js +1 -1
  119. package/package.json +13 -1
  120. package/dist/chunk-3CKWT2F3.js +0 -1
  121. package/dist/chunk-3P455LF4.js +0 -1
  122. package/dist/chunk-3P455LF4.js.map +0 -1
  123. package/dist/chunk-5QSCLEEB.js +0 -1
  124. package/dist/chunk-5QSCLEEB.js.map +0 -1
  125. package/dist/chunk-6GJHUWMO.js +0 -1
  126. package/dist/chunk-B7EYTZRK.js +0 -1
  127. package/dist/chunk-C5HG4GJI.js +0 -1
  128. package/dist/chunk-C5HG4GJI.js.map +0 -1
  129. package/dist/chunk-DCB4COCL.js +0 -1
  130. package/dist/chunk-DCB4COCL.js.map +0 -1
  131. package/dist/chunk-E3AUKPSQ.js +0 -1
  132. package/dist/chunk-E3AUKPSQ.js.map +0 -1
  133. package/dist/chunk-FA5JVXVG.js +0 -1
  134. package/dist/chunk-GISL7YML.js +0 -1
  135. package/dist/chunk-GISL7YML.js.map +0 -1
  136. package/dist/chunk-KLC5XT6F.js +0 -1
  137. package/dist/chunk-KLC5XT6F.js.map +0 -1
  138. package/dist/chunk-LOWDDWDT.js +0 -1
  139. package/dist/chunk-LZYHBFJC.js +0 -1
  140. package/dist/chunk-MGRDB2BZ.js +0 -1
  141. package/dist/chunk-NBLLW7TH.js +0 -1
  142. package/dist/chunk-NBLLW7TH.js.map +0 -1
  143. package/dist/chunk-OJC6AUL7.js +0 -1
  144. package/dist/chunk-OJC6AUL7.js.map +0 -1
  145. package/dist/chunk-S3MONE55.js.map +0 -1
  146. /package/dist/{chunk-A6OINYNP.js.map → chunk-3WGXGBW5.js.map} +0 -0
  147. /package/dist/{chunk-7S7ZTZZY.js.map → chunk-7EWZGDWY.js.map} +0 -0
  148. /package/dist/{chunk-YCGISPDR.js.map → chunk-ETWMPMZP.js.map} +0 -0
  149. /package/dist/{chunk-SDXUPP4P.js.map → chunk-XSLPWM5N.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/modules-internal.ts"],"names":["buildModuleCatalogue","modules_internal_default","INTERNAL_MODULES"],"mappings":"O,q6+HAsCO,IAAME,iBAAgDF,qBACzDC,yBACA,mBACJC"}
1
+ {"version":3,"sources":["../src/ships/modules-internal.ts"],"names":["buildModuleCatalogue","modules_internal_default","INTERNAL_MODULES"],"mappings":"O,q0/HAiDO,IAAME,iBAAgDF,qBACzDC,yBACA,mBACJC"}
@@ -0,0 +1 @@
1
+ import{builtInModuleBySymbol,getModuleBySymbol}from"./chunk-5YEHJM6V.js";import{getPreEngineeredVariants}from"./chunk-BJU27V6C.js";import{ALL_MODULES}from"./chunk-MT5AHPNP.js";import{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"./chunk-77I24V6B.js";import{fieldForLabel,damageTypeForLabel,capabilityValueForLabel,baseStats,computeModifiers,labelsForDamageType,scaleForLabel}from"./chunk-A7IVMYNF.js";import{round6,burstPartOrOne,float32FiringCycle,float32RateOfFire,preciseModifierValue,BURST_PATTERN_LABELS,journalRateOfFire,preciseValueFor}from"./chunk-EFQOUATZ.js";import{resolveBlueprintForModule}from"./chunk-XSLPWM5N.js";import{getBlueprintGrade,getBlueprint,BLUEPRINTS}from"./chunk-AYAKU4YA.js";import{getBlueprintsForModule,getExperimentalsForModule,getEngineeringGroup}from"./chunk-EHFHRQEP.js";import{normalizeKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";function scaleDamageComponents(components,baseDamage,effectiveDamage){const scale=baseDamage!==void 0&&baseDamage!==0&&effectiveDamage!==void 0?effectiveDamage/baseDamage:1;return{...components.kinetic===void 0?{}:{kinetic:components.kinetic*scale},...components.thermal===void 0?{}:{thermal:components.thermal*scale},...components.explosive===void 0?{}:{explosive:components.explosive*scale},...components.absolute===void 0?{}:{absolute:components.absolute*scale},...components.antiXeno===void 0?{}:{antiXeno:components.antiXeno*scale},...components.unclassified===void 0?{}:{unclassified:components.unclassified.map(value=>value*scale)}}}function fixedModifierFeatures(modifiers){return modifiers.map(modifier=>({label:modifier.label,method:modifier.method,min:modifier.value,max:modifier.value}))}var FITTED_ITEM="ShipLoadout: fitted module Item";function isNonOutfittingSlot(slotKey){return/^(paintjob|shipname\d+|shipid\d+|bobble\d+|decal\d+|shipkit.+|weaponcolour|enginecolour|vesselvoice|shipcockpit|stringlights)$/i.test(slotKey)}function isCargoHatchSlot(slotKey){return slotKey.toLowerCase()==="cargohatch"}var BUILT_IN_HULL_SYMBOL="ModularCargoBayDoor";function isBuiltInHullSymbol(symbol){return symbol.toLowerCase().startsWith(BUILT_IN_HULL_SYMBOL.toLowerCase())}function isBuiltInHullModule(module){return isCargoHatchSlot(module.Slot)&&isBuiltInHullSymbol(module.Item)}function cloneLoadoutModule(module){return{Slot:module.Slot,Item:module.Item,...module.On===void 0?{}:{On:module.On},...module.Priority===void 0?{}:{Priority:module.Priority},...module.Health===void 0?{}:{Health:module.Health},...module.Value===void 0?{}:{Value:module.Value},...module.Engineering===void 0?{}:{Engineering:{BlueprintName:module.Engineering.BlueprintName,Level:module.Engineering.Level,Quality:module.Engineering.Quality,...module.Engineering.ExperimentalEffect===void 0?{}:{ExperimentalEffect:module.Engineering.ExperimentalEffect},...module.Engineering.ExperimentalEffect_Localised===void 0?{}:{ExperimentalEffect_Localised:module.Engineering.ExperimentalEffect_Localised},...module.Engineering.Modifiers===void 0?{}:{Modifiers:module.Engineering.Modifiers.map(modifier=>({...modifier}))}}}}}function matchingKeyIn(keyed,slotKey){if(keyed.has(slotKey))return slotKey;const wanted=slotKey.toLowerCase();for(const key of keyed.keys()){if(key.toLowerCase()===wanted)return key}return null}function ownKeyIn(keyed,canonicalKey){return matchingKeyIn(keyed,canonicalKey)??(keyed.size>0&&[...keyed.keys()].every(key=>key===key.toLowerCase())?canonicalKey.toLowerCase():canonicalKey)}function orderBySlotLayout(values,layout,slotOf){const order=new Map(layout.map((slot,index)=>[slot.key.toLowerCase(),index]));return[...values].sort((left,right)=>(order.get(slotOf(left).toLowerCase())??Number.MAX_SAFE_INTEGER)-(order.get(slotOf(right).toLowerCase())??Number.MAX_SAFE_INTEGER))}function cloneModuleStats(module){try{return deepFreeze(structuredClone(module))}catch(error){if(!(error instanceof Error&&error.name==="DataCloneError"))throw error;return deepFreeze({...module,...module.restrictedToShips===void 0?{}:{restrictedToShips:[...module.restrictedToShips]},...module.limitIncrease===void 0?{}:{limitIncrease:{...module.limitIncrease}},...module.damageDistribution===void 0?{}:{damageDistribution:{...module.damageDistribution}},...module.damageComponents===void 0?{}:{damageComponents:{...module.damageComponents,...module.damageComponents.unclassified===void 0?{}:{unclassified:[...module.damageComponents.unclassified]}}},...module.projectileRange===void 0?{}:{projectileRange:{...module.projectileRange}}})}}var GUARDIAN_WEAPON_GROUPS=/* @__PURE__ */new Set(["guardianGauss","guardianPlasma","guardianShard"]);function missingBaseLabels(stats,base,features,experimental){const contributions=[...features,...experimental??[]];return[...new Set(contributions.map(contribution=>contribution.label).filter(label=>{if(base[label]!==void 0)return false;return fieldForLabel(label,stats)===null}))]}function recipeSignature(blueprintSymbol){const blueprint=getBlueprint(blueprintSymbol);if(!blueprint)return null;const grades=Object.entries(blueprint.grades).map(([grade,{features:features}])=>`${grade}:${features.map(feature=>`${feature.label}/${feature.method??""}`).sort().join(",")}`).sort().join(";");return`${blueprint.name.toLowerCase()}|${grades}`}var isGenericSpelling=blueprintSymbol=>blueprintSymbol.toLowerCase().startsWith("misc_");function isSoldWithBlueprint(item,wanted){return getPreEngineeredVariants(item).some(variant=>variant.acquisition==="mercenary"&&variant.blueprintSymbol.toLowerCase()===wanted)}function blueprintRoutesFor(item){const routes=/* @__PURE__ */new Map;for(const blueprintSymbol of getBlueprintsForModule(item))routes.set(blueprintSymbol,"ordinary");for(const variant of getPreEngineeredVariants(item)){if(variant.acquisition==="mercenary"&&!routes.has(variant.blueprintSymbol)){routes.set(variant.blueprintSymbol,"mercenary")}}return routes}function blueprintAvailableFor(item,blueprintSymbol){const offered=getBlueprintsForModule(item);const asWritten=normalizeKey(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");const resolved=resolveBlueprintForModule(item,blueprintSymbol).trim();const wanted=resolved.toLowerCase();if(offered.some(id=>id.toLowerCase()===wanted))return true;if(isSoldWithBlueprint(item,wanted)||isSoldWithBlueprint(item,asWritten))return true;if(!isGenericSpelling(wanted))return false;const signature=recipeSignature(resolved);if(signature===null)return false;return offered.some(id=>recipeSignature(id)===signature&&!isGenericSpelling(id))}function experimentalAvailableFor(item,experimentalEffectSymbol){const wanted=normalizeKey(experimentalEffectSymbol,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");return getExperimentalsForModule(item).some(id=>id.toLowerCase()===wanted)}function primitiveLabelFor(stats,label){if(label==="MaximumRange"&&stats.maximumRange!==void 0)return"Range";if(label==="DamageFalloffRange"&&stats.falloffRange!==void 0){return"FalloffRange"}if(label==="Range"&&stats.scannerRange!==void 0)return"ScannerRange";if(label==="DSS_PatchRadius")return"ProbeRadius";if(label==="FuelScoopRate")return"RefuelRate";if(label==="EnergyPerRegen"&&stats.shieldRegenRate!==void 0){return"DistributorDraw"}return label}function primitiveEngineeringInputsFor(stats,grade,experimental){const canonicalGrade={...grade,features:grade.features.map(feature=>{const label=primitiveLabelFor(stats,feature.label);return label===feature.label?feature:{...feature,label:label}})};if(!experimental)return{grade:canonicalGrade};return{grade:canonicalGrade,experimental:{...experimental,modifiers:experimental.modifiers.map(modifier=>{const label=primitiveLabelFor(stats,modifier.label);return label===modifier.label?modifier:{...modifier,label:label}})}}}function matchesCalculatedModifiers(captured,calculated){if(!captured||captured.length!==calculated.length)return false;const byLabel=new Map(captured.map(modifier=>[modifier.Label.trim().toLowerCase(),modifier]));if(byLabel.size!==captured.length)return false;return calculated.every(expected=>{const actual=byLabel.get(expected.Label.trim().toLowerCase());if(!actual)return false;if(expected.Value!==void 0){return actual.Value!==void 0&&Math.abs(actual.Value-expected.Value)<=1e-5*Math.max(1,Math.abs(expected.Value))}return actual.ValueStr===expected.ValueStr})}function identityArticles(item,engineering){if(engineering.Modifiers!==void 0||typeof engineering.BlueprintName!=="string"){return[]}const wanted=engineering.BlueprintName.trim().toLowerCase();const experimental=engineering.ExperimentalEffect?.trim().toLowerCase();return getPreEngineeredVariants(item).filter(candidate=>candidate.blueprintSymbol.trim().toLowerCase()===wanted&&candidate.grade===engineering.Level&&(candidate.experimentalEffectSymbol===void 0?experimental===void 0&&engineering.ExperimentalEffect_Localised===void 0:candidate.experimentalEffectSymbol.trim().toLowerCase()===experimental))}function unrollableFixedArticle(item,engineering){const matches=identityArticles(item,engineering).filter(candidate=>!blueprintAvailableFor(item,candidate.blueprintSymbol));return matches.length===1?matches[0]:null}function rolledOverFixedArticle(item,engineering){const matches=identityArticles(item,engineering).filter(candidate=>blueprintAvailableFor(item,candidate.blueprintSymbol));return matches.length===1?matches[0]:null}function statesInertModifiers(stats,modifiers){return modifiers.every(modifier=>{if(damageTypeForLabel(modifier.Label)!==null||capabilityValueForLabel(modifier.Label)!==null){return false}const field=fieldForLabel(modifier.Label,stats);return field===null||typeof stats[field]!=="number"})}function ordinaryEngineeringProof(item,engineering,experimental){const recipe=resolveBlueprintForModule(item,engineering.BlueprintName);const fixedCandidate=getPreEngineeredVariants(item).some(candidate=>candidate.acquisition!=="mercenary"&&candidate.blueprintSymbol.trim().toLowerCase()===recipe.trim().toLowerCase());if(!fixedCandidate)return"notFixedCandidate";const grade=getBlueprintGrade(recipe,engineering.Level);const quality=engineering.Quality;const stock=builtInModuleBySymbol(item,FITTED_ITEM);if(!stock||!grade||experimental===null||!Number.isFinite(quality)||quality<0||quality>1){return"unproven"}const current=primitiveEngineeringInputsFor(stock,grade,experimental);if(missingBaseLabels(stock,baseStats(stock),current.grade.features,current.experimental?.modifiers).length>0){return"unproven"}const calculated=journalModifiersFor(stock,computeModifiers(baseStats(stock),current.grade,quality,current.experimental));const damageDistribution=current.experimental?.damageDistribution??current.grade.damageDistribution;if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;calculated.push({Label:label,Value:value*scaleForLabel(label),OriginalValue:(stock.damageDistribution?.[type]??0)*scaleForLabel(label)})}}return matchesCalculatedModifiers(engineering.Modifiers,calculated)?"proven":"unproven"}function float32DamagePerSecond(damage,rounds,rate,burstRounds,cycle){if(cycle!==void 0&&(rounds!==1||burstRounds!==1)){const damagePerCycle=Math.fround(Math.fround(Math.fround(damage)*Math.fround(rounds))*Math.fround(burstRounds));return Math.fround(damagePerCycle/cycle)}return Math.fround(Math.fround(Math.fround(damage)*Math.fround(rounds))*Math.fround(rate))}var JOURNAL_MODIFIER_ORDER=["CargoCapacity","GuardianModuleResistance","Mass","Integrity","PowerDraw","BootTime","PowerCapacity","HeatEfficiency","FSDOptimalMass","MaxFuelPerJump","FSDHeatRate","EngineOptimalMass","EngineOptPerformance","EngineHeatRate","ShieldGenOptimalMass","ShieldGenStrength","DamagePerSecond","Damage","DistributorDraw","ThermalLoad","ArmourPenetration","MaximumRange","ShotSpeed","RateOfFire","DamageType","$Kinetic;","$Thermal;","$Explosive;","$Absolute;","AmmoClipSize","AmmoMaximum","ReloadTime","Jitter","DamageFalloffRange","DefenceModifierShieldMultiplier","DefenceModifierHealthMultiplier","DefenceModifierHealthAddition","DefenceModifierShieldAddition","RegenRate","BrokenRegenRate","EnergyPerRegen","KineticResistance","ThermicResistance","ExplosiveResistance","CausticResistance","DamageProtection","ModuleDefenceAbsorption","WeaponsCapacity","WeaponsRecharge","EnginesCapacity","EnginesRecharge","SystemsCapacity","SystemsRecharge","ShieldBankSpinUp","ShieldBankDuration","ShieldBankReinforcement","ShieldBankHeat","FSDInterdictorRange","FSDInterdictorFacingLimit","SensorTargetScanAngle","MaxAngle","ScannerTimeToScan","Range","DSS_PatchRadius","FuelScoopRate","FuelCapacity"];var JOURNAL_MODIFIER_RANK=new Map(JOURNAL_MODIFIER_ORDER.map((label,index)=>[label,index]));function sortJournalModifiers(modifiers){return modifiers.map((modifier,index)=>({modifier:modifier,index:index})).sort((a,b)=>(JOURNAL_MODIFIER_RANK.get(a.modifier.Label)??JOURNAL_MODIFIER_ORDER.length)-(JOURNAL_MODIFIER_RANK.get(b.modifier.Label)??JOURNAL_MODIFIER_ORDER.length)||a.index-b.index).map(({modifier:modifier})=>modifier)}function journalModifiersFor(stats,modifiers){const weapon=stats.damage!==void 0;const valueFor=(label,fallback)=>{const modifier=modifiers.find(candidate=>candidate.Label===label);return(modifier&&preciseModifierValue(modifier))??Math.fround(fallback)};const burstTouched=["BurstInterval","BurstSize","BurstRateOfFire"].some(label=>modifiers.some(modifier=>modifier.Label===label));const damageTouched=modifiers.some(modifier=>modifier.Label==="Damage");const rateTouched=burstTouched||modifiers.some(modifier=>modifier.Label==="RateOfFire");let damagePerSecond;let derivedRate;if(weapon&&(damageTouched||rateTouched)){const continuous=stats.burstInterval===void 0&&stats.rateOfFire===void 0;const baseDamage=Math.fround(stats.damage);const effectiveDamage=valueFor("Damage",stats.damage);if(continuous){damagePerSecond={Label:"DamagePerSecond",Value:round6(effectiveDamage),OriginalValue:round6(baseDamage)}}else{const burstRounds=burstPartOrOne(valueFor("BurstSize",stats.burstRounds??1));const burstRate=burstPartOrOne(valueFor("BurstRateOfFire",stats.burstRateOfFire??1));const baseBurstRounds=Math.fround(burstPartOrOne(stats.burstRounds));const baseBurstRate=Math.fround(burstPartOrOne(stats.burstRateOfFire));const baseInterval=stats.burstInterval===void 0?void 0:Math.fround(stats.burstInterval);const baseCycle=baseInterval===void 0?void 0:float32FiringCycle(baseInterval,baseBurstRounds,baseBurstRate);const baseRate=baseInterval!==void 0?float32RateOfFire(baseInterval,baseBurstRounds,baseBurstRate):stats.rateOfFire===void 0?void 0:Math.fround(stats.rateOfFire);const rateModifier=modifiers.find(modifier=>modifier.Label==="RateOfFire");const effectiveRate=rateModifier&&preciseModifierValue(rateModifier);const effectiveInterval=valueFor("BurstInterval",stats.burstInterval??0);const effectiveCycle=effectiveRate===void 0?float32FiringCycle(effectiveInterval,burstRounds,burstRate):void 0;const rate=effectiveRate??(effectiveCycle===void 0?void 0:Math.fround(Math.fround(burstRounds)/effectiveCycle));if(baseRate!==void 0&&rate!==void 0){const stockRounds=Math.fround(stats.roundsPerShot??1);const effectiveRounds=Math.fround(modifiers.find(modifier=>modifier.Label==="Rounds"||modifier.Label==="RoundsPerShot")?.Value??stockRounds);damagePerSecond={Label:"DamagePerSecond",Value:round6(float32DamagePerSecond(effectiveDamage,effectiveRounds,rate,burstRounds,effectiveCycle)),OriginalValue:round6(float32DamagePerSecond(baseDamage,stockRounds,baseRate,baseBurstRounds,baseCycle))};if(burstTouched){derivedRate={Label:"RateOfFire",Value:round6(rate),OriginalValue:round6(baseRate)}}}}}const result=[];for(const modifier of modifiers){const label=modifier.Label;if(weapon&&["BurstInterval","BurstSize","BurstRateOfFire"].includes(label))continue;if(weapon&&label==="Damage"&&stats.rateOfFire===void 0)continue;let journalLabel=label;if(label==="Range"&&stats.maximumRange!==void 0)journalLabel="MaximumRange";else if(label==="FalloffRange"&&stats.falloffRange!==void 0){journalLabel="DamageFalloffRange"}else if(label==="ScannerRange"&&stats.scannerRange!==void 0){journalLabel="Range"}else if(label==="ProbeRadius")journalLabel="DSS_PatchRadius";else if(label==="RefuelRate")journalLabel="FuelScoopRate";else if(label==="DistributorDraw"&&stats.shieldRegenRate!==void 0){journalLabel="EnergyPerRegen"}result.push(journalLabel===label?modifier:{...modifier,Label:journalLabel})}if(damagePerSecond)result.push(damagePerSecond);if(derivedRate){const direct=result.findIndex(modifier=>modifier.Label==="RateOfFire");if(direct>=0)result[direct]=derivedRate;else result.push(derivedRate)}return sortJournalModifiers(result)}function isFinalGuardianWeaponEngineering(item,blueprint){const group=getEngineeringGroup(item);if(group===null||!GUARDIAN_WEAPON_GROUPS.has(group))return false;const resolved=resolveBlueprintForModule(item,blueprint);return getBlueprint(resolved)!==null&&!blueprintAvailableFor(item,blueprint)}function engineerableBase(item,statsOverride){const stats=statsOverride??builtInModuleBySymbol(item,FITTED_ITEM);if(!stats||stats.engineeringLocked)return null;return{stats:stats,base:baseStats(stats)}}function availableBlueprintsFor(item,statsOverride){const engineerable=engineerableBase(item,statsOverride);if(!engineerable)return[];const{stats:stats,base:base}=engineerable;const available=[];for(const[blueprintSymbol,route]of blueprintRoutesFor(item)){const blueprint=BLUEPRINTS[blueprintSymbol];if(!blueprint)continue;const grades=Object.entries(blueprint.grades).filter(([,grade])=>missingBaseLabels(stats,base,grade.features).length===0).map(([grade])=>Number(grade)).filter(Number.isFinite).sort((a,b)=>a-b);if(grades.length>0)available.push({blueprintSymbol:blueprintSymbol,grades:grades,route:route})}return available}function availableExperimentalsFor(item,statsOverride){const engineerable=engineerableBase(item,statsOverride);if(!engineerable)return[];const{stats:stats,base:base}=engineerable;return getExperimentalsForModule(item).filter(experimentalEffectSymbol=>{const effect=EXPERIMENTAL_EFFECTS[experimentalEffectSymbol];return effect!==void 0&&missingBaseLabels(stats,base,effect.modifiers).length===0})}var MAX_ENGINEERING_GRADE=5;function modifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);const effectName=experimental===void 0?variant.experimentalEffectSymbol:experimental;if(!module||!variant.modifiers?.length&&effectName==null)return null;const effect=effectName==null?void 0:getExperimentalEffect(effectName);if(effectName!==null&&effectName!==void 0&&!effect)return null;return computeModifiers(baseStats(module),fixedModifierFeatures(variant.modifiers??[]),1,effect??void 0)}function getPreEngineeredModifiers(variant){return modifiersWithExperimental(variant)??[]}function journalModifiersWithExperimental(variant,experimental){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return[];const modifiers=journalModifiersFor(module,modifiersWithExperimental(variant,experimental)??[]);const effectName=experimental===void 0?variant.experimentalEffectSymbol:experimental;const damageDistribution=effectName?getExperimentalEffect(effectName)?.damageDistribution:void 0;if(!damageDistribution)return modifiers;for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];const label=labelsForDamageType(type)[0];if(value===void 0||label===void 0)continue;modifiers.push({Label:label,Value:value*scaleForLabel(label),OriginalValue:(module.damageDistribution?.[type]??0)*scaleForLabel(label)})}return modifiers}function getPreEngineeredJournalModifiers(variant){return journalModifiersWithExperimental(variant)}function sameJournalNumber(actual,expected,base){return Math.abs(actual-expected)<=Math.max(1e-5,Math.abs(base)*1e-4,Math.abs(expected)*1e-6)}function modifierKey(modifier,module){return fieldForLabel(modifier.Label,module)??`label:${normalizeKey(modifier.Label,"identifyPreEngineeredVariant: module.Engineering.Modifiers[].Label")}`}function sameModifier(actual,expected){if(expected.Value!==void 0){return actual.Value!==void 0&&sameJournalNumber(actual.Value,expected.Value,expected.OriginalValue??expected.Value)}return expected.ValueStr!==void 0&&actual.ValueStr!==void 0}function matchesModifierSignature(actualByKey,expected,module){let matched=0;for(const predicted of expected){const actual=actualByKey.get(modifierKey(predicted,module));if(!actual)continue;if(!sameModifier(actual,predicted))return false;matched++}return matched>=Math.max(1,expected.length-1)}function identifyPreEngineeredVariant(module){const engineering=module.Engineering;if(!engineering)return null;requireStringIfPresent(module.Item,"identifyPreEngineeredVariant: module.Item");const stock=getModuleBySymbol(module.Item,ALL_MODULES);if(!stock)return null;const capturedBlueprint=normalizeKey(engineering.BlueprintName,"identifyPreEngineeredVariant: module.Engineering.BlueprintName");const variants=getPreEngineeredVariants(module.Item);const blueprintMatches=variants.filter(candidate=>candidate.blueprintSymbol.toLowerCase()===capturedBlueprint);const blueprintMatch=blueprintMatches.length===1?blueprintMatches[0]:null;const capturedGrade=engineering.Level;if(blueprintMatch?.acquisition==="mercenary"&&Number.isInteger(capturedGrade)&&capturedGrade>=blueprintMatch.grade&&capturedGrade<=MAX_ENGINEERING_GRADE){return blueprintMatch}if(engineering.Modifiers===void 0){const capturedExperimental=normalizeKey(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const identityMatches=blueprintMatches.filter(candidate=>candidate.engineeringLocked===true&&candidate.grade===capturedGrade&&(candidate.experimentalEffectSymbol===void 0?capturedExperimental===void 0&&engineering.ExperimentalEffect_Localised===void 0:candidate.experimentalEffectSymbol.toLowerCase()===capturedExperimental));return identityMatches.length===1?identityMatches[0]:null}if(!engineering.Modifiers?.length)return null;const actualByKey=/* @__PURE__ */new Map;for(const modifier of engineering.Modifiers){actualByKey.set(modifierKey(modifier,stock),modifier)}requireStringIfPresent(engineering.ExperimentalEffect,"identifyPreEngineeredVariant: module.Engineering.ExperimentalEffect");const matches=[];for(const candidate of variants){if(!candidate.modifiers?.length)continue;if(candidate.grade!==engineering.Level)continue;if(candidate.acquisition==="eventReward"&&(engineering.ExperimentalEffect!==void 0||engineering.ExperimentalEffect_Localised!==void 0||capturedBlueprint!==candidate.blueprintSymbol.toLowerCase())){continue}const primitive=modifiersWithExperimental(candidate,engineering.ExperimentalEffect??null);if(!primitive?.length)continue;const matched=matchesModifierSignature(actualByKey,primitive,stock)||matchesModifierSignature(actualByKey,journalModifiersWithExperimental(candidate,engineering.ExperimentalEffect??null),stock);if(matched)matches.push(candidate)}return matches.length===1?matches[0]:null}function unresolvedModifiers(variant){const resolved=new Set(getPreEngineeredModifiers(variant).map(modifier=>modifier.Label));return(variant.modifiers??[]).map(modifier=>modifier.label).filter(label=>!resolved.has(label))}function getPreEngineeredStats(variant){const module=getModuleBySymbol(variant.symbol,ALL_MODULES);if(!module)return null;if(!variant.modifiers?.length&&!variant.engineeringLocked&&variant.experimentalEffectSymbol===void 0)return{...module};const applied=getPreEngineeredModifiers(variant);const resolved={...module,...variant.engineeringLocked?{engineeringLocked:true}:{}};for(const{Label:Label,Value:Value,ValueStr:ValueStr}of applied){const field=fieldForLabel(Label,module);if(field&&field!=="damageDistribution"&&Value!==void 0){Object.assign(resolved,{[field]:Value/scaleForLabel(Label)})}else if(field&&ValueStr!==void 0&&capabilityValueForLabel(Label)!==null){Object.assign(resolved,{[field]:true})}}const experimentalDamageDistribution=variant.experimentalEffectSymbol?getExperimentalEffect(variant.experimentalEffectSymbol)?.damageDistribution:void 0;if(experimentalDamageDistribution){resolved.damageDistribution={...experimentalDamageDistribution};delete resolved.damageComponents}if(resolved.rateOfFire!==void 0&&!applied.some(m=>m.Label==="RateOfFire")&&applied.some(m=>BURST_PATTERN_LABELS.some(label=>label===m.Label))){const rate=journalRateOfFire(preciseValueFor(applied,"BurstInterval")??resolved.burstInterval,preciseValueFor(applied,"BurstSize")??resolved.burstRounds,preciseValueFor(applied,"BurstRateOfFire")??resolved.burstRateOfFire);if(rate!==void 0)resolved.rateOfFire=rate}if(module.damageComponents&&!experimentalDamageDistribution){resolved.damageComponents=scaleDamageComponents(module.damageComponents,module.damage,resolved.damage)}return resolved}export{BUILT_IN_HULL_SYMBOL,FITTED_ITEM,availableBlueprintsFor,availableExperimentalsFor,blueprintAvailableFor,blueprintRoutesFor,cloneLoadoutModule,cloneModuleStats,experimentalAvailableFor,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,isBuiltInHullModule,isBuiltInHullSymbol,isCargoHatchSlot,isFinalGuardianWeaponEngineering,isNonOutfittingSlot,journalModifiersFor,matchingKeyIn,missingBaseLabels,orderBySlotLayout,ordinaryEngineeringProof,ownKeyIn,primitiveEngineeringInputsFor,rolledOverFixedArticle,scaleDamageComponents,statesInertModifiers,unresolvedModifiers,unrollableFixedArticle};//# sourceMappingURL=chunk-IN36YSS4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/internal/damage-components.ts","../src/ships/internal/fixed-modifier-features.ts","../src/ships/internal/loadout-state.ts","../src/ships/internal/loadout-engineering.ts","../src/ships/pre-engineered-stats.ts"],"names":["builtInModuleBySymbol","getModuleBySymbol","getPreEngineeredVariants","ALL_MODULES","EXPERIMENTAL_EFFECTS","getExperimentalEffect","fieldForLabel","damageTypeForLabel","capabilityValueForLabel","baseStats","computeModifiers","labelsForDamageType","scaleForLabel","round6","burstPartOrOne","float32FiringCycle","float32RateOfFire","preciseModifierValue","BURST_PATTERN_LABELS","journalRateOfFire","preciseValueFor","resolveBlueprintForModule","getBlueprintGrade","getBlueprint","BLUEPRINTS","getBlueprintsForModule","getExperimentalsForModule","getEngineeringGroup","normalizeKey","requireStringIfPresent","deepFreeze","scaleDamageComponents","components","baseDamage","effectiveDamage","scale","kinetic","thermal","explosive","absolute","antiXeno","unclassified","map","value","fixedModifierFeatures","modifiers","modifier","label","method","min","max","FITTED_ITEM","isNonOutfittingSlot","slotKey","test","isCargoHatchSlot","toLowerCase","BUILT_IN_HULL_SYMBOL","isBuiltInHullSymbol","symbol","startsWith","isBuiltInHullModule","module","Slot","Item","cloneLoadoutModule","On","Priority","Health","Value","Engineering","BlueprintName","Level","Quality","ExperimentalEffect","ExperimentalEffect_Localised","Modifiers","matchingKeyIn","keyed","has","wanted","key","keys","ownKeyIn","canonicalKey","size","every","orderBySlotLayout","values","layout","slotOf","order","Map","slot","index","sort","left","right","get","Number","MAX_SAFE_INTEGER","cloneModuleStats","structuredClone","error","Error","name","restrictedToShips","limitIncrease","damageDistribution","damageComponents","projectileRange","GUARDIAN_WEAPON_GROUPS","Set","missingBaseLabels","stats","base","features","experimental","contributions","contribution","filter","recipeSignature","blueprintSymbol","blueprint","grades","Object","entries","grade","feature","join","isGenericSpelling","isSoldWithBlueprint","item","some","variant","acquisition","blueprintRoutesFor","routes","set","blueprintAvailableFor","offered","asWritten","resolved","trim","id","signature","experimentalAvailableFor","experimentalEffectSymbol","primitiveLabelFor","maximumRange","falloffRange","scannerRange","shieldRegenRate","primitiveEngineeringInputsFor","canonicalGrade","matchesCalculatedModifiers","captured","calculated","length","byLabel","Label","expected","actual","Math","abs","ValueStr","identityArticles","engineering","candidate","unrollableFixedArticle","matches","rolledOverFixedArticle","statesInertModifiers","field","ordinaryEngineeringProof","recipe","fixedCandidate","quality","stock","isFinite","current","journalModifiersFor","type","push","OriginalValue","float32DamagePerSecond","damage","rounds","rate","burstRounds","cycle","damagePerCycle","fround","JOURNAL_MODIFIER_ORDER","JOURNAL_MODIFIER_RANK","sortJournalModifiers","a","b","weapon","valueFor","fallback","find","burstTouched","damageTouched","rateTouched","damagePerSecond","derivedRate","continuous","burstInterval","rateOfFire","burstRate","burstRateOfFire","baseBurstRounds","baseBurstRate","baseInterval","baseCycle","baseRate","rateModifier","effectiveRate","effectiveInterval","effectiveCycle","stockRounds","roundsPerShot","effectiveRounds","result","includes","journalLabel","direct","findIndex","isFinalGuardianWeaponEngineering","group","engineerableBase","statsOverride","engineeringLocked","availableBlueprintsFor","engineerable","available","route","availableExperimentalsFor","effect","MAX_ENGINEERING_GRADE","modifiersWithExperimental","effectName","getPreEngineeredModifiers","journalModifiersWithExperimental","getPreEngineeredJournalModifiers","sameJournalNumber","modifierKey","sameModifier","matchesModifierSignature","actualByKey","matched","predicted","identifyPreEngineeredVariant","capturedBlueprint","variants","blueprintMatches","blueprintMatch","capturedGrade","isInteger","capturedExperimental","identityMatches","primitive","unresolvedModifiers","getPreEngineeredStats","applied","assign","experimentalDamageDistribution","m"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{assertEquipmentGrade}from"./chunk-2W5MW376.js";import{findInKeyIndex,createKeyIndex}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var weapons_default=[{symbol:"wpn_s_pistol_kinetic_sauto",name:"Karma P-15",upgradeGroup:"karma",class:"pistol",slot:"secondary",damageType:"kinetic",fireMode:"semi-automatic",rateOfFire:10,magazineSize:24,reserveAmmo:240,headshotMultiplier:2,effectiveRange:25,scopeMagnification:{default:1.08,upgraded:1.34},grades:{1:{damage:1.38,modificationSlots:0},2:{damage:1.808,modificationSlots:1},3:{damage:2.387,modificationSlots:2},4:{damage:3.133,modificationSlots:3},5:{damage:4.112,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_assaultrifle_kinetic_fauto",name:"Karma AR-50",upgradeGroup:"karma",class:"rifle",slot:"primary",damageType:"kinetic",fireMode:"automatic",rateOfFire:9.52,magazineSize:50,reserveAmmo:250,headshotMultiplier:2,effectiveRange:50,scopeMagnification:{default:1.17,upgraded:1.52},grades:{1:{damage:.95,modificationSlots:0},2:{damage:1.244,modificationSlots:1},3:{damage:1.643,modificationSlots:2},4:{damage:2.156,modificationSlots:3},5:{damage:2.831,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_submachinegun_kinetic_fauto",name:"Karma C-44",upgradeGroup:"karma",class:"carbine",slot:"primary",damageType:"kinetic",fireMode:"automatic",rateOfFire:13.3,magazineSize:45,reserveAmmo:360,headshotMultiplier:2,effectiveRange:25,scopeMagnification:{default:1.12,upgraded:1.41},grades:{1:{damage:.65,modificationSlots:0},2:{damage:.852,modificationSlots:1},3:{damage:1.125,modificationSlots:2},4:{damage:1.476,modificationSlots:3},5:{damage:1.937,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_launcher_rocket_sauto",name:"Karma L-6",upgradeGroup:"karma",class:"launcher",slot:"primary",damageType:"explosive",fireMode:"automatic",rateOfFire:1,magazineSize:2,reserveAmmo:8,headshotMultiplier:1,effectiveRange:300,scopeMagnification:{default:1.08,upgraded:1.52},grades:{1:{damage:40,modificationSlots:0},2:{damage:52.4,modificationSlots:1},3:{damage:69.2,modificationSlots:2},4:{damage:90.8,modificationSlots:3},5:{damage:119.2,modificationSlots:4}},engineeringType:"kinetic"},{symbol:"wpn_m_assaultrifle_laser_fauto",name:"TK Aphelion",upgradeGroup:"takada",class:"rifle",slot:"primary",damageType:"thermal",fireMode:"automatic",rateOfFire:5.71,magazineSize:25,reserveAmmo:150,headshotMultiplier:1,effectiveRange:70,scopeMagnification:{default:1.17,upgraded:1.52},grades:{1:{damage:1.572,modificationSlots:0},2:{damage:2.059,modificationSlots:1},3:{damage:2.72,modificationSlots:2},4:{damage:3.568,modificationSlots:3},5:{damage:4.685,modificationSlots:4}},engineeringType:"laser"},{symbol:"wpn_m_submachinegun_laser_fauto",name:"TK Eclipse",upgradeGroup:"takada",class:"carbine",slot:"primary",damageType:"thermal",fireMode:"automatic",rateOfFire:10,magazineSize:45,reserveAmmo:315,headshotMultiplier:1,effectiveRange:25,scopeMagnification:{default:1.12,upgraded:1.41},grades:{1:{damage:.85,modificationSlots:0},2:{damage:1.113,modificationSlots:1},3:{damage:1.47,modificationSlots:2},4:{damage:1.929,modificationSlots:3},5:{damage:2.533,modificationSlots:4}},engineeringType:"laser"},{symbol:"wpn_s_pistol_laser_sauto",name:"TK Zenith",upgradeGroup:"takada",class:"pistol",slot:"secondary",damageType:"thermal",fireMode:"burst",rateOfFire:2.78,magazineSize:18,reserveAmmo:180,headshotMultiplier:1,effectiveRange:35,scopeMagnification:{default:1.08,upgraded:1.34},grades:{1:{damage:1.668,modificationSlots:0},2:{damage:2.185,modificationSlots:1},3:{damage:2.886,modificationSlots:2},4:{damage:3.786,modificationSlots:3},5:{damage:4.971,modificationSlots:4}},engineeringType:"laser"},{symbol:"wpn_m_sniper_plasma_charged",name:"Manticore Executioner",upgradeGroup:"manticore",class:"sniper",slot:"primary",damageType:"plasma",fireMode:"semi-automatic",rateOfFire:.833,magazineSize:3,reserveAmmo:30,headshotMultiplier:3,effectiveRange:100,scopeMagnification:{default:1.61,upgraded:3.75},grades:{1:{damage:15,modificationSlots:0},2:{damage:19.65,modificationSlots:1},3:{damage:25.95,modificationSlots:2},4:{damage:34.05,modificationSlots:3},5:{damage:44.7,modificationSlots:4}},engineeringType:"plasma"},{symbol:"wpn_s_pistol_plasma_charged",name:"Manticore Tormentor",upgradeGroup:"manticore",class:"pistol",slot:"secondary",damageType:"plasma",fireMode:"semi-automatic",rateOfFire:1.67,magazineSize:6,reserveAmmo:72,headshotMultiplier:2,effectiveRange:15,scopeMagnification:{default:1.08,upgraded:1.61},grades:{1:{damage:7.5,modificationSlots:0},2:{damage:9.825,modificationSlots:1},3:{damage:12.975,modificationSlots:2},4:{damage:17.025,modificationSlots:3},5:{damage:22.35,modificationSlots:4}},engineeringType:"plasma"},{symbol:"wpn_m_shotgun_plasma_doublebarrel",name:"Manticore Intimidator",upgradeGroup:"manticore",class:"shotgun",slot:"primary",damageType:"plasma",fireMode:"semi-automatic",rateOfFire:1.25,magazineSize:2,reserveAmmo:24,headshotMultiplier:1.5,effectiveRange:7,scopeMagnification:{default:1.08,upgraded:1.25},grades:{1:{damage:1.75,modificationSlots:0},2:{damage:2.292,modificationSlots:1},3:{damage:3.027,modificationSlots:2},4:{damage:3.973,modificationSlots:3},5:{damage:5.215,modificationSlots:4}},engineeringType:"plasma"},{symbol:"wpn_m_assaultrifle_plasma_fauto",name:"Manticore Oppressor",upgradeGroup:"manticore",class:"rifle",slot:"primary",damageType:"plasma",fireMode:"automatic",rateOfFire:6.67,magazineSize:50,reserveAmmo:300,headshotMultiplier:1.5,effectiveRange:35,scopeMagnification:{default:1.17,upgraded:1.52},grades:{1:{damage:1.1,modificationSlots:0},2:{damage:1.441,modificationSlots:1},3:{damage:1.903,modificationSlots:2},4:{damage:2.497,modificationSlots:3},5:{damage:3.278,modificationSlots:4}},engineeringType:"plasma"}];var PERSONAL_WEAPONS=deepFreeze(weapons_default);var BY_SYMBOL=/* @__PURE__ */createKeyIndex(PERSONAL_WEAPONS,"symbol");var BY_NAME=/* @__PURE__ */createKeyIndex(PERSONAL_WEAPONS,"name");function getPersonalWeaponBySymbol(symbol){return findInKeyIndex(BY_SYMBOL,symbol,"getPersonalWeaponBySymbol: symbol")}function getPersonalWeaponByName(name){return findInKeyIndex(BY_NAME,name,"getPersonalWeaponByName: name")}function getPersonalWeaponGrade(weapon,grade){assertEquipmentGrade(grade,"getPersonalWeaponGrade");return weapon.grades[String(grade)]??null}export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade};//# sourceMappingURL=chunk-IUSMAX5T.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/equipment/weapons.ts"],"names":["assertEquipmentGrade","findInKeyIndex","createKeyIndex","deepFreeze","weapons_default","symbol","name","grades","PERSONAL_WEAPONS","BY_SYMBOL","BY_NAME","getPersonalWeaponBySymbol","getPersonalWeaponByName","getPersonalWeaponGrade","weapon","grade","String"],"mappings":"O,uiKA+EO,IAAMQ,iBAA8CL,WACvDC,iBAGJ,IAAMK,yBAA4BP,eAAeM,iBAAkB,UACnE,IAAME,uBAA0BR,eAAeM,iBAAkB,QAgB1D,SAASG,0BAA0BN,QACtC,OAAOJ,eAAeQ,UAAWJ,OAAQ,oCAC7C,CAgBO,SAASO,wBAAwBN,MACpC,OAAOL,eAAeS,QAASJ,KAAM,gCACzC,CAkBO,SAASO,uBACZC,OACAC,OAEAf,qBAAqBe,MAAO,0BAC5B,OAAOD,OAAOP,OAAOS,OAAOD,SAAkC,IAClE,QAAAP,iBAAAI,wBAAAD,0BAAAE"}
1
+ {"version":3,"sources":["../src/equipment/weapons.ts"],"names":["assertEquipmentGrade","findInKeyIndex","createKeyIndex","deepFreeze","weapons_default","symbol","name","grades","PERSONAL_WEAPONS","BY_SYMBOL","BY_NAME","getPersonalWeaponBySymbol","getPersonalWeaponByName","getPersonalWeaponGrade","weapon","grade","String"],"mappings":"O,gqLA8FO,IAAMQ,iBAA8CL,WACvDC,iBAGJ,IAAMK,yBAA4BP,eAAeM,iBAAkB,UACnE,IAAME,uBAA0BR,eAAeM,iBAAkB,QAgB1D,SAASG,0BAA0BN,QACtC,OAAOJ,eAAeQ,UAAWJ,OAAQ,oCAC7C,CAgBO,SAASO,wBAAwBN,MACpC,OAAOL,eAAeS,QAASJ,KAAM,gCACzC,CAkBO,SAASO,uBACZC,OACAC,OAEAf,qBAAqBe,MAAO,0BAC5B,OAAOD,OAAOP,OAAOS,OAAOD,SAAkC,IAClE,QAAAP,iBAAAI,wBAAAD,0BAAAE"}
@@ -1 +1 @@
1
- import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";import{systemsResistance,mapDamageTypes,effectiveHitPoints}from"./chunk-F44QX47A.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";var DAMAGE_TYPES=["kinetic","thermal","explosive","caustic"];function shieldCapacitorMetrics(input){const scope="shieldCapacitorMetrics";const systemsPips=input.systemsPips??4;requirePips(scope,"systemsPips",systemsPips);for(const field of["strength","systemsCapacity","systemsRecharge"]){requireFiniteNonNegative(scope,field,input[field])}const resistances=input.resistances;if(typeof resistances!=="object"||resistances===null){throw new TypeError(`${scope}: resistances must carry the four damage types`)}for(const type of DAMAGE_TYPES){if(!Number.isFinite(input.resistances[type])){throw new RangeError(`${scope}: resistances.${type} must be a finite number`)}}const sysResistance=systemsResistance(systemsPips);const effectiveResistances=Object.freeze(mapDamageTypes(type=>1-(1-input.resistances[type])*(1-sysResistance)));return Object.freeze({systemsPips:systemsPips,capacity:input.systemsCapacity,rechargeRate:capacitorRechargeAtPips(input.systemsRecharge,systemsPips),systemsResistance:sysResistance,effectiveResistances:effectiveResistances,effectiveHitPoints:Object.freeze(effectiveHitPoints(input.strength,effectiveResistances))})}export{shieldCapacitorMetrics};//# sourceMappingURL=chunk-XQJERZUS.js.map
1
+ import{systemsResistance,mapDamageTypes,effectiveHitPoints}from"./chunk-F44QX47A.js";import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";import{requirePips,requireFiniteNonNegative}from"./chunk-65FZECUX.js";var DAMAGE_TYPES=["kinetic","thermal","explosive","caustic"];function shieldCapacitorMetrics(input){const scope="shieldCapacitorMetrics";const systemsPips=input.systemsPips??4;requirePips(scope,"systemsPips",systemsPips);for(const field of["strength","systemsCapacity","systemsRecharge"]){requireFiniteNonNegative(scope,field,input[field])}const resistances=input.resistances;if(typeof resistances!=="object"||resistances===null){throw new TypeError(`${scope}: resistances must carry the four damage types`)}for(const type of DAMAGE_TYPES){if(!Number.isFinite(input.resistances[type])){throw new RangeError(`${scope}: resistances.${type} must be a finite number`)}}const sysResistance=systemsResistance(systemsPips);const effectiveResistances=Object.freeze(mapDamageTypes(type=>1-(1-input.resistances[type])*(1-sysResistance)));return Object.freeze({systemsPips:systemsPips,capacity:input.systemsCapacity,rechargeRate:capacitorRechargeAtPips(input.systemsRecharge,systemsPips),systemsResistance:sysResistance,effectiveResistances:effectiveResistances,effectiveHitPoints:Object.freeze(effectiveHitPoints(input.strength,effectiveResistances))})}export{shieldCapacitorMetrics};//# sourceMappingURL=chunk-JCYOE3C4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/shield-capacitor.ts"],"names":["capacitorRechargeAtPips","systemsResistance","mapDamageTypes","effectiveHitPoints","requirePips","requireFiniteNonNegative","DAMAGE_TYPES","shieldCapacitorMetrics","input","scope","systemsPips","field","resistances","TypeError","type","Number","isFinite","RangeError","sysResistance","effectiveResistances","Object","freeze","capacity","systemsCapacity","rechargeRate","systemsRecharge","strength"],"mappings":"O,6MAwGA,IAAMM,aAAsC,CAAC,UAAW,UAAW,YAAa,WAuCzE,SAASC,uBAAuBC,OACnC,MAAMC,MAAQ,yBACd,MAAMC,YAAcF,MAAME,aAAe,EAGzCN,YAAYK,MAAO,cAAeC,aAClC,IAAA,MAAWC,QAAS,CAAC,WAAY,kBAAmB,mBAA6B,CAC7EN,yBAAyBI,MAAOE,MAAOH,MAAMG,OACjD,CACA,MAAMC,YAAuBJ,MAAMI,YACnC,UAAWA,cAAgB,UAAYA,cAAgB,KAAM,CACzD,MAAM,IAAIC,UAAU,GAAGJ,sDAC3B,CACA,IAAA,MAAWK,QAAQR,aAAc,CAC7B,IAAKS,OAAOC,SAASR,MAAMI,YAAYE,OAAQ,CAC3C,MAAM,IAAIG,WAAW,GAAGR,sBAAsBK,+BAClD,CACJ,CAEA,MAAMI,cAAgBjB,kBAAkBS,aAExC,MAAMS,qBAA0CC,OAAOC,OACnDnB,eAAgBY,MAAS,GAAK,EAAIN,MAAMI,YAAYE,QAAU,EAAII,iBAEtE,OAAOE,OAAOC,OAAO,CACjBX,wBACAY,SAAUd,MAAMe,gBAChBC,aAAcxB,wBAAwBQ,MAAMiB,gBAAiBf,aAC7DT,kBAAmBiB,cACnBC,0CACAhB,mBAAoBiB,OAAOC,OAAOlB,mBAAmBK,MAAMkB,SAAUP,wBAE7E,QAAAZ"}
1
+ {"version":3,"sources":["../src/ships/shield-capacitor.ts"],"names":["systemsResistance","mapDamageTypes","effectiveHitPoints","capacitorRechargeAtPips","requirePips","requireFiniteNonNegative","DAMAGE_TYPES","shieldCapacitorMetrics","input","scope","systemsPips","field","resistances","TypeError","type","Number","isFinite","RangeError","sysResistance","effectiveResistances","Object","freeze","capacity","systemsCapacity","rechargeRate","systemsRecharge","strength"],"mappings":"O,6MAwGA,IAAMM,aAAsC,CAAC,UAAW,UAAW,YAAa,WAuCzE,SAASC,uBAAuBC,OACnC,MAAMC,MAAQ,yBACd,MAAMC,YAAcF,MAAME,aAAe,EAGzCN,YAAYK,MAAO,cAAeC,aAClC,IAAA,MAAWC,QAAS,CAAC,WAAY,kBAAmB,mBAA6B,CAC7EN,yBAAyBI,MAAOE,MAAOH,MAAMG,OACjD,CACA,MAAMC,YAAuBJ,MAAMI,YACnC,UAAWA,cAAgB,UAAYA,cAAgB,KAAM,CACzD,MAAM,IAAIC,UAAU,GAAGJ,sDAC3B,CACA,IAAA,MAAWK,QAAQR,aAAc,CAC7B,IAAKS,OAAOC,SAASR,MAAMI,YAAYE,OAAQ,CAC3C,MAAM,IAAIG,WAAW,GAAGR,sBAAsBK,+BAClD,CACJ,CAEA,MAAMI,cAAgBlB,kBAAkBU,aAExC,MAAMS,qBAA0CC,OAAOC,OACnDpB,eAAgBa,MAAS,GAAK,EAAIN,MAAMI,YAAYE,QAAU,EAAII,iBAEtE,OAAOE,OAAOC,OAAO,CACjBX,wBACAY,SAAUd,MAAMe,gBAChBC,aAAcrB,wBAAwBK,MAAMiB,gBAAiBf,aAC7DV,kBAAmBkB,cACnBC,0CACAjB,mBAAoBkB,OAAOC,OAAOnB,mBAAmBM,MAAMkB,SAAUP,wBAE7E,QAAAZ"}
@@ -0,0 +1 @@
1
+ import{assertEquipmentGrade}from"./chunk-2W5MW376.js";import{findInKeyIndex,normalizeKey,createKeyIndex}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var suits_default=[{family:"utilitysuit",name:"Maverick Suit",primarySlots:1,secondarySlots:1,health:30,mass:100,batteryCapacity:13.5,oxygenTime:60,boostAcceleration:25,goodsCapacity:40,assetsCapacity:60,dataCapacity:20,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"utilitysuit_class1",modificationSlots:0,shieldStrength:13.5,shieldRegeneration:.99,kineticResistance:-.6,thermalResistance:.5,plasmaResistance:-.1,explosiveResistance:0},2:{symbol:"utilitysuit_class2",modificationSlots:1,shieldStrength:16.5,shieldRegeneration:1.21,kineticResistance:-.34,thermalResistance:.58,plasmaResistance:.08,explosiveResistance:.16},3:{symbol:"utilitysuit_class3",modificationSlots:2,shieldStrength:20.3,shieldRegeneration:1.49,kineticResistance:-.14,thermalResistance:.64,plasmaResistance:.22,explosiveResistance:.29},4:{symbol:"utilitysuit_class4",modificationSlots:3,shieldStrength:24.9,shieldRegeneration:1.82,kineticResistance:.06,thermalResistance:.7,plasmaResistance:.35,explosiveResistance:.41},5:{symbol:"utilitysuit_class5",modificationSlots:4,shieldStrength:30.4,shieldRegeneration:2.23,kineticResistance:.2,thermalResistance:.75,plasmaResistance:.45,explosiveResistance:.5}}},{family:"tacticalsuit",name:"Dominator Suit",primarySlots:2,secondarySlots:1,health:30,mass:100,batteryCapacity:10,oxygenTime:60,boostAcceleration:50,goodsCapacity:10,assetsCapacity:20,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"tacticalsuit_class1",modificationSlots:0,shieldStrength:15,shieldRegeneration:1.1,kineticResistance:-.5,thermalResistance:.6,plasmaResistance:0,explosiveResistance:0},2:{symbol:"tacticalsuit_class2",modificationSlots:1,shieldStrength:18.3,shieldRegeneration:1.34,kineticResistance:-.26,thermalResistance:.66,plasmaResistance:.16,explosiveResistance:.16},3:{symbol:"tacticalsuit_class3",modificationSlots:2,shieldStrength:22.5,shieldRegeneration:1.65,kineticResistance:-.07,thermalResistance:.72,plasmaResistance:.29,explosiveResistance:.29},4:{symbol:"tacticalsuit_class4",modificationSlots:3,shieldStrength:27.6,shieldRegeneration:2.02,kineticResistance:.11,thermalResistance:.76,plasmaResistance:.41,explosiveResistance:.41},5:{symbol:"tacticalsuit_class5",modificationSlots:4,shieldStrength:33.8,shieldRegeneration:2.48,kineticResistance:.25,thermalResistance:.8,plasmaResistance:.5,explosiveResistance:.5}}},{family:"explorationsuit",name:"Artemis Suit",primarySlots:1,secondarySlots:1,health:30,mass:100,batteryCapacity:17,oxygenTime:60,boostAcceleration:12.5,goodsCapacity:20,assetsCapacity:40,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"explorationsuit_class1",modificationSlots:0,shieldStrength:12,shieldRegeneration:.88,kineticResistance:-.7,thermalResistance:.4,plasmaResistance:-.2,explosiveResistance:0},2:{symbol:"explorationsuit_class2",modificationSlots:1,shieldStrength:14.7,shieldRegeneration:1.07,kineticResistance:-.43,thermalResistance:.5,plasmaResistance:-.01,explosiveResistance:.16},3:{symbol:"explorationsuit_class3",modificationSlots:2,shieldStrength:18,shieldRegeneration:1.32,kineticResistance:-.21,thermalResistance:.57,plasmaResistance:.15,explosiveResistance:.29},4:{symbol:"explorationsuit_class4",modificationSlots:3,shieldStrength:22.1,shieldRegeneration:1.62,kineticResistance:0,thermalResistance:.65,plasmaResistance:.29,explosiveResistance:.41},5:{symbol:"explorationsuit_class5",modificationSlots:4,shieldStrength:27,shieldRegeneration:1.98,kineticResistance:.15,thermalResistance:.7,plasmaResistance:.4,explosiveResistance:.5}}},{family:"flightsuit",name:"Flight Suit",primarySlots:0,secondarySlots:1,health:30,mass:100,batteryCapacity:7,oxygenTime:60,boostAcceleration:30,goodsCapacity:5,assetsCapacity:10,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"flightsuit",modificationSlots:0,shieldStrength:7.5,shieldRegeneration:.55,kineticResistance:-.7,thermalResistance:.4,plasmaResistance:-.2,explosiveResistance:0}}}];var SUITS=deepFreeze(suits_default);var BY_FAMILY=/* @__PURE__ */createKeyIndex(SUITS,"family");var BY_NAME=/* @__PURE__ */createKeyIndex(SUITS,"name");var BY_SYMBOL=/* @__PURE__ */Object.freeze(Object.fromEntries(SUITS.flatMap(suit=>Object.entries(suit.grades).map(([grade,stats])=>[stats.symbol.toLowerCase(),Object.freeze({suit:suit,grade:Number(grade)})]))));function getSuitByFamily(family){return findInKeyIndex(BY_FAMILY,family,"getSuitByFamily: family")}function getSuitByName(name){return findInKeyIndex(BY_NAME,name,"getSuitByName: name")}function getSuitBySymbol(symbol){const key=normalizeKey(symbol,"getSuitBySymbol: symbol");return Object.hasOwn(BY_SYMBOL,key)?BY_SYMBOL[key]:null}function getSuitGrade(suit,grade){assertEquipmentGrade(grade,"getSuitGrade");return suit.grades[String(grade)]??null}export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade};//# sourceMappingURL=chunk-LWNBWRKL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/equipment/suits.ts"],"names":["assertEquipmentGrade","findInKeyIndex","normalizeKey","createKeyIndex","deepFreeze","suits_default","family","name","grades","symbol","SUITS","BY_FAMILY","BY_NAME","BY_SYMBOL","Object","freeze","fromEntries","flatMap","suit","entries","map","grade","stats","toLowerCase","Number","getSuitByFamily","getSuitByName","getSuitBySymbol","key","hasOwn","getSuitGrade","String"],"mappings":"O,m5GAyDO,IAAMU,MAAyBN,WAAWC,eAEjD,IAAMM,yBAA4BR,eAAeO,MAAO,UACxD,IAAME,uBAA0BT,eAAeO,MAAO,QACtD,IAAMG,yBAA4BC,OAAOC,OACrCD,OAAOE,YACHN,MAAMO,QAASC,MACXJ,OAAOK,QAAQD,KAAKV,QAAQY,IAAI,EAAEC,MAAOC,SAAW,CAChDA,MAAMb,OAAOc,cACbT,OAAOC,OAAO,CAAEG,UAAMG,MAAOG,OAAOH,cAoB7C,SAASI,gBAAgBnB,QAC5B,OAAOL,eAAeU,UAAWL,OAAQ,0BAC7C,CAgBO,SAASoB,cAAcnB,MAC1B,OAAON,eAAeW,QAASL,KAAM,sBACzC,CAgBO,SAASoB,gBACZlB,QAEA,MAAMmB,IAAM1B,aAAaO,OAAQ,2BACjC,OAAOK,OAAOe,OAAOhB,UAAWe,KAAOf,UAAUe,KAAQ,IAC7D,CAiBO,SAASE,aAAaZ,KAAYG,OACrCrB,qBAAqBqB,MAAO,gBAC5B,OAAOH,KAAKV,OAAOuB,OAAOV,SAAkC,IAChE,QAAAX,MAAAe,gBAAAC,cAAAC,gBAAAG"}
1
+ {"version":3,"sources":["../src/equipment/suits.ts"],"names":["assertEquipmentGrade","findInKeyIndex","normalizeKey","createKeyIndex","deepFreeze","suits_default","family","name","grades","symbol","SUITS","BY_FAMILY","BY_NAME","BY_SYMBOL","Object","freeze","fromEntries","flatMap","suit","entries","map","grade","stats","toLowerCase","Number","getSuitByFamily","getSuitByName","getSuitBySymbol","key","hasOwn","getSuitGrade","String"],"mappings":"O,wnIAuFO,IAAMU,MAAyBN,WAAWC,eAEjD,IAAMM,yBAA4BR,eAAeO,MAAO,UACxD,IAAME,uBAA0BT,eAAeO,MAAO,QACtD,IAAMG,yBAA4BC,OAAOC,OACrCD,OAAOE,YACHN,MAAMO,QAASC,MACXJ,OAAOK,QAAQD,KAAKV,QAAQY,IAAI,EAAEC,MAAOC,SAAW,CAChDA,MAAMb,OAAOc,cACbT,OAAOC,OAAO,CAAEG,UAAMG,MAAOG,OAAOH,cAoB7C,SAASI,gBAAgBnB,QAC5B,OAAOL,eAAeU,UAAWL,OAAQ,0BAC7C,CAgBO,SAASoB,cAAcnB,MAC1B,OAAON,eAAeW,QAASL,KAAM,sBACzC,CAgBO,SAASoB,gBACZlB,QAEA,MAAMmB,IAAM1B,aAAaO,OAAQ,2BACjC,OAAOK,OAAOe,OAAOhB,UAAWe,KAAOf,UAAUe,KAAQ,IAC7D,CAiBO,SAASE,aAAaZ,KAAYG,OACrCrB,qBAAqBqB,MAAO,gBAC5B,OAAOH,KAAKV,OAAOuB,OAAOV,SAAkC,IAChE,QAAAX,MAAAe,gBAAAC,cAAAC,gBAAAG"}
@@ -0,0 +1 @@
1
+ function isRequiredSlot(slot){return slot.kind==="core"||slot.kind==="armour"}function fixedSlotReason(slot){if(slot.kind==="cargoHatch")return"cargoHatch";return isRequiredSlot(slot)?"requiredSlot":null}function stockedMountKind(slot){if(slot.kind==="core"||slot.kind==="armour"||slot.kind==="cargoHatch"){return slot.kind}return slot.kind==="optional"&&slot.restriction==="planetaryApproachSuite"?"approachSuite":null}export{fixedSlotReason,isRequiredSlot,stockedMountKind};//# sourceMappingURL=chunk-M6J7KP7G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ships/internal/loadout-slot-rules.ts"],"names":["isRequiredSlot","slot","kind","fixedSlotReason","stockedMountKind","restriction"],"mappings":"AAOO,SAASA,eAAeC,MAC3B,OAAOA,KAAKC,OAAS,QAAUD,KAAKC,OAAS,QACjD,CAGO,SAASC,gBAAgBF,MAC5B,GAAIA,KAAKC,OAAS,aAAc,MAAO,aACvC,OAAOF,eAAeC,MAAQ,eAAiB,IACnD,CAoBO,SAASG,iBACZH,MAEA,GAAIA,KAAKC,OAAS,QAAUD,KAAKC,OAAS,UAAYD,KAAKC,OAAS,aAAc,CAC9E,OAAOD,KAAKC,IAChB,CACA,OAAOD,KAAKC,OAAS,YAAcD,KAAKI,cAAgB,yBAClD,gBACA,IACV,QAAAF,gBAAAH,eAAAI"}
@@ -0,0 +1 @@
1
+ import{HARDPOINT_MODULES}from"./chunk-773VO2GK.js";import{INTERNAL_MODULES}from"./chunk-IMNOEFUE.js";import{UTILITY_MODULES}from"./chunk-ELT3FEA4.js";import{CORE_MODULES}from"./chunk-ZZTDEDXJ.js";var ALL_MODULES=Object.freeze([...CORE_MODULES,...INTERNAL_MODULES,...HARDPOINT_MODULES,...UTILITY_MODULES]);export{ALL_MODULES};//# sourceMappingURL=chunk-MT5AHPNP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ships/modules-all.ts"],"names":["CORE_MODULES","HARDPOINT_MODULES","INTERNAL_MODULES","UTILITY_MODULES","ALL_MODULES","Object","freeze"],"mappings":"O,6LA0CO,IAAMI,YAA2CC,OAAOC,OAAO,IAC/DN,gBACAE,oBACAD,qBACAE,yBACNC"}
1
+ {"version":3,"sources":["../src/ships/modules-all.ts"],"names":["HARDPOINT_MODULES","INTERNAL_MODULES","UTILITY_MODULES","CORE_MODULES","ALL_MODULES","Object","freeze"],"mappings":"O,6LA0CO,IAAMI,YAA2CC,OAAOC,OAAO,IAC/DH,gBACAF,oBACAD,qBACAE,yBACNE"}
@@ -0,0 +1 @@
1
+ import{getLocalizedName,createDeduplicatedLocalizedNameIndex}from"./chunk-RVIYOHYF.js";var personal_modification_descriptions_default={nameKeys:{suit_increasedmeleedamage:"suit_increasedmeleedamage",suit_adsmovementspeed:"suit_adsmovementspeed",suit_improvedarmourrating:"suit_improvedarmourrating",suit_improvedradar:"suit_improvedradar",suit_increasedammoreserves:"suit_increasedammoreserves",suit_backpackcapacity:"suit_backpackcapacity",suit_increasedshieldregen:"suit_increasedshieldregen",suit_increasedbatterycapacity:"suit_increasedbatterycapacity",suit_improvedjumpassist:"suit_improvedjumpassist",suit_increasedo2capacity:"suit_increasedo2capacity",suit_increasedsprintduration:"suit_increasedsprintduration",suit_nightvision:"suit_nightvision",suit_quieterfootsteps:"suit_quieterfootsteps",suit_reducedtoolbatteryconsumption:"suit_reducedtoolbatteryconsumption",weapon_suppression_unpressurised:"weapon_suppression_unpressurised",weapon_handling:"weapon_handling",weapon_range_kinetic:"weapon_range",weapon_range_laser:"weapon_range",weapon_range_plasma:"weapon_range",weapon_headshotdamage_kinetic:"weapon_headshotdamage",weapon_headshotdamage_laser:"weapon_headshotdamage",weapon_headshotdamage_plasma:"weapon_headshotdamage",weapon_accuracy_kinetic:"weapon_accuracy",weapon_accuracy_laser:"weapon_accuracy",weapon_accuracy_plasma:"weapon_accuracy",weapon_clipsize:"weapon_clipsize",weapon_suppression_pressurised:"weapon_suppression_pressurised",weapon_reloadspeed:"weapon_reloadspeed",weapon_scope:"weapon_scope",weapon_stability:"weapon_stability",weapon_backpackreloading:"weapon_backpackreloading"},names:{suit_increasedmeleedamage:{en:"Improves the damage dealt by fists and weapon strikes.",de:"Erhöht den durch Schläge mit Fäusten und Waffen zugefügten Schaden.",es:"Aumenta el daño que infligen los golpes cuerpo a cuerpo de las armas y de los puños.",fr:"Augmente les dégâts infligés par les poings et les coups portés avec une arme.",pt:"Melhora o dano causado pelos punhos e golpes com armas.",ru:"Повышает урон от кулаков и оружия ближнего боя."},suit_adsmovementspeed:{en:"Removes the movement penalty while aiming down sights.",de:"Entfernt die Bewegungseinschränkung bei Nutzung einer Zielvorrichtung.",es:"Elimina la penalización de movimiento al apuntar con mira.",fr:"Supprime la pénalité de déplacement pendant la visée avec une arme.",pt:"Remove a penalidade de movimento ao usar a mira.",ru:"Убирает штраф на передвижение во время прицеливания."},suit_improvedarmourrating:{en:"Increases protection against certain damage types.",de:"Erhöht Schutz gegen bestimmte Schadensarten.",es:"Aumenta la protección contra determinados tipos de daño.",fr:"Améliore la protection contre certains types de dégâts.",pt:"Aumenta a proteção contra certos tipos de dano.",ru:"Увеличивает сопротивление определенным типам урона."},suit_improvedradar:{en:"Increases range and speed of the suit's basic scan function.",de:"Erhöht Reichweite und Geschwindigkeit der Basis-Scanfunktion des Anzugs.",es:"Aumenta el alcance y la velocidad de la función de escaneo básico del traje.",fr:"Augmente la portée et la vitesse des analyses simples de la combinaison.",pt:"Aumenta o alcance e a velocidade da função básica do scanner do traje.",ru:"Увеличивает скорость и радиус базового сканирования комбинезона."},suit_increasedammoreserves:{en:"Allows more ammo to be carried for each weapon.",de:"Erlaubt das Mitführen von mehr Munition für jede Waffe.",es:"Permite que las armas lleven más munición.",fr:"Permet à chaque arme de disposer de plus de munitions.",pt:"Permite que mais munição seja carregada para cada arma.",ru:"Увеличивает боезапас всех видов оружия."},suit_backpackcapacity:{en:"Increases the inventory capacity of the suit backpack.",de:"Erhöht die Inventarkapazität des Anzugrucksacks.",es:"Aumenta la capacidad que tiene el inventario de la mochila del traje.",fr:"Augmente la capacité du sac à dos de la combinaison.",pt:"Aumenta a capacidade de inventário da mochila do traje.",ru:"Увеличивает вместимость рюкзака комбинезона."},suit_increasedshieldregen:{en:"Speeds up personal shield regeneration rate.",de:"Beschleunigt die Regenerationsrate des eigenen Schilds.",es:"Acelera el índice de regeneración del escudo personal.",fr:"Accélère la vitesse de régénération du bouclier personnel.",pt:"Acelera a taxa de regeneração do escudo pessoal.",ru:"Увеличивает скорость восстановления личного щита."},suit_increasedbatterycapacity:{en:"Increases energy capacity of the suit battery.",de:"Erhöht die Energiekapazität der Anzugbatterie.",es:"Aumenta la capacidad de la batería del traje.",fr:"Augmente la capacité de la batterie de la combinaison.",pt:"Aumenta a capacidade de energia da bateria do traje.",ru:"Увеличивает энергоемкость батареи комбинезона."},suit_improvedjumpassist:{en:"Increases thrust duration and recharge rate while reducing energy consumption.",de:"Erhöht Schubdauer und Wiederaufladerate bei geringerem Energieverbrauch.",es:"Aumenta la duración de la propulsión y la tasa de recarga, a la vez que reduce el consumo de energía.",fr:"Augmente la durée de la poussée et la vitesse de rechargement tout en réduisant la consommation énergétique.",pt:"Reduz o consumo de energia e aumenta a duração da propulsão e a taxa de recarga.",ru:"Увеличивает продолжительность рывка и скорость его перезарядки, уменьшая расход энергии."},suit_increasedo2capacity:{en:"Extends life support operation time once suit energy is depleted.",de:"Verlängert die Betriebszeit der Lebenserhaltungssysteme des Anzugs, wenn dessen Energie erschöpft ist.",es:"Prolonga el tiempo de soporte vital cuando la energía del traje se agota.",fr:"Prolonge le fonctionnement du système de survie de la combinaison, une fois cette dernière à court d'énergie.",pt:"Prolonga o funcionamento do suporte de vida após a energia do traje acabar.",ru:"Продлевает работу систем жизнеобеспечения после исчерпания запаса энергии комбинезона."},suit_increasedsprintduration:{en:"Optimises suit articulation, resulting in increased sprint capability.",de:"Optimiert die Beweglichkeit des Anzuges und vereinfacht so Sprints.",es:"Optimiza la articulación del traje, lo que aumenta la capacidad de esprintar.",fr:"Optimise les articulations de la combinaison, afin de faciliter la course.",pt:"Otimiza a articulação do traje, resultando em maior capacidade de corrida.",ru:"Повышает подвижность соединений комбинезона, улучшая показатели бега."},suit_nightvision:{en:"Adds Night Vision capabilities to the suit.",de:"Fügt dem Anzug Nachtsichtfähigkeiten hinzu.",es:"Añade capacidades de visión nocturna al traje.",fr:"Ajoute un module de vision nocturne à la combinaison.",pt:"Adiciona funções de Visão Noturna ao traje.",ru:"Добавляет комбинезону поддержку ночного видения."},suit_quieterfootsteps:{en:"Dampens the sound generated by suit steps.",de:"Dämpft das Geräusch von Schritten.",es:"Disminuye el ruido que hacen los pasos.",fr:"Étouffe le bruit des pas du porteur de la combinaison.",pt:"Amortece os sons gerados pelos passos do traje.",ru:"Приглушает звук шагов в комбинезоне."},suit_reducedtoolbatteryconsumption:{en:"Reduces the energy consumption of certain suit tool functions.",de:"Verringert den Energieverbrauch bestimmter Anzugfunktionen.",es:"Reduce el consumo de energía de determinadas funciones de las herramientas del traje.",fr:"Réduit la consommation d'énergie de certaines fonctionnalités utilitaires de la combinaison.",pt:"Reduz o consumo de energia de certas funções do traje.",ru:"Снижает энергопотребление при использовании некоторых функций инструментов комбинезона."},weapon_suppression_unpressurised:{en:"Reduces the weapon's simulated sound when fired in unpressurised environments.",de:"Verringert das simulierte Waffengeräusch bei der Verwendung in Umgebungen ohne Atmosphäre.",es:"Reduce el sonido simulado del arma cuando se dispara en entornos no presurizados.",fr:"Réduit le bruit simulé de l'arme lorsqu'elle est utilisée dans un environnement non pressurisé.",pt:"Reduz o som simulado da arma ao disparar em ambientes não pressurizados.",ru:"Уменьшает симулированный звук от оружия при стрельбе в негерметичной среде."},weapon_handling:{en:"Reduces the weapon's draw/stow speed and improves ADS functionality.",de:"Erhöht das Tempo beim Ziehen/Wegstecken der Waffe und verbessert ADS-Funktionalität.",es:"Reduce el tiempo que tarda en sacar o guardar el arma y mejora la funcionalidad de fijar vista.",fr:"Réduit le temps nécessaire pour dégainer ou rengainer l'arme, et améliore la visée.",pt:"Reduz o tempo de saque/guarda da arma e melhora a funcionalidade de ADS.",ru:"Позволяет быстрее доставать и убирать оружие и делает прицеливание удобнее."},weapon_range:{en:"Improves the weapon's effective range.",de:"Erhöht die effektive Reichweite der Waffe.",es:"Mejora el alcance efectivo del arma.",fr:"Augmente la portée efficace de l'arme.",pt:"Melhora o alcance efetivo da arma.",ru:"Увеличивает эффективную дальность оружия."},weapon_headshotdamage:{en:"Increases damage inflicted by headshots.",de:"Erhöht den durch Kopfschüsse zugefügten Schaden.",es:"Aumenta el daño que infligen los disparos a la cabeza.",fr:"Augmente les dégâts à la tête.",pt:"Aumenta o dano causado por tiros na cabeça.",ru:"Увеличивает урон, наносимый при попадании в голову."},weapon_accuracy:{en:"Reduces weapon fire spread outside of ADS stance, improving accuracy.",de:"Verringert die Streuung abseits von ADS, verbessert die Präzision.",es:"Reduce la dispersión al disparar sin usar la mira, lo que mejora la precisión.",fr:"Réduit la dispersion des tirs de l'arme hors mode de visée, ce qui améliore la précision.",pt:"Reduz a dispersão de disparo fora da postura de mira, melhorando a precisão.",ru:"Повышает точность стрельбы без прицеливания."},weapon_clipsize:{en:"Extends the weapon's magazine size.",de:"Erhöht die Magazingröße der Waffe.",es:"Amplía el tamaño del cargador del arma.",fr:"Augmente la capacité du chargeur de l'arme.",pt:"Aumenta o tamanho do pente da arma.",ru:"Увеличивает емкость магазина оружия."},weapon_suppression_pressurised:{en:"Reduces the sound of the weapon when fired in pressurised environments.",de:"Verringert das Waffengeräusch bei der Verwendung in Umgebungen mit Atmosphäre.",es:"Reduce el sonido del arma cuando se dispara en entornos presurizados.",fr:"Réduit le bruit de l'arme lorsqu'elle est utilisée dans un environnement pressurisé.",pt:"Reduz o som da arma ao disparar em ambientes pressurizados.",ru:"Уменьшает звук от оружия при стрельбе в герметичной среде."},weapon_reloadspeed:{en:"Shortens the weapon's reload time.",de:"Verkürzt die Nachladezeit der Waffe.",es:"Reduce el tiempo de recarga del arma.",fr:"Réduit le temps nécessaire pour recharger l'arme.",pt:"Encurta o tempo de recarga da arma.",ru:"Сокращает время перезарядки оружия."},weapon_scope:{en:"Adds a scope to the weapon (or improves an existing one).",de:"Fügt der Waffe ein Zielfernrohr hinzu (oder verbessert ein vorhandenes).",es:"Añade un visor al arma o mejora el existente si lo hay.",fr:"Ajoute une lunette de visée à l'arme (ou améliore celle dont elle est équipée).",pt:"Adiciona uma mira telescópica à arma (ou melhora a existente).",ru:"Добавляет к оружию прицел или улучшает уже имеющийся."},weapon_stability:{en:"Reduces the weapon's recoil.",de:"Verringert den Rückschlag der Waffe.",es:"Reduce el retroceso del arma.",fr:"Réduit le recul de l'arme.",pt:"Reduz o recuo da arma.",ru:"Уменьшает отдачу от оружия."},weapon_backpackreloading:{en:"Automatically reloads a stowed weapon after five seconds.",de:"Lädt eine weggesteckte Waffe nach 5 Sekunden automatisch nach.",es:"Recarga automáticamente un arma enfundada una vez transcurridos cinco segundos.",fr:"Recharge automatiquement toute arme rengainée au bout de 5 secondes.",pt:"Recarrega automaticamente uma arma guardada após cinco segundos.",ru:"Автоматически перезаряжает оружие через пять секунд после того, как его убрали."}}};var personal_modification_names_default={nameKeys:{suit_increasedmeleedamage:"suit_increasedmeleedamage",suit_adsmovementspeed:"suit_adsmovementspeed",suit_improvedarmourrating:"suit_improvedarmourrating",suit_improvedradar:"suit_improvedradar",suit_increasedammoreserves:"suit_increasedammoreserves",suit_backpackcapacity:"suit_backpackcapacity",suit_increasedshieldregen:"suit_increasedshieldregen",suit_increasedbatterycapacity:"suit_increasedbatterycapacity",suit_improvedjumpassist:"suit_improvedjumpassist",suit_increasedo2capacity:"suit_increasedo2capacity",suit_increasedsprintduration:"suit_increasedsprintduration",suit_nightvision:"suit_nightvision",suit_quieterfootsteps:"suit_quieterfootsteps",suit_reducedtoolbatteryconsumption:"suit_reducedtoolbatteryconsumption",weapon_suppression_unpressurised:"weapon_suppression_unpressurised",weapon_handling:"weapon_handling",weapon_range_kinetic:"weapon_range",weapon_range_laser:"weapon_range",weapon_range_plasma:"weapon_range",weapon_headshotdamage_kinetic:"weapon_headshotdamage",weapon_headshotdamage_laser:"weapon_headshotdamage",weapon_headshotdamage_plasma:"weapon_headshotdamage",weapon_accuracy_kinetic:"weapon_accuracy",weapon_accuracy_laser:"weapon_accuracy",weapon_accuracy_plasma:"weapon_accuracy",weapon_clipsize:"weapon_clipsize",weapon_suppression_pressurised:"weapon_suppression_pressurised",weapon_reloadspeed:"weapon_reloadspeed",weapon_scope:"weapon_scope",weapon_stability:"weapon_stability",weapon_backpackreloading:"weapon_backpackreloading"},names:{suit_increasedmeleedamage:{en:"Added Melee Damage",de:"Zusätzlicher Nahkampfschaden",es:"Daño cuerpo a cuerpo aumentado",fr:"Dégâts au corps à corps supplémentaires",pt:"Dano corpo a corpo adicional",ru:"Дополнительный урон в ближнем бою"},suit_adsmovementspeed:{en:"Combat Movement Speed",de:"Kampfbewegungsgeschwindigkeit",es:"Velocidad de movimiento en combate",fr:"Vitesse de déplacement au combat",pt:"Velocidade do movimento em combate",ru:"Скорость передвижения в бою"},suit_improvedarmourrating:{en:"Damage Resistance",de:"Schadenswiderstand",es:"Resistencia al daño",fr:"Résistance aux dégâts",pt:"Resistência a danos",ru:"Сопротивление урону"},suit_improvedradar:{en:"Enhanced Tracking",de:"Verbessertes Tracking",es:"Seguimiento mejorado",fr:"Suivi amélioré",pt:"Rastreamento melhorado",ru:"Улучшенное отслеживание"},suit_increasedammoreserves:{en:"Extra Ammo Capacity",de:"Zusätzliche Munitionskapazität",es:"Capacidad de munición adicional",fr:"Capacité de chargeur accrue",pt:"Capacidade extra de munição",ru:"Дополнительные боеприпасы"},suit_backpackcapacity:{en:"Extra Backpack Capacity",de:"Zusätzliche Rucksackkapazität",es:"Capacidad de mochila adicional",fr:"Capacité de sac à dos accrue",pt:"Capacidade extra da mochila",ru:"Повышенная вместимость рюкзака"},suit_increasedshieldregen:{en:"Faster Shield Regen",de:"Schnellere Schildregeneration",es:"Regeneración de escudo más rápida",fr:"Régénération des boucliers accélérée",pt:"Regeneração do escudo acelerada",ru:"Быстрое восстановление щита"},suit_increasedbatterycapacity:{en:"Improved Battery Capacity",de:"Verbesserte Batteriekapazität",es:"Capacidad de batería mejorada",fr:"Capacité de batterie accrue",pt:"Capacidade de bateria melhorada",ru:"Улучшенная батарея"},suit_improvedjumpassist:{en:"Improved Jump Assist",de:"Verbesserter Sprung-Assist",es:"Asistencia de salto mejorada",fr:"Assistance de saut améliorée",pt:"Assistência de salto melhorada",ru:"Улучшенная помощь при прыжке"},suit_increasedo2capacity:{en:"Increased Air Reserves",de:"Erhöhte Luftreserven",es:"Reservas de oxígeno aumentadas",fr:"Réserves d'oxygène augmentées",pt:"Reservas de ar aumentadas",ru:"Увеличенный запас воздуха"},suit_increasedsprintduration:{en:"Increased Sprint Duration",de:"Erhöhte Sprintdauer",es:"Duración de esprint aumentada",fr:"Durée de course améliorée",pt:"Duração da corrida aumentada",ru:"Повышенная длительность бега"},suit_nightvision:{en:"Night Vision",de:"Nachtsicht",es:"Visión nocturna",fr:"Vision nocturne",pt:"Visão noturna",ru:"Ночное видение"},suit_quieterfootsteps:{en:"Quieter Footsteps",de:"Leises Auftreten",es:"Pasos silenciosos",fr:"Déplacement furtif",pt:"Passos mais silenciosos",ru:"Приглушенные шаги"},suit_reducedtoolbatteryconsumption:{en:"Reduced Tool Battery Consumption",de:"Verringerter Werkzeug-Batterieverbrauch",es:"Consumo de batería reducido",fr:"Consommation des outils réduite",pt:"Consumo de bateria por ferramentas reduzido",ru:"Сниженный расход батареи инструмента"},weapon_suppression_unpressurised:{en:"Audio Masking",de:"Audiomaskierung",es:"Enmascaramiento sonoro",fr:"Camouflage sonore",pt:"Mascaramento de áudio",ru:"Аудиомаскировка"},weapon_handling:{en:"Faster Handling",de:"Schnellere Handhabung",es:"Manejo más rápido",fr:"Maniabilité améliorée",pt:"Manuseio acelerado",ru:"Улучшенное обращение с оружием"},weapon_range:{en:"Greater Range",de:"Größere Reichweite",es:"Mayor alcance",fr:"Portée améliorée",pt:"Alcance aumentado",ru:"Улучшенная дальность"},weapon_headshotdamage:{en:"Headshot Damage",de:"Kopfschussschaden",es:"Daño de disparo a la cabeza",fr:"Dégâts à la tête",pt:"Dano de tiros na cabeça",ru:"Урон от выстрела в голову"},weapon_accuracy:{en:"Improved Hip Fire Accuracy",de:"Verbesserte Draufhalten-Präzision",es:"Precisión disparo cadera mejorada",fr:"Précision sans visée améliorée",pt:"Precisão de tiro sem mirar melhorada",ru:"Повышенная точность стрельбы от бедра"},weapon_clipsize:{en:"Magazine Size",de:"Magazingröße",es:"Tamaño de cargador",fr:"Taille du chargeur",pt:"Tamanho do pente",ru:"Размер обоймы"},weapon_suppression_pressurised:{en:"Noise Suppressor",de:"Geräuschunterdrückung",es:"Silenciador",fr:"Silencieux",pt:"Silenciador",ru:"Глушитель"},weapon_reloadspeed:{en:"Reload Speed",de:"Nachlade-Geschwindigkeit",es:"Velocidad de recarga",fr:"Vitesse de rechargement",pt:"Velocidade de recarga",ru:"Скорость перезарядки"},weapon_scope:{en:"Scope",de:"Visier",es:"Visor",fr:"Lunette",pt:"Mira telescópica",ru:"Прицел"},weapon_stability:{en:"Stability",de:"Stabilität",es:"Estabilidad",fr:"Stabilité",pt:"Estabilidade",ru:"Устойчивость"},weapon_backpackreloading:{en:"Stowed reloading",de:"Nachladen bei verwahrter Waffe",es:"Recargar al guardar",fr:"Rechargement rengainé",pt:"Recarga guardada",ru:"Перезарядка в кобуре"}}};var MODIFICATION_NAMES=/* @__PURE__ */createDeduplicatedLocalizedNameIndex(personal_modification_names_default);var MODIFICATION_DESCRIPTIONS=/* @__PURE__ */createDeduplicatedLocalizedNameIndex(personal_modification_descriptions_default);function getPersonalModificationName(modificationSymbol,locale){return getLocalizedName(MODIFICATION_NAMES,modificationSymbol,locale,"getPersonalModificationName","modificationSymbol")}function getPersonalModificationDescription(modificationSymbol,locale){return getLocalizedName(MODIFICATION_DESCRIPTIONS,modificationSymbol,locale,"getPersonalModificationDescription","modificationSymbol")}export{getPersonalModificationDescription,getPersonalModificationName};//# sourceMappingURL=chunk-OLKOWR7S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/personal-modifications.ts"],"names":["getLocalizedName","createDeduplicatedLocalizedNameIndex","personal_modification_descriptions_default","personal_modification_names_default","MODIFICATION_NAMES","MODIFICATION_DESCRIPTIONS","getPersonalModificationName","modificationSymbol","locale","getPersonalModificationDescription"],"mappings":"O,k1jBAaA,IAAMI,kCAAqCH,qCACvCE,qCAGJ,IAAME,yCAA4CJ,qCAC9CC,4CAmCG,SAASI,4BACZC,mBACAC,QAEA,OAAOR,iBACHI,mBACAG,mBACAC,OACA,8BACA,qBAER,CA8BO,SAASC,mCACZF,mBACAC,QAEA,OAAOR,iBACHK,0BACAE,mBACAC,OACA,qCACA,qBAER,QAAAC,mCAAAH"}
@@ -0,0 +1 @@
1
+ import{getLocalizedName,createDeduplicatedLocalizedNameIndex}from"./chunk-RVIYOHYF.js";var module_names_default={nameKeys:{SideWinder_Armour_Grade1:"Lightweight Alloy",SideWinder_Armour_Grade2:"Reinforced Alloy",SideWinder_Armour_Grade3:"Military Grade Composite",SideWinder_Armour_Mirrored:"Mirrored Surface Composite",SideWinder_Armour_Reactive:"Reactive Surface Composite",Eagle_Armour_Grade1:"Lightweight Alloy",Eagle_Armour_Grade2:"Reinforced Alloy",Eagle_Armour_Grade3:"Military Grade Composite",Eagle_Armour_Mirrored:"Mirrored Surface Composite",Eagle_Armour_Reactive:"Reactive Surface Composite",Hauler_Armour_Grade1:"Lightweight Alloy",Hauler_Armour_Grade2:"Reinforced Alloy",Hauler_Armour_Grade3:"Military Grade Composite",Hauler_Armour_Mirrored:"Mirrored Surface Composite",Hauler_Armour_Reactive:"Reactive Surface Composite",Adder_Armour_Grade1:"Lightweight Alloy",Adder_Armour_Grade2:"Reinforced Alloy",Adder_Armour_Grade3:"Military Grade Composite",Adder_Armour_Mirrored:"Mirrored Surface Composite",Adder_Armour_Reactive:"Reactive Surface Composite",Viper_Armour_Grade1:"Lightweight Alloy",Viper_Armour_Grade2:"Reinforced Alloy",Viper_Armour_Grade3:"Military Grade Composite",Viper_Armour_Mirrored:"Mirrored Surface Composite",Viper_Armour_Reactive:"Reactive Surface Composite",CobraMkIII_Armour_Grade1:"Lightweight Alloy",CobraMkIII_Armour_Grade2:"Reinforced Alloy",CobraMkIII_Armour_Grade3:"Military Grade Composite",CobraMkIII_Armour_Mirrored:"Mirrored Surface Composite",CobraMkIII_Armour_Reactive:"Reactive Surface Composite",Type6_Armour_Grade1:"Lightweight Alloy",Type6_Armour_Grade2:"Reinforced Alloy",Type6_Armour_Grade3:"Military Grade Composite",Type6_Armour_Mirrored:"Mirrored Surface Composite",Type6_Armour_Reactive:"Reactive Surface Composite",Dolphin_Armour_Grade1:"Lightweight Alloy",Dolphin_Armour_Grade2:"Reinforced Alloy",Dolphin_Armour_Grade3:"Military Grade Composite",Dolphin_Armour_Mirrored:"Mirrored Surface Composite",Dolphin_Armour_Reactive:"Reactive Surface Composite",Type7_Armour_Grade1:"Lightweight Alloy",Type7_Armour_Grade2:"Reinforced Alloy",Type7_Armour_Grade3:"Military Grade Composite",Type7_Armour_Mirrored:"Mirrored Surface Composite",Type7_Armour_Reactive:"Reactive Surface Composite",Asp_Armour_Grade1:"Lightweight Alloy",Asp_Armour_Grade2:"Reinforced Alloy",Asp_Armour_Grade3:"Military Grade Composite",Asp_Armour_Mirrored:"Mirrored Surface Composite",Asp_Armour_Reactive:"Reactive Surface Composite",Vulture_Armour_Grade1:"Lightweight Alloy",Vulture_Armour_Grade2:"Reinforced Alloy",Vulture_Armour_Grade3:"Military Grade Composite",Vulture_Armour_Mirrored:"Mirrored Surface Composite",Vulture_Armour_Reactive:"Reactive Surface Composite",Empire_Trader_Armour_Grade1:"Lightweight Alloy",Empire_Trader_Armour_Grade2:"Reinforced Alloy",Empire_Trader_Armour_Grade3:"Military Grade Composite",Empire_Trader_Armour_Mirrored:"Mirrored Surface Composite",Empire_Trader_Armour_Reactive:"Reactive Surface Composite",Federation_Dropship_Armour_Grade1:"Lightweight Alloy",Federation_Dropship_Armour_Grade2:"Reinforced Alloy",Federation_Dropship_Armour_Grade3:"Military Grade Composite",Federation_Dropship_Armour_Mirrored:"Mirrored Surface Composite",Federation_Dropship_Armour_Reactive:"Reactive Surface Composite",Orca_Armour_Grade1:"Lightweight Alloy",Orca_Armour_Grade2:"Reinforced Alloy",Orca_Armour_Grade3:"Military Grade Composite",Orca_Armour_Mirrored:"Mirrored Surface Composite",Orca_Armour_Reactive:"Reactive Surface Composite",Type9_Armour_Grade1:"Lightweight Alloy",Type9_Armour_Grade2:"Reinforced Alloy",Type9_Armour_Grade3:"Military Grade Composite",Type9_Armour_Mirrored:"Mirrored Surface Composite",Type9_Armour_Reactive:"Reactive Surface Composite",Python_Armour_Grade1:"Lightweight Alloy",Python_Armour_Grade2:"Reinforced Alloy",Python_Armour_Grade3:"Military Grade Composite",Python_Armour_Mirrored:"Mirrored Surface Composite",Python_Armour_Reactive:"Reactive Surface Composite",BelugaLiner_Armour_Grade1:"Lightweight Alloy",BelugaLiner_Armour_Grade2:"Reinforced Alloy",BelugaLiner_Armour_Grade3:"Military Grade Composite",BelugaLiner_Armour_Mirrored:"Mirrored Surface Composite",BelugaLiner_Armour_Reactive:"Reactive Surface Composite",FerDeLance_Armour_Grade1:"Lightweight Alloy",FerDeLance_Armour_Grade2:"Reinforced Alloy",FerDeLance_Armour_Grade3:"Military Grade Composite",FerDeLance_Armour_Mirrored:"Mirrored Surface Composite",FerDeLance_Armour_Reactive:"Reactive Surface Composite",Anaconda_Armour_Grade1:"Lightweight Alloy",Anaconda_Armour_Grade2:"Reinforced Alloy",Anaconda_Armour_Grade3:"Military Grade Composite",Anaconda_Armour_Mirrored:"Mirrored Surface Composite",Anaconda_Armour_Reactive:"Reactive Surface Composite",Federation_Corvette_Armour_Grade1:"Lightweight Alloy",Federation_Corvette_Armour_Grade2:"Reinforced Alloy",Federation_Corvette_Armour_Grade3:"Military Grade Composite",Federation_Corvette_Armour_Mirrored:"Mirrored Surface Composite",Federation_Corvette_Armour_Reactive:"Reactive Surface Composite",Cutter_Armour_Grade1:"Lightweight Alloy",Cutter_Armour_Grade2:"Reinforced Alloy",Cutter_Armour_Grade3:"Military Grade Composite",Cutter_Armour_Mirrored:"Mirrored Surface Composite",Cutter_Armour_Reactive:"Reactive Surface Composite",Int_Powerplant_Size2_Class1:"Power Plant",Int_Powerplant_Size2_Class2:"Power Plant",Int_Powerplant_Size2_Class3:"Power Plant",Int_Powerplant_Size2_Class4:"Power Plant",Int_Powerplant_Size2_Class5:"Power Plant",Int_Powerplant_Size3_Class1:"Power Plant",Int_Powerplant_Size3_Class2:"Power Plant",Int_Powerplant_Size3_Class3:"Power Plant",Int_Powerplant_Size3_Class4:"Power Plant",Int_Powerplant_Size3_Class5:"Power Plant",Int_Powerplant_Size4_Class1:"Power Plant",Int_Powerplant_Size4_Class2:"Power Plant",Int_Powerplant_Size4_Class3:"Power Plant",Int_Powerplant_Size4_Class4:"Power Plant",Int_Powerplant_Size4_Class5:"Power Plant",Int_Powerplant_Size5_Class1:"Power Plant",Int_Powerplant_Size5_Class2:"Power Plant",Int_Powerplant_Size5_Class3:"Power Plant",Int_Powerplant_Size5_Class4:"Power Plant",Int_Powerplant_Size5_Class5:"Power Plant",Int_Powerplant_Size6_Class1:"Power Plant",Int_Powerplant_Size6_Class2:"Power Plant",Int_Powerplant_Size6_Class3:"Power Plant",Int_Powerplant_Size6_Class4:"Power Plant",Int_Powerplant_Size6_Class5:"Power Plant",Int_Powerplant_Size7_Class1:"Power Plant",Int_Powerplant_Size7_Class2:"Power Plant",Int_Powerplant_Size7_Class3:"Power Plant",Int_Powerplant_Size7_Class4:"Power Plant",Int_Powerplant_Size7_Class5:"Power Plant",Int_Powerplant_Size8_Class1:"Power Plant",Int_Powerplant_Size8_Class2:"Power Plant",Int_Powerplant_Size8_Class3:"Power Plant",Int_Powerplant_Size8_Class4:"Power Plant",Int_Powerplant_Size8_Class5:"Power Plant",Int_Engine_Size2_Class1:"Thrusters",Int_Engine_Size2_Class2:"Thrusters",Int_Engine_Size2_Class3:"Thrusters",Int_Engine_Size2_Class4:"Thrusters",Int_Engine_Size2_Class5:"Thrusters",Int_Engine_Size3_Class1:"Thrusters",Int_Engine_Size3_Class2:"Thrusters",Int_Engine_Size3_Class3:"Thrusters",Int_Engine_Size3_Class4:"Thrusters",Int_Engine_Size3_Class5:"Thrusters",Int_Engine_Size4_Class1:"Thrusters",Int_Engine_Size4_Class2:"Thrusters",Int_Engine_Size4_Class3:"Thrusters",Int_Engine_Size4_Class4:"Thrusters",Int_Engine_Size4_Class5:"Thrusters",Int_Engine_Size5_Class1:"Thrusters",Int_Engine_Size5_Class2:"Thrusters",Int_Engine_Size5_Class3:"Thrusters",Int_Engine_Size5_Class4:"Thrusters",Int_Engine_Size5_Class5:"Thrusters",Int_Engine_Size6_Class1:"Thrusters",Int_Engine_Size6_Class2:"Thrusters",Int_Engine_Size6_Class3:"Thrusters",Int_Engine_Size6_Class4:"Thrusters",Int_Engine_Size6_Class5:"Thrusters",Int_Engine_Size7_Class1:"Thrusters",Int_Engine_Size7_Class2:"Thrusters",Int_Engine_Size7_Class3:"Thrusters",Int_Engine_Size7_Class4:"Thrusters",Int_Engine_Size7_Class5:"Thrusters",Int_Engine_Size8_Class1:"Thrusters",Int_Engine_Size8_Class2:"Thrusters",Int_Engine_Size8_Class3:"Thrusters",Int_Engine_Size8_Class4:"Thrusters",Int_Engine_Size8_Class5:"Thrusters",Int_Hyperdrive_Size2_Class1:"Frame Shift Drive",Int_Hyperdrive_Size2_Class2:"Frame Shift Drive",Int_Hyperdrive_Size2_Class3:"Frame Shift Drive",Int_Hyperdrive_Size2_Class4:"Frame Shift Drive",Int_Hyperdrive_Size2_Class5:"Frame Shift Drive",Int_Hyperdrive_Size3_Class1:"Frame Shift Drive",Int_Hyperdrive_Size3_Class2:"Frame Shift Drive",Int_Hyperdrive_Size3_Class3:"Frame Shift Drive",Int_Hyperdrive_Size3_Class4:"Frame Shift Drive",Int_Hyperdrive_Size3_Class5:"Frame Shift Drive",Int_Hyperdrive_Size4_Class1:"Frame Shift Drive",Int_Hyperdrive_Size4_Class2:"Frame Shift Drive",Int_Hyperdrive_Size4_Class3:"Frame Shift Drive",Int_Hyperdrive_Size4_Class4:"Frame Shift Drive",Int_Hyperdrive_Size4_Class5:"Frame Shift Drive",Int_Hyperdrive_Size5_Class1:"Frame Shift Drive",Int_Hyperdrive_Size5_Class2:"Frame Shift Drive",Int_Hyperdrive_Size5_Class3:"Frame Shift Drive",Int_Hyperdrive_Size5_Class4:"Frame Shift Drive",Int_Hyperdrive_Size5_Class5:"Frame Shift Drive",Int_Hyperdrive_Size6_Class1:"Frame Shift Drive",Int_Hyperdrive_Size6_Class2:"Frame Shift Drive",Int_Hyperdrive_Size6_Class3:"Frame Shift Drive",Int_Hyperdrive_Size6_Class4:"Frame Shift Drive",Int_Hyperdrive_Size6_Class5:"Frame Shift Drive",Int_Hyperdrive_Size7_Class1:"Frame Shift Drive",Int_Hyperdrive_Size7_Class2:"Frame Shift Drive",Int_Hyperdrive_Size7_Class3:"Frame Shift Drive",Int_Hyperdrive_Size7_Class4:"Frame Shift Drive",Int_Hyperdrive_Size7_Class5:"Frame Shift Drive",Int_LifeSupport_Size1_Class1:"Life Support",Int_LifeSupport_Size1_Class2:"Life Support",Int_LifeSupport_Size1_Class3:"Life Support",Int_LifeSupport_Size1_Class4:"Life Support",Int_LifeSupport_Size1_Class5:"Life Support",Int_LifeSupport_Size2_Class1:"Life Support",Int_LifeSupport_Size2_Class2:"Life Support",Int_LifeSupport_Size2_Class3:"Life Support",Int_LifeSupport_Size2_Class4:"Life Support",Int_LifeSupport_Size2_Class5:"Life Support",Int_LifeSupport_Size3_Class1:"Life Support",Int_LifeSupport_Size3_Class2:"Life Support",Int_LifeSupport_Size3_Class3:"Life Support",Int_LifeSupport_Size3_Class4:"Life Support",Int_LifeSupport_Size3_Class5:"Life Support",Int_LifeSupport_Size4_Class1:"Life Support",Int_LifeSupport_Size4_Class2:"Life Support",Int_LifeSupport_Size4_Class3:"Life Support",Int_LifeSupport_Size4_Class4:"Life Support",Int_LifeSupport_Size4_Class5:"Life Support",Int_LifeSupport_Size5_Class1:"Life Support",Int_LifeSupport_Size5_Class2:"Life Support",Int_LifeSupport_Size5_Class3:"Life Support",Int_LifeSupport_Size5_Class4:"Life Support",Int_LifeSupport_Size5_Class5:"Life Support",Int_LifeSupport_Size6_Class1:"Life Support",Int_LifeSupport_Size6_Class2:"Life Support",Int_LifeSupport_Size6_Class3:"Life Support",Int_LifeSupport_Size6_Class4:"Life Support",Int_LifeSupport_Size6_Class5:"Life Support",Int_LifeSupport_Size7_Class1:"Life Support",Int_LifeSupport_Size7_Class2:"Life Support",Int_LifeSupport_Size7_Class3:"Life Support",Int_LifeSupport_Size7_Class4:"Life Support",Int_LifeSupport_Size7_Class5:"Life Support",Int_LifeSupport_Size8_Class1:"Life Support",Int_LifeSupport_Size8_Class2:"Life Support",Int_LifeSupport_Size8_Class3:"Life Support",Int_LifeSupport_Size8_Class4:"Life Support",Int_LifeSupport_Size8_Class5:"Life Support",Int_PowerDistributor_Size1_Class1:"Power Distributor",Int_PowerDistributor_Size1_Class2:"Power Distributor",Int_PowerDistributor_Size1_Class3:"Power Distributor",Int_PowerDistributor_Size1_Class4:"Power Distributor",Int_PowerDistributor_Size1_Class5:"Power Distributor",Int_PowerDistributor_Size2_Class1:"Power Distributor",Int_PowerDistributor_Size2_Class2:"Power Distributor",Int_PowerDistributor_Size2_Class3:"Power Distributor",Int_PowerDistributor_Size2_Class4:"Power Distributor",Int_PowerDistributor_Size2_Class5:"Power Distributor",Int_PowerDistributor_Size3_Class1:"Power Distributor",Int_PowerDistributor_Size3_Class2:"Power Distributor",Int_PowerDistributor_Size3_Class3:"Power Distributor",Int_PowerDistributor_Size3_Class4:"Power Distributor",Int_PowerDistributor_Size3_Class5:"Power Distributor",Int_PowerDistributor_Size4_Class1:"Power Distributor",Int_PowerDistributor_Size4_Class2:"Power Distributor",Int_PowerDistributor_Size4_Class3:"Power Distributor",Int_PowerDistributor_Size4_Class4:"Power Distributor",Int_PowerDistributor_Size4_Class5:"Power Distributor",Int_PowerDistributor_Size5_Class1:"Power Distributor",Int_PowerDistributor_Size5_Class2:"Power Distributor",Int_PowerDistributor_Size5_Class3:"Power Distributor",Int_PowerDistributor_Size5_Class4:"Power Distributor",Int_PowerDistributor_Size5_Class5:"Power Distributor",Int_PowerDistributor_Size6_Class1:"Power Distributor",Int_PowerDistributor_Size6_Class2:"Power Distributor",Int_PowerDistributor_Size6_Class3:"Power Distributor",Int_PowerDistributor_Size6_Class4:"Power Distributor",Int_PowerDistributor_Size6_Class5:"Power Distributor",Int_PowerDistributor_Size7_Class1:"Power Distributor",Int_PowerDistributor_Size7_Class2:"Power Distributor",Int_PowerDistributor_Size7_Class3:"Power Distributor",Int_PowerDistributor_Size7_Class4:"Power Distributor",Int_PowerDistributor_Size7_Class5:"Power Distributor",Int_PowerDistributor_Size8_Class1:"Power Distributor",Int_PowerDistributor_Size8_Class2:"Power Distributor",Int_PowerDistributor_Size8_Class3:"Power Distributor",Int_PowerDistributor_Size8_Class4:"Power Distributor",Int_PowerDistributor_Size8_Class5:"Power Distributor",Int_Sensors_Size1_Class1:"Sensors",Int_Sensors_Size1_Class2:"Sensors",Int_Sensors_Size1_Class3:"Sensors",Int_Sensors_Size1_Class4:"Sensors",Int_Sensors_Size1_Class5:"Sensors",Int_Sensors_Size2_Class1:"Sensors",Int_Sensors_Size2_Class2:"Sensors",Int_Sensors_Size2_Class3:"Sensors",Int_Sensors_Size2_Class4:"Sensors",Int_Sensors_Size2_Class5:"Sensors",Int_Sensors_Size3_Class1:"Sensors",Int_Sensors_Size3_Class2:"Sensors",Int_Sensors_Size3_Class3:"Sensors",Int_Sensors_Size3_Class4:"Sensors",Int_Sensors_Size3_Class5:"Sensors",Int_Sensors_Size4_Class1:"Sensors",Int_Sensors_Size4_Class2:"Sensors",Int_Sensors_Size4_Class3:"Sensors",Int_Sensors_Size4_Class4:"Sensors",Int_Sensors_Size4_Class5:"Sensors",Int_Sensors_Size5_Class1:"Sensors",Int_Sensors_Size5_Class2:"Sensors",Int_Sensors_Size5_Class3:"Sensors",Int_Sensors_Size5_Class4:"Sensors",Int_Sensors_Size5_Class5:"Sensors",Int_Sensors_Size6_Class1:"Sensors",Int_Sensors_Size6_Class2:"Sensors",Int_Sensors_Size6_Class3:"Sensors",Int_Sensors_Size6_Class4:"Sensors",Int_Sensors_Size6_Class5:"Sensors",Int_Sensors_Size7_Class1:"Sensors",Int_Sensors_Size7_Class2:"Sensors",Int_Sensors_Size7_Class3:"Sensors",Int_Sensors_Size7_Class4:"Sensors",Int_Sensors_Size7_Class5:"Sensors",Int_Sensors_Size8_Class1:"Sensors",Int_Sensors_Size8_Class2:"Sensors",Int_Sensors_Size8_Class3:"Sensors",Int_Sensors_Size8_Class4:"Sensors",Int_Sensors_Size8_Class5:"Sensors",Int_FuelTank_Size1_Class3:"Fuel Tank",Int_FuelTank_Size2_Class3:"Fuel Tank",Int_FuelTank_Size3_Class3:"Fuel Tank",Int_FuelTank_Size4_Class3:"Fuel Tank",Int_FuelTank_Size5_Class3:"Fuel Tank",Int_FuelTank_Size6_Class3:"Fuel Tank",Int_FuelTank_Size7_Class3:"Fuel Tank",Int_FuelTank_Size8_Class3:"Fuel Tank",Int_PowerPlant_Size2_Class1_free:"Power Plant",Int_Engine_Size2_Class1_free:"Thrusters",Int_Hyperdrive_Size2_Class1_free:"Frame Shift Drive",Int_LifeSupport_Size1_Class1_free:"Life Support",Int_PowerDistributor_Size1_Class1_free:"Power Distributor",Int_Sensors_Size1_Class1_free:"Sensors",Int_FuelTank_Size1_Class3_free:"Fuel Tank",DiamondBack_Armour_Grade1:"Lightweight Alloy",DiamondBack_Armour_Grade2:"Reinforced Alloy",DiamondBack_Armour_Grade3:"Military Grade Composite",DiamondBack_Armour_Mirrored:"Mirrored Surface Composite",DiamondBack_Armour_Reactive:"Reactive Surface Composite",Empire_Courier_Armour_Grade1:"Lightweight Alloy",Empire_Courier_Armour_Grade2:"Reinforced Alloy",Empire_Courier_Armour_Grade3:"Military Grade Composite",Empire_Courier_Armour_Mirrored:"Mirrored Surface Composite",Empire_Courier_Armour_Reactive:"Reactive Surface Composite",DiamondBackXL_Armour_Grade1:"Lightweight Alloy",DiamondBackXL_Armour_Grade2:"Reinforced Alloy",DiamondBackXL_Armour_Grade3:"Military Grade Composite",DiamondBackXL_Armour_Mirrored:"Mirrored Surface Composite",DiamondBackXL_Armour_Reactive:"Reactive Surface Composite",Empire_Eagle_Armour_Grade1:"Lightweight Alloy",Empire_Eagle_Armour_Grade2:"Reinforced Alloy",Empire_Eagle_Armour_Grade3:"Military Grade Composite",Empire_Eagle_Armour_Mirrored:"Mirrored Surface Composite",Empire_Eagle_Armour_Reactive:"Reactive Surface Composite",Federation_Dropship_MkII_Armour_Grade1:"Lightweight Alloy",Federation_Dropship_MkII_Armour_Grade2:"Reinforced Alloy",Federation_Dropship_MkII_Armour_Grade3:"Military Grade Composite",Federation_Dropship_MkII_Armour_Mirrored:"Mirrored Surface Composite",Federation_Dropship_MkII_Armour_Reactive:"Reactive Surface Composite",Federation_Gunship_Armour_Grade1:"Lightweight Alloy",Federation_Gunship_Armour_Grade2:"Reinforced Alloy",Federation_Gunship_Armour_Grade3:"Military Grade Composite",Federation_Gunship_Armour_Mirrored:"Mirrored Surface Composite",Federation_Gunship_Armour_Reactive:"Reactive Surface Composite",Viper_MkIV_Armour_Grade1:"Lightweight Alloy",Viper_MkIV_Armour_Grade2:"Reinforced Alloy",Viper_MkIV_Armour_Grade3:"Military Grade Composite",Viper_MkIV_Armour_Mirrored:"Mirrored Surface Composite",Viper_MkIV_Armour_Reactive:"Reactive Surface Composite",CobraMkIV_Armour_Grade1:"Lightweight Alloy",CobraMkIV_Armour_Grade2:"Reinforced Alloy",CobraMkIV_Armour_Grade3:"Military Grade Composite",CobraMkIV_Armour_Mirrored:"Mirrored Surface Composite",CobraMkIV_Armour_Reactive:"Reactive Surface Composite",Independant_Trader_Armour_Grade1:"Lightweight Alloy",Independant_Trader_Armour_Grade2:"Reinforced Alloy",Independant_Trader_Armour_Grade3:"Military Grade Composite",Independant_Trader_Armour_Mirrored:"Mirrored Surface Composite",Independant_Trader_Armour_Reactive:"Reactive Surface Composite",Asp_Scout_Armour_Grade1:"Lightweight Alloy",Asp_Scout_Armour_Grade2:"Reinforced Alloy",Asp_Scout_Armour_Grade3:"Military Grade Composite",Asp_Scout_Armour_Mirrored:"Mirrored Surface Composite",Asp_Scout_Armour_Reactive:"Reactive Surface Composite",Int_Engine_Size3_Class5_Fast:"Enhanced Performance Thrusters",Int_Engine_Size2_Class5_Fast:"Enhanced Performance Thrusters",Type9_Military_Armour_Grade1:"Lightweight Alloy",Type9_Military_Armour_Grade2:"Reinforced Alloy",Type9_Military_Armour_Grade3:"Military Grade Composite",Type9_Military_Armour_Mirrored:"Mirrored Surface Composite",Type9_Military_Armour_Reactive:"Reactive Surface Composite",Krait_MkII_Armour_Grade1:"Lightweight Alloy",Krait_MkII_Armour_Grade2:"Reinforced Alloy",Krait_MkII_Armour_Grade3:"Military Grade Composite",Krait_MkII_Armour_Mirrored:"Mirrored Surface Composite",Krait_MkII_Armour_Reactive:"Reactive Surface Composite",TypeX_Armour_Grade1:"Lightweight Alloy",TypeX_Armour_Grade2:"Reinforced Alloy",TypeX_Armour_Grade3:"Military Grade Composite",TypeX_Armour_Mirrored:"Mirrored Surface Composite",TypeX_Armour_Reactive:"Reactive Surface Composite",TypeX_2_Armour_Grade1:"Lightweight Alloy",TypeX_2_Armour_Grade2:"Reinforced Alloy",TypeX_2_Armour_Grade3:"Military Grade Composite",TypeX_2_Armour_Mirrored:"Mirrored Surface Composite",TypeX_2_Armour_Reactive:"Reactive Surface Composite",TypeX_3_Armour_Grade1:"Lightweight Alloy",TypeX_3_Armour_Grade2:"Reinforced Alloy",TypeX_3_Armour_Grade3:"Military Grade Composite",TypeX_3_Armour_Mirrored:"Mirrored Surface Composite",TypeX_3_Armour_Reactive:"Reactive Surface Composite",Krait_Light_Armour_Grade1:"Lightweight Alloy",Krait_Light_Armour_Grade2:"Reinforced Alloy",Krait_Light_Armour_Grade3:"Military Grade Composite",Krait_Light_Armour_Mirrored:"Mirrored Surface Composite",Krait_Light_Armour_Reactive:"Reactive Surface Composite",Mamba_Armour_Grade1:"Lightweight Alloy",Mamba_Armour_Grade2:"Reinforced Alloy",Mamba_Armour_Grade3:"Military Grade Composite",Mamba_Armour_Mirrored:"Mirrored Surface Composite",Mamba_Armour_Reactive:"Reactive Surface Composite",Python_NX_Armour_Grade1:"Lightweight Alloy",Python_NX_Armour_Grade2:"Reinforced Alloy",Python_NX_Armour_Grade3:"Military Grade Composite",Python_NX_Armour_Mirrored:"Mirrored Surface Composite",Python_NX_Armour_Reactive:"Reactive Surface Composite",Int_Hyperdrive_Overcharge_Size5_Class3:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size7_Class3:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size6_Class3:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size4_Class3:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size3_Class3:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size2_Class3:"Frame Shift Drive (SCO)",Type8_Armour_Grade1:"Lightweight Alloy",Type8_Armour_Grade2:"Reinforced Alloy",Type8_Armour_Grade3:"Military Grade Composite",Type8_Armour_Mirrored:"Mirrored Surface Composite",Type8_Armour_Reactive:"Reactive Surface Composite",Int_Hyperdrive_Overcharge_Size2_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size2_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size2_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size2_Class5:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size3_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size3_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size3_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size3_Class5:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size4_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size4_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size4_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size4_Class5:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size5_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size5_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size5_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size5_Class5:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size6_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size6_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size6_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size6_Class5:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size7_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size7_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size7_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size7_Class5:"Frame Shift Drive (SCO)",Mandalay_Armour_Grade1:"Lightweight Alloy",Mandalay_Armour_Grade2:"Reinforced Alloy",Mandalay_Armour_Grade3:"Military Grade Composite",Mandalay_Armour_Mirrored:"Mirrored Surface Composite",Mandalay_Armour_Reactive:"Reactive Surface Composite",CobraMkV_Armour_Grade1:"Lightweight Alloy",CobraMkV_Armour_Grade2:"Reinforced Alloy",CobraMkV_Armour_Grade3:"Military Grade Composite",CobraMkV_Armour_Mirrored:"Mirrored Surface Composite",CobraMkV_Armour_Reactive:"Reactive Surface Composite",Corsair_Armour_Grade1:"Lightweight Alloy",Corsair_Armour_Grade2:"Reinforced Alloy",Corsair_Armour_Grade3:"Military Grade Composite",Corsair_Armour_Mirrored:"Mirrored Surface Composite",Corsair_Armour_Reactive:"Reactive Surface Composite",PantherMkII_Armour_Grade1:"Lightweight Alloy",PantherMkII_Armour_Grade2:"Reinforced Alloy",PantherMkII_Armour_Grade3:"Military Grade Composite",PantherMkII_Armour_Mirrored:"Mirrored Surface Composite",PantherMkII_Armour_Reactive:"Reactive Surface Composite",LakonMiner_Armour_Grade1:"Lightweight Alloy",LakonMiner_Armour_Grade2:"Reinforced Alloy",LakonMiner_Armour_Grade3:"Military Grade Composite",LakonMiner_Armour_Mirrored:"Mirrored Surface Composite",LakonMiner_Armour_Reactive:"Reactive Surface Composite",Explorer_NX_Armour_Grade1:"Mk II Ablative Lightweight Alloys",Explorer_NX_Armour_Grade2:"Mk II Ablative Reinforced Alloys",Explorer_NX_Armour_Grade3:"Mk II Ablative Military Grade Composite",Explorer_NX_Armour_Mirrored:"Mk II Ablative Mirrored Surface Composite",Explorer_NX_Armour_Reactive:"Mk II Ablative Reactive Surface Composite",Int_Hyperdrive_Overcharge_Size8_Class1:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size8_Class2:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size8_Class3:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size8_Class4:"Frame Shift Drive (SCO)",Int_Hyperdrive_Overcharge_Size8_Class5:"Frame Shift Drive (SCO)",Explorer_NX_Armour_Grade1_Default:"Lightweight Alloy",Int_Hyperdrive_Overcharge_Size8_Class5_OverchargeBooster_MkII:"Mk II Supercharge Optimised Frame Shift Drive (SCO)",Int_Engine_Size7_Class5_GravityOptimised_MkII:"Mk II Gravity Optimised Thrusters",SmallCombat01_NX_Armour_Grade1:"Lightweight Alloy",SmallCombat01_NX_Armour_Grade2:"Reinforced Alloy",SmallCombat01_NX_Armour_Grade3:"Military Grade Composite",SmallCombat01_NX_Armour_Mirrored:"Mirrored Surface Composite",SmallCombat01_NX_Armour_Reactive:"Reactive Surface Composite",Int_MkIIAgileBoost_Engine_Size5_Class5:"Mk II Agile Boost Thrusters",MediumTransport01_Armour_Grade1:"Lightweight Alloy",MediumTransport01_Armour_Grade2:"Reinforced Alloy",MediumTransport01_Armour_Grade3:"Military Grade Composite",MediumTransport01_Armour_Mirrored:"Mirrored Surface Composite",MediumTransport01_Armour_Reactive:"Reactive Surface Composite",Int_DockingComputer_Standard:"Standard Docking Computer",Int_ShieldGenerator_Size1_Class1:"Shield Generator",Int_ShieldGenerator_Size1_Class2:"Shield Generator",Int_ShieldGenerator_Size1_Class3:"Shield Generator",Int_ShieldGenerator_Size1_Class4:"Shield Generator",Int_ShieldGenerator_Size1_Class5:"Shield Generator",Int_ShieldGenerator_Size2_Class1:"Shield Generator",Int_ShieldGenerator_Size2_Class2:"Shield Generator",Int_ShieldGenerator_Size2_Class3:"Shield Generator",Int_ShieldGenerator_Size2_Class4:"Shield Generator",Int_ShieldGenerator_Size2_Class5:"Shield Generator",Int_ShieldGenerator_Size3_Class1:"Shield Generator",Int_ShieldGenerator_Size3_Class2:"Shield Generator",Int_ShieldGenerator_Size3_Class3:"Shield Generator",Int_ShieldGenerator_Size3_Class4:"Shield Generator",Int_ShieldGenerator_Size3_Class5:"Shield Generator",Int_ShieldGenerator_Size4_Class1:"Shield Generator",Int_ShieldGenerator_Size4_Class2:"Shield Generator",Int_ShieldGenerator_Size4_Class3:"Shield Generator",Int_ShieldGenerator_Size4_Class4:"Shield Generator",Int_ShieldGenerator_Size4_Class5:"Shield Generator",Int_ShieldGenerator_Size5_Class1:"Shield Generator",Int_ShieldGenerator_Size5_Class2:"Shield Generator",Int_ShieldGenerator_Size5_Class3:"Shield Generator",Int_ShieldGenerator_Size5_Class4:"Shield Generator",Int_ShieldGenerator_Size5_Class5:"Shield Generator",Int_ShieldGenerator_Size6_Class1:"Shield Generator",Int_ShieldGenerator_Size6_Class2:"Shield Generator",Int_ShieldGenerator_Size6_Class3:"Shield Generator",Int_ShieldGenerator_Size6_Class4:"Shield Generator",Int_ShieldGenerator_Size6_Class5:"Shield Generator",Int_ShieldGenerator_Size7_Class1:"Shield Generator",Int_ShieldGenerator_Size7_Class2:"Shield Generator",Int_ShieldGenerator_Size7_Class3:"Shield Generator",Int_ShieldGenerator_Size7_Class4:"Shield Generator",Int_ShieldGenerator_Size7_Class5:"Shield Generator",Int_ShieldGenerator_Size8_Class1:"Shield Generator",Int_ShieldGenerator_Size8_Class2:"Shield Generator",Int_ShieldGenerator_Size8_Class3:"Shield Generator",Int_ShieldGenerator_Size8_Class4:"Shield Generator",Int_ShieldGenerator_Size8_Class5:"Shield Generator",Int_ShieldCellBank_Size1_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size1_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size1_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size1_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size1_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size2_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size2_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size2_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size2_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size2_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size3_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size3_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size3_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size3_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size3_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size4_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size4_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size4_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size4_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size4_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size5_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size5_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size5_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size5_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size5_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size6_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size6_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size6_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size6_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size6_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size7_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size7_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size7_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size7_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size7_Class5:"Shield Cell Bank",Int_ShieldCellBank_Size8_Class1:"Shield Cell Bank",Int_ShieldCellBank_Size8_Class2:"Shield Cell Bank",Int_ShieldCellBank_Size8_Class3:"Shield Cell Bank",Int_ShieldCellBank_Size8_Class4:"Shield Cell Bank",Int_ShieldCellBank_Size8_Class5:"Shield Cell Bank",Int_CargoRack_Size1_Class1:"Cargo Rack",Int_CargoRack_Size2_Class1:"Cargo Rack",Int_CargoRack_Size3_Class1:"Cargo Rack",Int_CargoRack_Size4_Class1:"Cargo Rack",Int_CargoRack_Size5_Class1:"Cargo Rack",Int_CargoRack_Size6_Class1:"Cargo Rack",Int_CargoRack_Size7_Class1:"Cargo Rack",Int_CargoRack_Size8_Class1:"Cargo Rack",Int_DroneControl_ResourceSiphon:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size1_Class1:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size1_Class2:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size1_Class3:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size1_Class4:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size1_Class5:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size3_Class1:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size3_Class2:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size3_Class3:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size3_Class4:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size3_Class5:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size5_Class1:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size5_Class2:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size5_Class3:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size5_Class4:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size5_Class5:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size7_Class1:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size7_Class2:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size7_Class3:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size7_Class4:"Hatch Breaker Limpet Controller",Int_DroneControl_ResourceSiphon_Size7_Class5:"Hatch Breaker Limpet Controller",Int_DetailedSurfaceScanner_Tiny:"Detailed Surface Scanner",Int_ShieldGenerator_Size2_Class1_free:"Shield Generator",Int_CargoRack_Size2_Class1_free:"Cargo Rack",Int_FuelScoop_Size1_Class1:"Fuel Scoop",Int_FuelScoop_Size2_Class1:"Fuel Scoop",Int_FuelScoop_Size3_Class1:"Fuel Scoop",Int_FuelScoop_Size4_Class1:"Fuel Scoop",Int_FuelScoop_Size5_Class1:"Fuel Scoop",Int_FuelScoop_Size6_Class1:"Fuel Scoop",Int_FuelScoop_Size7_Class1:"Fuel Scoop",Int_FuelScoop_Size8_Class1:"Fuel Scoop",Int_FuelScoop_Size1_Class2:"Fuel Scoop",Int_FuelScoop_Size2_Class2:"Fuel Scoop",Int_FuelScoop_Size3_Class2:"Fuel Scoop",Int_FuelScoop_Size4_Class2:"Fuel Scoop",Int_FuelScoop_Size5_Class2:"Fuel Scoop",Int_FuelScoop_Size6_Class2:"Fuel Scoop",Int_FuelScoop_Size7_Class2:"Fuel Scoop",Int_FuelScoop_Size8_Class2:"Fuel Scoop",Int_FuelScoop_Size1_Class3:"Fuel Scoop",Int_FuelScoop_Size2_Class3:"Fuel Scoop",Int_FuelScoop_Size3_Class3:"Fuel Scoop",Int_FuelScoop_Size4_Class3:"Fuel Scoop",Int_FuelScoop_Size5_Class3:"Fuel Scoop",Int_FuelScoop_Size6_Class3:"Fuel Scoop",Int_FuelScoop_Size7_Class3:"Fuel Scoop",Int_FuelScoop_Size8_Class3:"Fuel Scoop",Int_FuelScoop_Size1_Class4:"Fuel Scoop",Int_FuelScoop_Size2_Class4:"Fuel Scoop",Int_FuelScoop_Size3_Class4:"Fuel Scoop",Int_FuelScoop_Size4_Class4:"Fuel Scoop",Int_FuelScoop_Size5_Class4:"Fuel Scoop",Int_FuelScoop_Size6_Class4:"Fuel Scoop",Int_FuelScoop_Size7_Class4:"Fuel Scoop",Int_FuelScoop_Size8_Class4:"Fuel Scoop",Int_FuelScoop_Size1_Class5:"Fuel Scoop",Int_FuelScoop_Size2_Class5:"Fuel Scoop",Int_FuelScoop_Size3_Class5:"Fuel Scoop",Int_FuelScoop_Size4_Class5:"Fuel Scoop",Int_FuelScoop_Size5_Class5:"Fuel Scoop",Int_FuelScoop_Size6_Class5:"Fuel Scoop",Int_FuelScoop_Size7_Class5:"Fuel Scoop",Int_FuelScoop_Size8_Class5:"Fuel Scoop",Int_Refinery_Size1_Class1:"Refinery",Int_Refinery_Size2_Class1:"Refinery",Int_Refinery_Size3_Class1:"Refinery",Int_Refinery_Size4_Class1:"Refinery",Int_Refinery_Size1_Class2:"Refinery",Int_Refinery_Size2_Class2:"Refinery",Int_Refinery_Size3_Class2:"Refinery",Int_Refinery_Size4_Class2:"Refinery",Int_Refinery_Size1_Class3:"Refinery",Int_Refinery_Size2_Class3:"Refinery",Int_Refinery_Size3_Class3:"Refinery",Int_Refinery_Size4_Class3:"Refinery",Int_Refinery_Size1_Class4:"Refinery",Int_Refinery_Size2_Class4:"Refinery",Int_Refinery_Size3_Class4:"Refinery",Int_Refinery_Size4_Class4:"Refinery",Int_Refinery_Size1_Class5:"Refinery",Int_Refinery_Size2_Class5:"Refinery",Int_Refinery_Size3_Class5:"Refinery",Int_Refinery_Size4_Class5:"Refinery",Int_FSDInterdictor_Size1_Class1:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size2_Class1:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size3_Class1:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size4_Class1:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size1_Class2:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size2_Class2:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size3_Class2:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size4_Class2:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size1_Class3:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size2_Class3:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size3_Class3:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size4_Class3:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size1_Class4:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size2_Class4:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size3_Class4:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size4_Class4:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size1_Class5:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size2_Class5:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size3_Class5:"Frame Shift Drive Interdictor",Int_FSDInterdictor_Size4_Class5:"Frame Shift Drive Interdictor",Int_Repairer_Size1_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size2_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size3_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size4_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size5_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size6_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size7_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size8_Class1:"Auto Field-Maintenance Unit",Int_Repairer_Size1_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size2_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size3_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size4_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size5_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size6_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size7_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size8_Class2:"Auto Field-Maintenance Unit",Int_Repairer_Size1_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size2_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size3_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size4_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size5_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size6_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size7_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size8_Class3:"Auto Field-Maintenance Unit",Int_Repairer_Size1_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size2_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size3_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size4_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size5_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size6_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size7_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size8_Class4:"Auto Field-Maintenance Unit",Int_Repairer_Size1_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size2_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size3_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size4_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size5_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size6_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size7_Class5:"Auto Field-Maintenance Unit",Int_Repairer_Size8_Class5:"Auto Field-Maintenance Unit",Int_HullReinforcement_Size1_Class1:"Hull Reinforcement Package",Int_HullReinforcement_Size1_Class2:"Hull Reinforcement Package",Int_HullReinforcement_Size2_Class1:"Hull Reinforcement Package",Int_HullReinforcement_Size2_Class2:"Hull Reinforcement Package",Int_HullReinforcement_Size3_Class1:"Hull Reinforcement Package",Int_HullReinforcement_Size3_Class2:"Hull Reinforcement Package",Int_HullReinforcement_Size4_Class1:"Hull Reinforcement Package",Int_HullReinforcement_Size4_Class2:"Hull Reinforcement Package",Int_HullReinforcement_Size5_Class1:"Hull Reinforcement Package",Int_HullReinforcement_Size5_Class2:"Hull Reinforcement Package",Int_DroneControl_Collection_Size1_Class1:"Collector Limpet Controller",Int_DroneControl_Collection_Size1_Class2:"Collector Limpet Controller",Int_DroneControl_Collection_Size1_Class3:"Collector Limpet Controller",Int_DroneControl_Collection_Size1_Class4:"Collector Limpet Controller",Int_DroneControl_Collection_Size1_Class5:"Collector Limpet Controller",Int_DroneControl_Collection_Size3_Class1:"Collector Limpet Controller",Int_DroneControl_Collection_Size3_Class2:"Collector Limpet Controller",Int_DroneControl_Collection_Size3_Class3:"Collector Limpet Controller",Int_DroneControl_Collection_Size3_Class4:"Collector Limpet Controller",Int_DroneControl_Collection_Size3_Class5:"Collector Limpet Controller",Int_DroneControl_Collection_Size5_Class1:"Collector Limpet Controller",Int_DroneControl_Collection_Size5_Class2:"Collector Limpet Controller",Int_DroneControl_Collection_Size5_Class3:"Collector Limpet Controller",Int_DroneControl_Collection_Size5_Class4:"Collector Limpet Controller",Int_DroneControl_Collection_Size5_Class5:"Collector Limpet Controller",Int_DroneControl_Collection_Size7_Class1:"Collector Limpet Controller",Int_DroneControl_Collection_Size7_Class2:"Collector Limpet Controller",Int_DroneControl_Collection_Size7_Class3:"Collector Limpet Controller",Int_DroneControl_Collection_Size7_Class4:"Collector Limpet Controller",Int_DroneControl_Collection_Size7_Class5:"Collector Limpet Controller",Int_DroneControl_FuelTransfer_Size1_Class1:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size1_Class2:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size1_Class3:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size1_Class4:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size1_Class5:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size3_Class1:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size3_Class2:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size3_Class3:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size3_Class4:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size3_Class5:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size5_Class1:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size5_Class2:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size5_Class3:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size5_Class4:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size5_Class5:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size7_Class1:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size7_Class2:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size7_Class3:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size7_Class4:"Fuel Transfer Limpet Controller",Int_DroneControl_FuelTransfer_Size7_Class5:"Fuel Transfer Limpet Controller",Int_DroneControl_Prospector_Size1_Class1:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size1_Class2:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size1_Class3:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size1_Class4:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size1_Class5:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size3_Class1:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size3_Class2:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size3_Class3:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size3_Class4:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size3_Class5:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size5_Class1:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size5_Class2:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size5_Class3:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size5_Class4:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size5_Class5:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size7_Class1:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size7_Class2:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size7_Class3:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size7_Class4:"Prospector Limpet Controller",Int_DroneControl_Prospector_Size7_Class5:"Prospector Limpet Controller",Int_ShieldGenerator_Size1_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size2_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size3_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size4_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size5_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size6_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size7_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size8_Class5_Strong:"Prismatic Shield Generator",Int_ShieldGenerator_Size1_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size2_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size3_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size4_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size5_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size6_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size7_Class3_Fast:"Bi-Weave Shield Generator",Int_ShieldGenerator_Size8_Class3_Fast:"Bi-Weave Shield Generator",Int_BuggyBay_Size2_Class1:"Planetary Vehicle Hangar",Int_BuggyBay_Size2_Class2:"Planetary Vehicle Hangar",Int_BuggyBay_Size4_Class1:"Planetary Vehicle Hangar",Int_BuggyBay_Size4_Class2:"Planetary Vehicle Hangar",Int_BuggyBay_Size6_Class1:"Planetary Vehicle Hangar",Int_BuggyBay_Size6_Class2:"Planetary Vehicle Hangar",Int_PlanetApproachSuite:"Planetary Approach Suite",Int_CorrosionProofCargoRack_Size1_Class1:"Corrosion Resistant Cargo Rack",Int_CorrosionProofCargoRack_Size1_Class2:"Corrosion Resistant Cargo Rack",Int_CorrosionProofCargoRack_Size5_Class1:"Corrosion Resistant Cargo Rack",Int_CorrosionProofCargoRack_Size6_Class1:"Corrosion Resistant Cargo Rack",ModularCargoBayDoor:"Cargo Hatch",Int_PassengerCabin_Size4_Class1:"Economy Class Passenger Cabin",Int_PassengerCabin_Size4_Class2:"Business Class Passenger Cabin",Int_PassengerCabin_Size4_Class3:"First Class Passenger Cabin",Int_PassengerCabin_Size5_Class4:"Luxury Class Passenger Cabin",Int_PassengerCabin_Size6_Class1:"Economy Class Passenger Cabin",Int_PassengerCabin_Size6_Class2:"Business Class Passenger Cabin",Int_PassengerCabin_Size6_Class3:"First Class Passenger Cabin",Int_PassengerCabin_Size6_Class4:"Luxury Class Passenger Cabin",Int_FighterBay_Size5_Class1:"Mk I Vessel Hangar",Int_FighterBay_Size6_Class1:"Mk I Vessel Hangar",Int_FighterBay_Size7_Class1:"Mk I Vessel Hangar",Int_FighterBay_Size5_Class1_Free:"Mk I Vessel Hangar",Int_FighterBay_Size6_Class1_Free:"Mk I Vessel Hangar",Int_FighterBay_Size7_Class1_Free:"Mk I Vessel Hangar",Int_FighterBayMk2_Size5_Class1:"Mk II Vessel Hangar",Int_FighterBayMk2_Size6_Class1:"Mk II Vessel Hangar",Int_FighterBayMk2_Size7_Class1:"Mk II Vessel Hangar",Int_FighterBayMk2_Size5_Class1_Free:"Mk II Vessel Hangar",Int_FighterBayMk2_Size6_Class1_Free:"Mk II Vessel Hangar",Int_FighterBayMk2_Size7_Class1_Free:"Mk II Vessel Hangar",Int_PassengerCabin_Size2_Class1:"Economy Class Passenger Cabin",Int_PassengerCabin_Size3_Class1:"Economy Class Passenger Cabin",Int_PassengerCabin_Size3_Class2:"Business Class Passenger Cabin",Int_PassengerCabin_Size5_Class1:"Economy Class Passenger Cabin",Int_PassengerCabin_Size5_Class2:"Business Class Passenger Cabin",Int_PassengerCabin_Size5_Class3:"First Class Passenger Cabin",Int_ModuleReinforcement_Size1_Class1:"Module Reinforcement Package",Int_ModuleReinforcement_Size1_Class2:"Module Reinforcement Package",Int_ModuleReinforcement_Size2_Class1:"Module Reinforcement Package",Int_ModuleReinforcement_Size2_Class2:"Module Reinforcement Package",Int_ModuleReinforcement_Size3_Class1:"Module Reinforcement Package",Int_ModuleReinforcement_Size3_Class2:"Module Reinforcement Package",Int_ModuleReinforcement_Size4_Class1:"Module Reinforcement Package",Int_ModuleReinforcement_Size4_Class2:"Module Reinforcement Package",Int_ModuleReinforcement_Size5_Class1:"Module Reinforcement Package",Int_ModuleReinforcement_Size5_Class2:"Module Reinforcement Package",Int_DroneControl_Repair_Size1_Class1:"Repair Limpet Controller",Int_DroneControl_Repair_Size1_Class2:"Repair Limpet Controller",Int_DroneControl_Repair_Size1_Class3:"Repair Limpet Controller",Int_DroneControl_Repair_Size1_Class4:"Repair Limpet Controller",Int_DroneControl_Repair_Size1_Class5:"Repair Limpet Controller",Int_DroneControl_Repair_Size3_Class1:"Repair Limpet Controller",Int_DroneControl_Repair_Size3_Class2:"Repair Limpet Controller",Int_DroneControl_Repair_Size3_Class3:"Repair Limpet Controller",Int_DroneControl_Repair_Size3_Class4:"Repair Limpet Controller",Int_DroneControl_Repair_Size3_Class5:"Repair Limpet Controller",Int_DroneControl_Repair_Size5_Class1:"Repair Limpet Controller",Int_DroneControl_Repair_Size5_Class2:"Repair Limpet Controller",Int_DroneControl_Repair_Size5_Class3:"Repair Limpet Controller",Int_DroneControl_Repair_Size5_Class4:"Repair Limpet Controller",Int_DroneControl_Repair_Size5_Class5:"Repair Limpet Controller",Int_DroneControl_Repair_Size7_Class1:"Repair Limpet Controller",Int_DroneControl_Repair_Size7_Class2:"Repair Limpet Controller",Int_DroneControl_Repair_Size7_Class3:"Repair Limpet Controller",Int_DroneControl_Repair_Size7_Class4:"Repair Limpet Controller",Int_DroneControl_Repair_Size7_Class5:"Repair Limpet Controller",Int_DroneControl_UnkVesselResearch:"Research Limpet Controller",Int_MetaAlloyHullReinforcement_Size1_Class1:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size1_Class2:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size2_Class1:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size2_Class2:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size3_Class1:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size3_Class2:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size4_Class1:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size4_Class2:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size5_Class1:"Meta Alloy Hull Reinforcement",Int_MetaAlloyHullReinforcement_Size5_Class2:"Meta Alloy Hull Reinforcement",Int_DroneControl_Decontamination_Size1_Class1:"Decontamination Limpet Controller",Int_DroneControl_Decontamination_Size3_Class1:"Decontamination Limpet Controller",Int_DroneControl_Decontamination_Size5_Class1:"Decontamination Limpet Controller",Int_DroneControl_Decontamination_Size7_Class1:"Decontamination Limpet Controller",Int_CorrosionProofCargoRack_Size4_Class1:"Corrosion Resistant Cargo Rack",Int_GuardianHullReinforcement_Size1_Class1:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size1_Class2:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size2_Class1:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size2_Class2:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size3_Class1:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size3_Class2:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size4_Class1:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size4_Class2:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size5_Class1:"Guardian Hull Reinforcement",Int_GuardianHullReinforcement_Size5_Class2:"Guardian Hull Reinforcement",Int_GuardianModuleReinforcement_Size1_Class1:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size1_Class2:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size2_Class1:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size2_Class2:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size3_Class1:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size3_Class2:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size4_Class1:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size4_Class2:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size5_Class1:"Guardian Module Reinforcement",Int_GuardianModuleReinforcement_Size5_Class2:"Guardian Module Reinforcement",Int_GuardianShieldReinforcement_Size1_Class1:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size1_Class2:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size2_Class1:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size2_Class2:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size3_Class1:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size3_Class2:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size4_Class1:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size4_Class2:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size5_Class1:"Guardian Shield Reinforcement",Int_GuardianShieldReinforcement_Size5_Class2:"Guardian Shield Reinforcement",Int_GuardianFSDBooster_Size1:"Guardian FSD Booster",Int_GuardianFSDBooster_Size2:"Guardian FSD Booster",Int_GuardianFSDBooster_Size3:"Guardian FSD Booster",Int_GuardianFSDBooster_Size4:"Guardian FSD Booster",Int_GuardianFSDBooster_Size5:"Guardian FSD Booster",Int_GuardianPowerDistributor_Size1:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size2:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size3:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size4:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size5:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size6:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size7:"Guardian Hybrid Power Distributor",Int_GuardianPowerDistributor_Size8:"Guardian Hybrid Power Distributor",Int_GuardianPowerplant_Size2:"Guardian Hybrid Power Plant",Int_GuardianPowerplant_Size3:"Guardian Hybrid Power Plant",Int_GuardianPowerplant_Size4:"Guardian Hybrid Power Plant",Int_GuardianPowerplant_Size5:"Guardian Hybrid Power Plant",Int_GuardianPowerplant_Size6:"Guardian Hybrid Power Plant",Int_GuardianPowerplant_Size7:"Guardian Hybrid Power Plant",Int_GuardianPowerplant_Size8:"Guardian Hybrid Power Plant",Int_DroneControl_Recon_Size1_Class1:"Recon Limpet Controller",Int_DroneControl_Recon_Size3_Class1:"Recon Limpet Controller",Int_DroneControl_Recon_Size5_Class1:"Recon Limpet Controller",Int_DroneControl_Recon_Size7_Class1:"Recon Limpet Controller",Int_SupercruiseAssist:"Supercruise Assist",Int_DockingComputer_Advanced:"Advanced Docking Computer",Int_PlanetApproachSuite_Advanced:"Advanced Planetary Approach Suite",Int_MultiDroneControl_Mining_Size3_Class1:"Mining Multi Limpet Controller",Int_MultiDroneControl_Mining_Size3_Class3:"Mining Multi Limpet Controller",Int_MultiDroneControl_Operations_Size3_Class3:"Operations Multi Limpet Controller",Int_MultiDroneControl_Operations_Size3_Class4:"Operations Multi Limpet Controller",Int_MultiDroneControl_Rescue_Size3_Class2:"Rescue Multi Limpet Controller",Int_MultiDroneControl_Rescue_Size3_Class3:"Rescue Multi Limpet Controller",Int_MultiDroneControl_Xeno_Size3_Class3:"Xeno Multi Limpet Controller",Int_MultiDroneControl_Xeno_Size3_Class4:"Xeno Multi Limpet Controller",Int_MultiDroneControl_Universal_Size7_Class3:"Universal Multi Limpet Controller",Int_MultiDroneControl_Universal_Size7_Class5:"Universal Multi Limpet Controller",Int_ExpModuleStabiliser_Size3_Class3:"Experimental Weapon Stabiliser",Int_ExpModuleStabiliser_Size5_Class3:"Experimental Weapon Stabiliser",Int_LargeCargoRack_Size7_Class1:"Mk II Cargo Rack",Int_LargeCargoRack_Size8_class1:"Mk II Cargo Rack",Int_MultiDroneControl_MiningV2_Size5_Class5:"Mk II Mining Multi-Limpet Controller",Int_MkII_PassengerCabin_Size2_Class1:"MkII Economy Class Passenger Cabin",Int_MkII_PassengerCabin_Size3_Class1:"MkII Economy Class Passenger Cabin",Int_MkII_PassengerCabin_Size3_Class2:"MkII Business Class Passenger Cabin",Int_MkII_PassengerCabin_Size4_Class1:"MkII Economy Class Passenger Cabin",Int_MkII_PassengerCabin_Size4_Class2:"MkII Business Class Passenger Cabin",Int_MkII_PassengerCabin_Size5_Class1:"MkII Economy Class Passenger Cabin",Int_MkII_PassengerCabin_Size5_Class2:"MkII Business Class Passenger Cabin",Int_MkII_PassengerCabin_Size6_Class1:"MkII Economy Class Passenger Cabin",Int_MkII_PassengerCabin_Size6_Class2:"MkII Business Class Passenger Cabin",Hpt_PulseLaser_Fixed_Small:"Pulse Laser",Hpt_PulseLaser_Fixed_Medium:"Pulse Laser",Hpt_PulseLaser_Fixed_Large:"Pulse Laser",Hpt_PulseLaser_Fixed_Huge:"Pulse Laser",Hpt_PulseLaser_Gimbal_Small:"Pulse Laser",Hpt_PulseLaser_Gimbal_Medium:"Pulse Laser",Hpt_PulseLaser_Gimbal_Large:"Pulse Laser",Hpt_PulseLaser_Turret_Small:"Pulse Laser",Hpt_PulseLaser_Turret_Medium:"Pulse Laser",Hpt_PulseLaser_Turret_Large:"Pulse Laser",Hpt_PulseLaserBurst_Fixed_Small:"Burst Laser",Hpt_PulseLaserBurst_Fixed_Medium:"Burst Laser",Hpt_PulseLaserBurst_Fixed_Large:"Burst Laser",Hpt_PulseLaserBurst_Fixed_Huge:"Burst Laser",Hpt_PulseLaserBurst_Gimbal_Small:"Burst Laser",Hpt_PulseLaserBurst_Gimbal_Medium:"Burst Laser",Hpt_PulseLaserBurst_Gimbal_Large:"Burst Laser",Hpt_PulseLaserBurst_Turret_Small:"Burst Laser",Hpt_PulseLaserBurst_Turret_Medium:"Burst Laser",Hpt_PulseLaserBurst_Turret_Large:"Burst Laser",Hpt_BeamLaser_Fixed_Small:"Beam Laser",Hpt_BeamLaser_Fixed_Medium:"Beam Laser",Hpt_BeamLaser_Fixed_Large:"Beam Laser",Hpt_BeamLaser_Fixed_Huge:"Beam Laser",Hpt_BeamLaser_Gimbal_Small:"Beam Laser",Hpt_BeamLaser_Gimbal_Medium:"Beam Laser",Hpt_BeamLaser_Gimbal_Large:"Beam Laser",Hpt_BeamLaser_Turret_Small:"Beam Laser",Hpt_BeamLaser_Turret_Medium:"Beam Laser",Hpt_BeamLaser_Turret_Large:"Beam Laser",Hpt_Cannon_Fixed_Small:"Cannon",Hpt_Cannon_Fixed_Medium:"Cannon",Hpt_Cannon_Fixed_Large:"Cannon",Hpt_Cannon_Fixed_Huge:"Cannon",Hpt_Cannon_Gimbal_Small:"Cannon",Hpt_Cannon_Gimbal_Medium:"Cannon",Hpt_Cannon_Gimbal_Huge:"Cannon",Hpt_Cannon_Turret_Small:"Cannon",Hpt_Cannon_Turret_Medium:"Cannon",Hpt_Cannon_Turret_Large:"Cannon",Hpt_Slugshot_Fixed_Small:"Fragment Cannon",Hpt_Slugshot_Fixed_Medium:"Fragment Cannon",Hpt_Slugshot_Fixed_Large:"Fragment Cannon",Hpt_Slugshot_Gimbal_Small:"Fragment Cannon",Hpt_Slugshot_Gimbal_Medium:"Fragment Cannon",Hpt_Slugshot_Turret_Small:"Fragment Cannon",Hpt_Slugshot_Turret_Medium:"Fragment Cannon",Hpt_MultiCannon_Fixed_Small:"Multi-Cannon",Hpt_MultiCannon_Fixed_Medium:"Multi-Cannon",Hpt_MultiCannon_Fixed_Large:"Multi-Cannon",Hpt_MultiCannon_Fixed_Huge:"Multi-Cannon",Hpt_MultiCannon_Gimbal_Small:"Multi-Cannon",Hpt_MultiCannon_Gimbal_Medium:"Multi-Cannon",Hpt_MultiCannon_Gimbal_Large:"Multi-Cannon",Hpt_MultiCannon_Turret_Small:"Multi-Cannon",Hpt_MultiCannon_Turret_Medium:"Multi-Cannon",Hpt_MultiCannon_Turret_Large:"Multi-Cannon",Hpt_PlasmaAccelerator_Fixed_Medium:"Plasma Accelerator",Hpt_PlasmaAccelerator_Fixed_Large:"Plasma Accelerator",Hpt_PlasmaAccelerator_Fixed_Huge:"Plasma Accelerator",Hpt_Railgun_Fixed_Small:"Rail Gun",Hpt_Railgun_Fixed_Medium:"Rail Gun",Hpt_BasicMissileRack_Fixed_Small:"Seeker Missile Rack",Hpt_BasicMissileRack_Fixed_Medium:"Seeker Missile Rack",Hpt_BasicMissileRack_Fixed_Large:"Seeker Missile Rack",Hpt_MineLauncher_Fixed_Small:"Mine Launcher",Hpt_MineLauncher_Fixed_Medium:"Mine Launcher",Hpt_AdvancedTorpPylon_Fixed_Small:"Torpedo Pylon",Hpt_AdvancedTorpPylon_Fixed_Medium:"Torpedo Pylon",Hpt_AdvancedTorpPylon_Fixed_Large:"Torpedo Pylon",Hpt_MiningLaser_Fixed_Small:"Mining Laser",Hpt_MiningLaser_Fixed_Medium:"Mining Laser",Hpt_DumbfireMissileRack_Fixed_Small:"Missile Rack",Hpt_DumbfireMissileRack_Fixed_Medium:"Missile Rack",Hpt_Cannon_Gimbal_Large:"Cannon",Hpt_Slugshot_Gimbal_Large:"Fragment Cannon",Hpt_Slugshot_Turret_Large:"Fragment Cannon",Hpt_PlasmaAccelerator_Fixed_Large_Advanced:"Advanced Plasma Accelerator",Hpt_MiningLaser_Fixed_Small_Advanced:"Mining Lance",Hpt_Railgun_Fixed_Medium_Burst:"Imperial Hammer Rail Gun",Hpt_PulseLaser_Fixed_Medium_Disruptor:"Pulse Disruptor Laser",Hpt_Slugshot_Fixed_Large_Range:"Pacifier Frag-Cannon",Hpt_DrunkMissileRack_Fixed_Medium:"Pack-Hound Missile Rack",Hpt_MultiCannon_Fixed_Small_Strong:"Enforcer Cannon",Hpt_BeamLaser_Fixed_Small_Heat:"Retributor Beam Laser",Hpt_MineLauncher_Fixed_Small_Impulse:"Shock Mine Launcher",Hpt_PulseLaserBurst_Fixed_Small_Scatter:"Cytoscrambler Burst Laser",Hpt_BeamLaser_Gimbal_Huge:"Beam Laser",Hpt_PulseLaser_Gimbal_Huge:"Pulse Laser",Hpt_MultiCannon_Gimbal_Huge:"Multi-Cannon",Hpt_PulseLaserBurst_Gimbal_Huge:"Burst Laser",Hpt_DumbfireMissileRack_Fixed_Medium_Lasso:"Rocket Propelled FSD Disruptor",Hpt_MiningLaser_Turret_Small:"Mining Laser",Hpt_MiningLaser_Turret_Medium:"Mining Laser",Hpt_FlakMortar_Fixed_Medium:"Remote Release Flak Launcher",Hpt_ATDumbfireMissile_Fixed_Medium:"AX Missile Rack",Hpt_ATDumbfireMissile_Fixed_Large:"AX Missile Rack",Hpt_ATMultiCannon_Fixed_Medium:"AX Multi-Cannon",Hpt_ATMultiCannon_Fixed_Large:"AX Multi-Cannon",Hpt_ATDumbfireMissile_Turret_Medium:"AX Missile Rack",Hpt_ATDumbfireMissile_Turret_Large:"AX Missile Rack",Hpt_FlakMortar_Turret_Medium:"Remote Release Flak Launcher",Hpt_ATMultiCannon_Turret_Medium:"AX Multi-Cannon",Hpt_ATMultiCannon_Turret_Large:"AX Multi-Cannon",Hpt_Guardian_GaussCannon_Fixed_Medium:"Guardian Gauss Cannon",Hpt_CausticMissile_Fixed_Medium:"Enzyme Missile Rack",Hpt_FlechetteLauncher_Fixed_Medium:"Remote Release Flechette Launcher",Hpt_FlechetteLauncher_Turret_Medium:"Remote Release Flechette Launcher",Hpt_Guardian_PlasmaLauncher_Fixed_Medium:"Guardian Plasma Charger",Hpt_Guardian_PlasmaLauncher_Turret_Medium:"Guardian Plasma Charger",Hpt_Guardian_ShardCannon_Fixed_Medium:"Guardian Shard Cannon",Hpt_Guardian_ShardCannon_Turret_Medium:"Guardian Shard Cannon",Hpt_PlasmaShockCannon_Fixed_Medium:"Shock Cannon",Hpt_PlasmaShockCannon_Gimbal_Medium:"Shock Cannon",Hpt_PlasmaShockCannon_Turret_Medium:"Shock Cannon",Hpt_Guardian_ShardCannon_Fixed_Large:"Guardian Shard Cannon",Hpt_Guardian_ShardCannon_Turret_Large:"Guardian Shard Cannon",Hpt_PlasmaShockCannon_Fixed_Large:"Shock Cannon",Hpt_PlasmaShockCannon_Gimbal_Large:"Shock Cannon",Hpt_PlasmaShockCannon_Turret_Large:"Shock Cannon",Hpt_Guardian_PlasmaLauncher_Fixed_Large:"Guardian Plasma Charger",Hpt_Guardian_PlasmaLauncher_Turret_Large:"Guardian Plasma Charger",Hpt_DumbfireMissileRack_Fixed_Large:"Missile Rack",Hpt_PlasmaShockCannon_Turret_Small:"Shock Cannon",Hpt_PlasmaShockCannon_Gimbal_Small:"Shock Cannon",Hpt_PlasmaShockCannon_Fixed_Small:"Shock Cannon",Hpt_Guardian_PlasmaLauncher_Turret_Small:"Guardian Plasma Charger",Hpt_Guardian_PlasmaLauncher_Fixed_Small:"Guardian Plasma Charger",Hpt_Guardian_ShardCannon_Turret_Small:"Guardian Shard Cannon",Hpt_Guardian_ShardCannon_Fixed_Small:"Guardian Shard Cannon",Hpt_Guardian_GaussCannon_Fixed_Small:"Guardian Gauss Cannon",Hpt_Mining_SubSurfDispMisle_Fixed_Small:"Sub-Surface Displacement Missile",Hpt_Mining_SubSurfDispMisle_Turret_Small:"Sub-Surface Displacement Missile",Hpt_Mining_SubSurfDispMisle_Fixed_Medium:"Sub-Surface Displacement Missile",Hpt_Mining_SubSurfDispMisle_Turret_Medium:"Sub-Surface Displacement Missile",Hpt_Mining_AbrBlstr_Fixed_Small:"Abrasion Blaster",Hpt_Mining_AbrBlstr_Turret_Small:"Abrasion Blaster",Hpt_Mining_SeismChrgWarhd_Fixed_Medium:"Seismic Charge Launcher",Hpt_Mining_SeismChrgWarhd_Turret_Medium:"Seismic Charge Launcher",Hpt_MultiCannon_Fixed_Medium_Advanced:"Advanced Multi-Cannon",Hpt_MultiCannon_Fixed_Small_Advanced:"Advanced Multi-Cannon",Hpt_DumbfireMissileRack_Fixed_Small_Advanced:"Advanced Missile Rack",Hpt_DumbfireMissileRack_Fixed_Medium_Advanced:"Advanced Missile Rack",Hpt_ATDumbfireMissile_Fixed_Large_V2:"Enhanced AX Missile Rack",Hpt_ATMultiCannon_Fixed_Medium_V2:"Enhanced AX Multi-Cannon",Hpt_ATDumbfireMissile_Fixed_Medium_V2:"Enhanced AX Missile Rack",Hpt_ATDumbfireMissile_Turret_Large_V2:"Enhanced AX Missile Rack",Hpt_ATDumbfireMissile_Turret_Medium_V2:"Enhanced AX Missile Rack",Hpt_ATMultiCannon_Fixed_Large_V2:"Enhanced AX Multi-Cannon",Hpt_ATMultiCannon_Turret_Large_V2:"Enhanced AX Multi-Cannon",Hpt_ATMultiCannon_Turret_Medium_V2:"Enhanced AX Multi-Cannon",Hpt_ATMultiCannon_Gimbal_Large:"Enhanced AX Multi-Cannon",Hpt_ATMultiCannon_Gimbal_Medium:"Enhanced AX Multi-Cannon",Hpt_Human_Extraction_Fixed_Medium:"Sub-Surface Extraction Missile",Hpt_ATVentDisruptorPylon_Fixed_Medium:"Guardian Nanite Torpedo Pylon",Hpt_ATVentDisruptorPylon_Fixed_Large:"Guardian Nanite Torpedo Pylon",Hpt_Cannon_Gimbal_Medium_Burst:"Concord Cannon",Hpt_MiningToolV2_Fixed_Large:"Mining Volley Repeater",Hpt_MkIIPlasmaShockAutocannon_Fixed_Large:"Mk II Plasma Shock Accelerator",Hpt_ChaffLauncher_Tiny:"Chaff Launcher",Hpt_ElectronicCountermeasure_Tiny:"Electronic Countermeasure",Hpt_HeatSinkLauncher_Turret_Tiny:"Heat Sink Launcher",Hpt_PlasmaPointDefence_Turret_Tiny:"Point Defence",Hpt_CargoScanner_Size0_Class1:"Cargo Scanner",Hpt_CargoScanner_Size0_Class2:"Cargo Scanner",Hpt_CargoScanner_Size0_Class3:"Cargo Scanner",Hpt_CargoScanner_Size0_Class4:"Cargo Scanner",Hpt_CargoScanner_Size0_Class5:"Cargo Scanner",Hpt_CloudScanner_Size0_Class1:"Frame Shift Wake Scanner",Hpt_CloudScanner_Size0_Class2:"Frame Shift Wake Scanner",Hpt_CloudScanner_Size0_Class3:"Frame Shift Wake Scanner",Hpt_CloudScanner_Size0_Class4:"Frame Shift Wake Scanner",Hpt_CloudScanner_Size0_Class5:"Frame Shift Wake Scanner",Hpt_CrimeScanner_Size0_Class1:"Kill Warrant Scanner",Hpt_CrimeScanner_Size0_Class2:"Kill Warrant Scanner",Hpt_CrimeScanner_Size0_Class3:"Kill Warrant Scanner",Hpt_CrimeScanner_Size0_Class4:"Kill Warrant Scanner",Hpt_CrimeScanner_Size0_Class5:"Kill Warrant Scanner",Hpt_ShieldBooster_Size0_Class1:"Shield Booster",Hpt_ShieldBooster_Size0_Class2:"Shield Booster",Hpt_ShieldBooster_Size0_Class3:"Shield Booster",Hpt_ShieldBooster_Size0_Class4:"Shield Booster",Hpt_ShieldBooster_Size0_Class5:"Shield Booster",Hpt_AntiUnknownShutdown_Tiny:"Shutdown Field Neutraliser",Hpt_XenoScanner_Basic_Tiny:"Xeno Scanner",Hpt_XenoScannerMk2_Basic_Tiny:"Enhanced Xeno Scanner",Hpt_MRAScanner_Size0_Class1:"Pulse Wave Analyser",Hpt_MRAScanner_Size0_Class2:"Pulse Wave Analyser",Hpt_MRAScanner_Size0_Class3:"Pulse Wave Analyser",Hpt_MRAScanner_Size0_Class4:"Pulse Wave Analyser",Hpt_MRAScanner_Size0_Class5:"Pulse Wave Analyser",Hpt_CausticSinkLauncher_Turret_Tiny:"Caustic Sink Launcher",Hpt_AntiUnknownShutdown_Tiny_V2:"Thargoid Pulse Neutraliser",Hpt_XenoScanner_Advanced_Tiny:"Pulse Wave Xeno Scanner"},names:{"Lightweight Alloy":{en:"Lightweight Alloy",de:"Leichte Legierung",es:"Aleaciones ligeras",fr:"Alliage léger",pt:"Liga leve",ru:"Легкий сплав"},"Reinforced Alloy":{en:"Reinforced Alloy",de:"Verstärkte Legierung",es:"Aleaciones reforzadas",fr:"Alliage renforcé",pt:"Liga reforçada",ru:"Укрепленный сплав"},"Military Grade Composite":{en:"Military Grade Composite",de:"Militär-Komposit",es:"Compuesto de clase militar",fr:"Composite militaire",pt:"Composto de nível militar",ru:"Композит военного класса"},"Mirrored Surface Composite":{en:"Mirrored Surface Composite",de:"Gespiegelte-Oberfläche-Komposit",es:"Compuesto de superficie reflectante",fr:"Composite à surface miroir",pt:"Composto de superfície reflexiva",ru:"Композит с зеркальной поверхностью"},"Reactive Surface Composite":{en:"Reactive Surface Composite",de:"Reaktive-Oberfläche-Komposit",es:"Compuesto de superficie reactiva",fr:"Composite à surface réactive",pt:"Composto de superfície reativa",ru:"Композит с реактивной поверхностью"},"Power Plant":{en:"Power Plant",de:"Kraftwerk",es:"Núcleo de energía",fr:"Générateur",pt:"Gerador de energia",ru:"Силовая установка"},Thrusters:{en:"Thrusters",de:"Schubdüsen",es:"Impulsores",fr:"Propulseurs",pt:"Propulsores",ru:"Маневровые двигатели"},"Frame Shift Drive":{en:"Frame Shift Drive",de:"Frameshiftantrieb",es:"Motor de distorsión",fr:"Réacteur FSD",pt:"Motor de distorção de fase",ru:"Рамочно-сместительный двигатель (FSD)"},"Life Support":{en:"Life Support",de:"Lebenserhaltung",es:"Soporte vital",fr:"Systèmes de survie",pt:"Suporte de vida",ru:"Система жизнеобеспечения"},"Power Distributor":{en:"Power Distributor",de:"Energieverteiler",es:"Distribuidor de energía",fr:"Répartiteur de puissance",pt:"Distribuidor de energia",ru:"Распределитель питания"},Sensors:{en:"Sensors",de:"Sensoren",es:"Sensores",fr:"Capteurs",pt:"Sensores",ru:"Сенсоры"},"Fuel Tank":{en:"Fuel Tank",de:"Treibstofftank",es:"Tanque de combustible",fr:"Réservoir",pt:"Tanque de combustível",ru:"Топливный бак"},"Enhanced Performance Thrusters":{en:"Enhanced Performance Thrusters",de:"Schubdüsen mit verbesserter Leistung",es:"Propulsores de rendimiento mejorado",fr:"Propulseurs à performances améliorées",pt:"Propulsores de desempenho melhorado",ru:"Усиленные маневровые двигатели"},"Frame Shift Drive (SCO)":{en:"Frame Shift Drive (SCO)",de:"Frameshiftantrieb (SCÜ)",es:"Motor de distorsión (SdS)",fr:"Réacteur FSD (SSN)",pt:"Motor de distorção de fase (SSV)",ru:"Двигатель FSD (ПГР)"},"Mk II Ablative Lightweight Alloys":{en:"Mk II Ablative Lightweight Alloys",de:"Ablativ-Leichte Legierungen Mk II",es:"Aleaciones ligeras ablativas para Mk II",fr:"Alliages légers ablatifs Mk II",pt:"Ligas leves ablativas Mk II",ru:"Абляционные легкие сплавы Mk II"},"Mk II Ablative Reinforced Alloys":{en:"Mk II Ablative Reinforced Alloys",de:"Ablativ-Verstärkte Legierungen Mk II",es:"Aleaciones con refuerzo ablativo para Mk II",fr:"Alliages renforcés ablatifs Mk II",pt:"Ligas reforçadas ablativas Mk II",ru:"Абляционные укрепленные сплавы Mk II"},"Mk II Ablative Military Grade Composite":{en:"Mk II Ablative Military Grade Composite",de:"Ablativ-Militär-Komposit Mk II",es:"Compuesto de clase militar ablativo para Mk II",fr:"Composite militaire ablatif Mk II",pt:"Composto de nível militar ablativo Mk II",ru:"Абляционный композит военного класса Mk II"},"Mk II Ablative Mirrored Surface Composite":{en:"Mk II Ablative Mirrored Surface Composite",de:"Ablativ-Gespiegelte-Oberfläche-Komposit Mk II",es:"Compuesto de superficie reflectante ablativo para Mk II",fr:"Composite à surface miroir ablatif Mk II",pt:"Composto de superfície reflexiva ablativo Mk II",ru:"Абляционный композит с зеркальной поверхностью Mk II"},"Mk II Ablative Reactive Surface Composite":{en:"Mk II Ablative Reactive Surface Composite",de:"Ablativ-Reaktive-Oberfläche-Komposit Mk II",es:"Compuesto de superficie reactiva ablativo para Mk II",fr:"Composite à surface réactive ablatif Mk II",pt:"Composto de superfície reativa ablativo Mk II",ru:"Абляционный композит с реактивной поверхностью Mk II"},"Mk II Supercharge Optimised Frame Shift Drive (SCO)":{en:"Mk II Supercharge Optimised Frame Shift Drive (SCO)",de:"Superladungs-Opt. FSA (SCÜ) Mk II",es:"MDD (SdS) optimizado para sobrecarga de Mk II",fr:"FSD (SSN) à optimisation superchargée Mk II",pt:"MDD (SSV) otimizado para sobrecarga Mk II",ru:"Оптимизированный двигатель FSD (ПГР) Mk II"},"Mk II Gravity Optimised Thrusters":{en:"Mk II Gravity Optimised Thrusters",de:"Schwerkraft-Opt. Schubdüsen Mk II",es:"Impulsores grav. optimizados para Mk II",fr:"Propulseurs à optimisation grav. Mk II",pt:"Propulsores otimizados para grav. Mk II",ru:"Маневровые двигатели Mk II для полетов при действии гравитации"},"Mk II Agile Boost Thrusters":{en:"Mk II Agile Boost Thrusters",de:"Wendige Boost-Schubdüsen Mk II",es:"Impulsores ágiles con postquemador Mk II",fr:"Propulseurs de contrôle du turbo Mk II",pt:"Propulsores de aceleração ágil da Mk II",ru:"Маневровые двигатели ускорения Mk II"},"Standard Docking Computer":{en:"Standard Docking Computer",de:"Standard-Landecomputer",es:"Computadora de aterrizaje asistido",fr:"Ordinateur d'appontage standard",pt:"Computador de docagem padrão",ru:"Стыковочный компьютер"},"Shield Generator":{en:"Shield Generator",de:"Schildgenerator",es:"Generador de escudos",fr:"Générateur de bouclier",pt:"Gerador de escudo",ru:"Генератор щита"},"Shield Cell Bank":{en:"Shield Cell Bank",de:"Schildzellenbank",es:"Célula de refuerzo de escudo",fr:"Réserve de cellules d'énergie",pt:"Banco de célula de escudo",ru:"Щитонакопитель"},"Cargo Rack":{en:"Cargo Rack",de:"Frachtgestell",es:"Bodega de carga",fr:"Compartiment soute",pt:"Estante de carga",ru:"Грузовой стеллаж"},"Hatch Breaker Limpet Controller":{en:"Hatch Breaker Limpet Controller",de:"Steuerung Ladelukenöffner-Drohne",es:"Lanzador dron extractor",fr:"Contrôleur de drone perce-soute",pt:"Controlador de drone quebra-escotilha",ru:"Контроллер дрона-взломщика трюмов"},"Detailed Surface Scanner":{en:"Detailed Surface Scanner",de:"Detail-Oberflächen-Scanner",es:"Escáner de análisis de superficie",fr:"Détecteur de surface détaillé",pt:"Scanner de superfície detalhada",ru:"Подробный сканер поверхностей"},"Fuel Scoop":{en:"Fuel Scoop",de:"Treibstoffsammler",es:"Colector de combustible",fr:"Récupérateur de carburant",pt:"Coletor de combustível",ru:"Топливозаборник"},Refinery:{en:"Refinery",de:"Raffinerie",es:"Refinería",fr:"Raffinerie",pt:"Refinaria",ru:"Очиститель"},"Frame Shift Drive Interdictor":{en:"Frame Shift Drive Interdictor",de:"Frameshiftantrieb-Unterbrecher",es:"Interdictor de MDD",fr:"Intercepteur de réacteur FSD",pt:"Interditor de motor de distorção",ru:"Перехватчик FSD"},"Auto Field-Maintenance Unit":{en:"Auto Field-Maintenance Unit",de:"Automatische Feldwartungs-Einheit",es:"Unidad de automantenimiento",fr:"Unité maintenance terrain auto",pt:"Unidade de Manutenção",ru:"Блок автом. полевого ремонта"},"Hull Reinforcement Package":{en:"Hull Reinforcement Package",de:"Rumpfhüllen-Verstärkung",es:"Paquete de refuerzo estructural",fr:"Renforcement de coque",pt:"Pacote de reforço de casco",ru:"Набор для усиления корпуса"},"Collector Limpet Controller":{en:"Collector Limpet Controller",de:"Steuerung Sammeldrohne",es:"Lanzador dron colector",fr:"Contrôleur de collecteurs",pt:"Controlador de drone coletor",ru:"Контроллер дрона-сборщика"},"Fuel Transfer Limpet Controller":{en:"Fuel Transfer Limpet Controller",de:"Steuerung Treibstofftransferdrohnen",es:"Lanzador drón de combustible",fr:"Contrôleur de ravitailleur",pt:"Controlador de drone de combustível",ru:"Контроллер дрона-заправщика"},"Prospector Limpet Controller":{en:"Prospector Limpet Controller",de:"Steuerung Erzsuche-Drohne",es:"Lanzador dron prospector",fr:"Contrôleur de drone de prospection",pt:"Controlador de drone prospector",ru:"Контроллер дрона-геологоразведчика"},"Prismatic Shield Generator":{en:"Prismatic Shield Generator",de:"Prismaschildgenerator",es:"Generador de escudos prismáticos",fr:"Générateur de bouclier prismatique",pt:"Gerador de escudo prismático",ru:"Призматический щитогенератор"},"Bi-Weave Shield Generator":{en:"Bi-Weave Shield Generator",de:"Zwei-Schicht-Schildgenerator",es:"Generador de escudo entrelazados",fr:"Générateur de bouclier entrelacé",pt:"Gerador de escudo entrelaçado",ru:"Двухпоточный щитогенератор"},"Planetary Vehicle Hangar":{en:"Planetary Vehicle Hangar",de:"Planetenfahrzeug-Hangar",es:"Hangar de vehículo planetario",fr:"Hangar des véhicules planétaires",pt:"Hangar de veículo planetário",ru:"Гараж для планетарного транспорта"},"Planetary Approach Suite":{en:"Planetary Approach Suite",de:"Planetenanflug-Suite",es:"Equipo de aproximación planetaria",fr:"Installation d'approche planétaire",pt:"Instrumento de aproximação planetária",ru:"К-т для сближения с планетой"},"Corrosion Resistant Cargo Rack":{en:"Corrosion Resistant Cargo Rack",de:"Anti-Korrosions-Frachtgestell",es:"Bodega de carga anticorrosión",fr:"Compartiment de soute anticorrosion",pt:"Estante de carga anticorrosão",ru:"Антикоррозийный грузовой стеллаж"},"Cargo Hatch":{en:"Cargo Hatch",de:"Frachtluke",es:"Escotilla de carga",fr:"Écoutille de soute",pt:"Escotilha da carga",ru:"Грузовой люк"},"Economy Class Passenger Cabin":{en:"Economy Class Passenger Cabin",de:"Economy-Klasse-Passagierkabine",es:"Cabina de pasajero clase económica",fr:"Cabine passagers Économie",pt:"Cabine de Passageiro Classe Econômica",ru:"Каюта пассажира эконом-класса"},"Business Class Passenger Cabin":{en:"Business Class Passenger Cabin",de:"Business-Klasse-Passagierkabine",es:"Cabina de pasajero clase preferente",fr:"Cabine passagers Affaires",pt:"Cabine de Passageiro Classe Executiva",ru:"Каюта пассажира бизнес-класса"},"First Class Passenger Cabin":{en:"First Class Passenger Cabin",de:"Erste-Klasse-Passagierkabine",es:"Cabina de pasajero primera clase",fr:"Cabine passagers 1re",pt:"Cabine de Passageiro Primeira Classe",ru:"Каюта пассажира первого класса"},"Luxury Class Passenger Cabin":{en:"Luxury Class Passenger Cabin",de:"Luxus-Klasse-Passagierkabine",es:"Cabina de pasajero clase lujo",fr:"Cabine de passagers de luxe",pt:"Cabine de Passageiro Classe de Luxo",ru:"Каюта пассажира люкс-класса"},"Mk I Vessel Hangar":{en:"Mk I Vessel Hangar",de:"Schiffshangar",es:"Hangar de naves",fr:"Hangar à vaisseaux",pt:"Hangar de nave",ru:"Ангар для ЛА"},"Mk II Vessel Hangar":{en:"Mk II Vessel Hangar",de:"Mk-II-Schiffshangar",es:"Hangar de naves Mk II",fr:"Hangar à vaisseaux Mk II",pt:"Hangar de nave Mk II",ru:"Ангар для ЛА Mk II"},"Module Reinforcement Package":{en:"Module Reinforcement Package",de:"Modulverstärkung",es:"Paquete de refuerzo de módulo",fr:"Pack de renforcement de modules",pt:"Pacote de Reforço de módulo",ru:"Набор для усиления модуля"},"Repair Limpet Controller":{en:"Repair Limpet Controller",de:"Steuerung Reparaturdrohne",es:"Lanzador dron reparador",fr:"Contrôleur de drone réparateur",pt:"Controlador de drone de reparo",ru:"Контроллер дрона-ремонтника"},"Research Limpet Controller":{en:"Research Limpet Controller",de:"Steuerung Forschungsdrohne",es:"Lanzador dron de investigación",fr:"Contrôleur de drone de recherche",pt:"Controlador de drone de pesquisa",ru:"Контроллер дрона-исследователя"},"Meta Alloy Hull Reinforcement":{en:"Meta Alloy Hull Reinforcement",de:"Rumpfhüllenverstärkung (Meta-Legierung)",es:"Paquete de refuerzo estructural de aleaciones metálicas",fr:"Renforcement de coque en méta-alliage",pt:"Pacote de reforço de casco com meta-ligas",ru:"Набор для метасплавного усиления корпуса"},"Decontamination Limpet Controller":{en:"Decontamination Limpet Controller",de:"Steuerung Dekontaminationsdrohne",es:"Lanzador dron de descontaminación",fr:"Contrôleur de drone de décontamination",pt:"Controlador de drone de descontaminação",ru:"Контроллер дрона-очистителя"},"Guardian Hull Reinforcement":{en:"Guardian Hull Reinforcement",de:"Guardian-Rumpfhüllenverstärkung",es:"Paquete de refuerzo estructural guardián",fr:"Pack de renforcement de coque - Guardians",pt:"Pacote de reforço de casco Guardian",ru:"Набор для усиления корпуса Стражей"},"Guardian Module Reinforcement":{en:"Guardian Module Reinforcement",de:"Guardian-Modulverstärkung",es:"Paquete de refuerzo de módulo guardián",fr:"Pack de renforcement de modules - Guardians",pt:"Pacote de reforço de módulo Guardian",ru:"Набор для усиления модуля Стражей"},"Guardian Shield Reinforcement":{en:"Guardian Shield Reinforcement",de:"Guardian-Schildverstärkung",es:"Paquete de refuerzo de escudo guardián",fr:"Pack de renforcement de bouclier - Guardians",pt:"Pacote de reforço de escudo Guardian",ru:"Набор для усиления щита Стражей"},"Guardian FSD Booster":{en:"Guardian FSD Booster",de:"Guardian-Frameshiftantrieb-Booster",es:"Potenciador de motor de distorsión guardián",fr:"Survolteur de réacteur FSD - Guardians",pt:"Potenciador do motor de distorção de fase Guardian",ru:"Ускоритель FSD Стражей"},"Guardian Hybrid Power Distributor":{en:"Guardian Hybrid Power Distributor",de:"Guardian-Hybrid-Energieverteiler",es:"Distribuidor de energía híbrido guardián",fr:"Répartiteur de puissance hybride - Guardians",pt:"Distribuidor de energia híbrido Guardian",ru:"Гибридный распределитель питания Стражей"},"Guardian Hybrid Power Plant":{en:"Guardian Hybrid Power Plant",de:"Guardian-Hybrid-Kraftwerk",es:"Núcleo de energía híbrida guardián",fr:"Générateur hybride - Guardians",pt:"Gerador de energia híbrido Guardian",ru:"Гибридная силовая установка Стражей"},"Recon Limpet Controller":{en:"Recon Limpet Controller",de:"Steuerung Aufklärungsdrohne",es:"Lanzador dron de reconocimiento",fr:"Contrôleur de drone de reconnaissance",pt:"Controlador de drone de reconhecimento",ru:"Контроллер дрона-разведчика"},"Supercruise Assist":{en:"Supercruise Assist",de:"Supercruise-Assistent",es:"Asistencia de supercrucero",fr:"Super-navigation assistée",pt:"Assistência de supervelocidade",ru:"Помощь в гиперкрейсерском режиме"},"Advanced Docking Computer":{en:"Advanced Docking Computer",de:"Erweiterter Landecomputer",es:"Computadora de aterrizaje avanzada",fr:"Ordinateur d'appontage avancé",pt:"Computador de docagem avançado",ru:"Улучшенный стыковочный компьютер"},"Advanced Planetary Approach Suite":{en:"Advanced Planetary Approach Suite",de:"Fortgeschrittene Planetenanflug-Suite",es:"Eq. de aproximación planetaria avanzado",fr:"Inst. approche planétaire perfectionnés",pt:"Inst. avançado de aproximação planetária",ru:"Продвинутый комплект для сближения с планетой"},"Mining Multi Limpet Controller":{en:"Mining Multi Limpet Controller",de:"Abbau-Multi-Drohnensteuerung",es:"Multilanzador dron de minería",fr:"Contrôleur multi-drones de minage",pt:"Multi Controlador de Drone de Mineração",ru:"Мультиконтроллер дронов-добытчиков"},"Operations Multi Limpet Controller":{en:"Operations Multi Limpet Controller",de:"Operationen-Drohnensteuerung",es:"Lanzador dron de operaciones",fr:"Contrôleur de drones d'opérations",pt:"Controlador de drones operacionais",ru:"Контроллер операционных дронов"},"Rescue Multi Limpet Controller":{en:"Rescue Multi Limpet Controller",de:"Rettungs-Drohnensteuerung",es:"Lanzador dron de rescate",fr:"Contrôleur de drones de sauvetage",pt:"Controlador de drones de resgate",ru:"Контроллер дронов-спасателей"},"Xeno Multi Limpet Controller":{en:"Xeno Multi Limpet Controller",de:"Xeno-Drohnensteuerung",es:"Lanzador dron xeno",fr:"Contrôleur de drones xéno",pt:"Controlador de drones alienígenas",ru:"Контроллер дронов иных"},"Universal Multi Limpet Controller":{en:"Universal Multi Limpet Controller",de:"Universelle Multi-Drohnensteuerung",es:"Multilanzador dron universal",fr:"Contrôleur multi-drones universel",pt:"Controlador multidrones universal",ru:"Универсальный мультиконтроллер дронов"},"Experimental Weapon Stabiliser":{en:"Experimental Weapon Stabiliser",de:"Experimenteller Waffenstabilisator",es:"Estabilizador de armas experimentales",fr:"Stabilisateur d'armes expérimentales",pt:"Estabilizador de arma experimental",ru:"Стабилизатор экспериментального оружия"},"Mk II Cargo Rack":{en:"Mk II Cargo Rack",de:"Frachtgestell für Mk II",es:"Bodega de carga Mk II",fr:"Compartiment de soute Mk II",pt:"Estante de carga da Mk II",ru:"Грузовой стеллаж Mk II"},"Mk II Mining Multi-Limpet Controller":{en:"Mk II Mining Multi-Limpet Controller",de:"Mk II Abbau-Multi-Drohnensteuerung",es:"Multilanzador dron de minería Mk II",fr:"Contrôleur multi-drones de minage Mk II",pt:"Controlador multidrones de mineração da Mk II",ru:"Мультиконтроллер дронов-добытчиков Mk II"},"MkII Economy Class Passenger Cabin":{en:"MkII Economy Class Passenger Cabin",de:"Economy-Klasse-Passagierkabine Mk II",es:"Cabina de pasajero clase económica Mk II",fr:"Cabine passagers Économie Mk II",pt:"Cabine de Passageiro Classe Econômica Mk II",ru:"Каюта пассажира эконом-класса Mk II"},"MkII Business Class Passenger Cabin":{en:"MkII Business Class Passenger Cabin",de:"Business-Klasse-Passagierkabine Mk II",es:"Cabina de pasajero clase preferente Mk II",fr:"Cabine passagers Affaires Mk II",pt:"Cabine de Passageiro Classe Executiva Mk II",ru:"Каюта пассажира бизнес-класса Mk II"},"Pulse Laser":{en:"Pulse Laser",de:"Impulslaser",es:"Láser de pulsos",fr:"Laser à impulsion",pt:"Laser de pulso",ru:"Импульсный лазер"},"Burst Laser":{en:"Burst Laser",de:"Salvenlaser",es:"Láser de ráfagas",fr:"Laser à rafale",pt:"Laser de rajada",ru:"Пульсирующий лазер"},"Beam Laser":{en:"Beam Laser",de:"Strahlenlaser",es:"Láser de rayo",fr:"Rayon laser",pt:"Laser contínuo",ru:"Пучковый лазер"},Cannon:{en:"Cannon",de:"Kanone",es:"Cañón",fr:"Canon",pt:"Canhão",ru:"Орудие"},"Fragment Cannon":{en:"Fragment Cannon",de:"Splitterkanone",es:"Cañón de fragmentación",fr:"Canon à fragmentation",pt:"Canhão de fragmentos",ru:"Залповое орудие"},"Multi-Cannon":{en:"Multi-Cannon",de:"Mehrfachgeschütz",es:"Multicañón",fr:"Multi-canon",pt:"Canhão de repetição",ru:"Многоствольное орудие"},"Plasma Accelerator":{en:"Plasma Accelerator",de:"Plasma-beschleuniger",es:"Acelerador de plasma",fr:"Accélérateur à plasma",pt:"Acelerador de plasma",ru:"Ускоритель плазмы"},"Rail Gun":{en:"Rail Gun",de:"Schienenkanone",es:"Cañón de riel",fr:"Canon électrique",pt:"Canhão elétrico",ru:"Рельсотрон"},"Seeker Missile Rack":{en:"Seeker Missile Rack",de:"Suchraketenrampe",es:"Lanzamisiles guiados",fr:"Missiles TC",pt:"Estante de Míssil Guiado",ru:"Блок ракет с самонаведением"},"Mine Launcher":{en:"Mine Launcher",de:"Minenwerfer",es:"Lanzaminas",fr:"Lance-mines",pt:"Lança minas",ru:"Минирующее устройство"},"Torpedo Pylon":{en:"Torpedo Pylon",de:"Torpedopylon",es:"Lanzatorpedos",fr:"Tube lance-torpille",pt:"Pilone de torpedo",ru:"Торпедная установка"},"Mining Laser":{en:"Mining Laser",de:"Abbaulaser",es:"Láser de minería",fr:"Laser minier",pt:"Laser de mineração",ru:"Проходочный лазер"},"Missile Rack":{en:"Missile Rack",de:"Raketenrampe",es:"Lanzamisiles",fr:"Batterie de missiles",pt:"Estante de mísseis",ru:"Блок ракет"},"Advanced Plasma Accelerator":{en:"Advanced Plasma Accelerator",de:"Optimierter Plasmabeschleuniger",es:"Acelerador de plasma avanzado",fr:"Accélérateur à plasma perfectionné",pt:"Acelerador de plasma avançado",ru:"Улучшенный ускоритель плазмы"},"Mining Lance":{en:"Mining Lance",de:"Lanzenstrahlabbaulaser",es:"Láser de rayo Lanza Perforadora",fr:"Lance de minage laser",pt:"Laser contínuo lança mineradora",ru:"Пучковый лазер «Копье шахтера»"},"Imperial Hammer Rail Gun":{en:"Imperial Hammer Rail Gun",de:"Der Imperiale Hammer",es:"Cañón de riel Martillo Imperial",fr:"Canon électrique marteleur impérial",pt:"Canhão elétrico martelo imperial",ru:"Рельсотрон «Имперский молот»"},"Pulse Disruptor Laser":{en:"Pulse Disruptor Laser",de:"Impulsunterbrecherlaser",es:"Láser de pulsos disruptores",fr:"Laser à impulsion foudroyant",pt:"Laser de pulso disruptor",ru:"Импульсный лазер «Диверсант»"},"Pacifier Frag-Cannon":{en:"Pacifier Frag-Cannon",de:"Friedensstifter-Splitterkanone",es:"Cañón de fragmentación Pacificador",fr:"Pacificateur à fragmentation",pt:"Canhão de fragmentos pacificador",ru:"Залповое орудие «Миротворец»"},"Pack-Hound Missile Rack":{en:"Pack-Hound Missile Rack",de:"Schwarmraketenwerfer",es:"Lanzamisiles Jauría de Sabuesos",fr:"Batterie de missiles essaim",pt:"Lança-mísseis de enxame",ru:"Блок ракет «Гончие»"},"Enforcer Cannon":{en:"Enforcer Cannon",de:"Vollstreckerkanone",es:"Multicañón Ejecutor",fr:"Canon exécuteur",pt:"Canhão executor",ru:"Пушка «Убийца»"},"Retributor Beam Laser":{en:"Retributor Beam Laser",de:"Vergeltungsstrahlenlaser",es:"Láser de rayo Vengador",fr:"Rayon laser calorifique",pt:"Laser contínuo retaliador",ru:"Пучковый лазер «Каратель»"},"Shock Mine Launcher":{en:"Shock Mine Launcher",de:"Schockminenwerfer",es:"Lanzaminas de impacto",fr:"Lance-mines électriques",pt:"Lança minas de impacto",ru:"Установщик шоковых мин"},"Cytoscrambler Burst Laser":{en:"Cytoscrambler Burst Laser",de:"Zytostreusalvenlaser",es:"Láser de ráfagas de citodistorsión",fr:"Laser à rafale cytobrouilleur",pt:"Laser de rajada cito-espalhador",ru:"Пульсирующий лазер «Дезинтегратор»"},"Rocket Propelled FSD Disruptor":{en:"Rocket Propelled FSD Disruptor",de:"Raketengetriebene Eindämmungsrakete",es:"Misil de contención propulsado por cohetes",fr:"Missile de confinement à propulsion",pt:"Míssil de contenção propulsado",ru:"Реактивная сдерживающая ракета"},"Remote Release Flak Launcher":{en:"Remote Release Flak Launcher",de:"Flakwerfer mit Fernzündung",es:"Lanzador antiaéreo remoto",fr:"Lanceur antiaérien déclenché à distance",pt:"Lançador de Flak Remoto",ru:"Зенитная установка (снаряды с дистанционным подрывом)"},"AX Missile Rack":{en:"AX Missile Rack",de:"AX-Raketenrampe",es:"Lanzamisiles AX",fr:"Batterie de missiles AX",pt:"Estante de Mísseis AX",ru:"Блок ракет АИ"},"AX Multi-Cannon":{en:"AX Multi-Cannon",de:"AX-Mehrfachgeschütz",es:"Multicañón AX",fr:"Multi-canon AX",pt:"Canhão de Repetição AX",ru:"Многоствольное орудие АИ"},"Guardian Gauss Cannon":{en:"Guardian Gauss Cannon",de:"Guardian-Gausskanone",es:"Cañón gauss guardián",fr:"Canon de Gauss - Guardians",pt:"Canhão gauss Guardian",ru:"Пушка Гаусса Стражей"},"Enzyme Missile Rack":{en:"Enzyme Missile Rack",de:"Enzymraketenrampe",es:"Lanzamisiles de enzimas",fr:"Batterie de missiles enzymatiques",pt:"Estante de Mísseis Enzimáticos",ru:"Блок энзимных ракет"},"Remote Release Flechette Launcher":{en:"Remote Release Flechette Launcher",de:"Flechettewerfer mit Fernzündung",es:"Lanzador de flechettes remoto",fr:"Lanceur de fléchettes déclenchées à distance",pt:"Lançador de Dardos de Liberação Remota",ru:"Установка для стрельбы стреловидными снарядами с дистанционным подрывом"},"Guardian Plasma Charger":{en:"Guardian Plasma Charger",de:"Guardian-Plasmawerfer",es:"Cargador de plasma guardián",fr:"Chargeur à plasma - Guardians",pt:"Carregador de plasma Guardian",ru:"Плазменная пушка Стражей"},"Guardian Shard Cannon":{en:"Guardian Shard Cannon",de:"Guardian-Fragmentkanone",es:"Cañón de esquirlas guardián",fr:"Canon à éclats - Guardians",pt:"Canhão de fragmentos Guardian",ru:"Осколочное орудие Стражей"},"Shock Cannon":{en:"Shock Cannon",de:"Schockkanone",es:"Cañón de impacto",fr:"Canon de choc",pt:"Canhão de impacto",ru:"Шоковое орудие"},"Sub-Surface Displacement Missile":{en:"Sub-Surface Displacement Missile",de:"Untergrund-Verdrängungsrakete",es:"Misil de desplazamiento",fr:"Missile à charge pénétrante souterraine",pt:"Míssil de deslocamento",ru:"Вытесняющая ракета для добычи глубинных залежей"},"Abrasion Blaster":{en:"Abrasion Blaster",de:"Abrasionsblaster",es:"Destructor de abrasión",fr:"Surfaceur abrasif",pt:"Detonador de abrasão",ru:"Абразивный бластер"},"Seismic Charge Launcher":{en:"Seismic Charge Launcher",de:"Seismischer Ladungswerfer",es:"Lanzador de carga sísmica",fr:"Lanceur à charge sismique",pt:"Lançador de carga sísmica",ru:"Пусковая установка для сейсмических зарядов"},"Advanced Multi-Cannon":{en:"Advanced Multi-Cannon",de:"Optimiertes Mehrfachgeschütz",es:"Multicañón avanzado",fr:"Multi-canon perfectionné",pt:"Multicanhão avançado",ru:"Продвинутое многоствольное орудие"},"Advanced Missile Rack":{en:"Advanced Missile Rack",de:"Optimierte Raketenrampe",es:"Lanzamisiles avanzado",fr:"Batterie de missiles perfectionnée",pt:"Estante de mísseis avançada",ru:"Продвинутый ракетный лоток"},"Enhanced AX Missile Rack":{en:"Enhanced AX Missile Rack",de:"Verbesserte AX-Raketenrampe",es:"Lanzamisiles AX mejorado",fr:"Batterie missiles AX améliorée",pt:"Estante de Mísseis AX melhorada",ru:"Улучшенный блок АИ-ракет"},"Enhanced AX Multi-Cannon":{en:"Enhanced AX Multi-Cannon",de:"Verbessertes AX-Mehrfachgeschütz",es:"Multicañón AX mejorado",fr:"Multi-canon AX amélioré",pt:"Canhão de Repetição AX melhorado",ru:"Улучшенное многоствольное АИ-орудие"},"Sub-Surface Extraction Missile":{en:"Sub-Surface Extraction Missile",de:"Untergrund-Förderungsrakete",es:"Misil de extracción subterránea",fr:"Missile d'extraction interne",pt:"Míssil de extração subterrâneo",ru:"Ракета для извлечения груза из-под корпуса"},"Guardian Nanite Torpedo Pylon":{en:"Guardian Nanite Torpedo Pylon",de:"Guardian-Nanobot-Torpedopylon",es:"Lanzatorpedos nanotecnológico guardián",fr:"Tube lance-torpille à nanites - Guardians",pt:"Pilone de torpedo de nanite Guardian",ru:"Торпедная нанитная установка Стражей"},"Concord Cannon":{en:"Concord Cannon",de:"Einklangkanone",es:"Cañón de concordia",fr:"Canon Concorde",pt:"Canhão Concord",ru:"Орудие «Конкорд»"},"Mining Volley Repeater":{en:"Mining Volley Repeater",de:"Schürfsalven-Repetierer",es:"Repetidor de ráfaga de minería",fr:"Lanceur de salves de minage",pt:"Repetidor de rajadas de mineração",ru:"Проходочная автопушка"},"Mk II Plasma Shock Accelerator":{en:"Mk II Plasma Shock Accelerator",de:"Plasma-Schockbeschleuniger Mk II",es:"Acelerador de descarga de plasma Mk II",fr:"Accélérateur de plasma Mk II",pt:"Acelerador de impacto de plasma da Mk II",ru:"Плазменный шоковый ускоритель Mk II"},"Chaff Launcher":{en:"Chaff Launcher",de:"Düppel-Werfer",es:"Lanzador de señuelos",fr:"Lanceur de paillettes",pt:"Lançador de chaff",ru:"Разбрасыватель дипольных отражателей"},"Electronic Countermeasure":{en:"Electronic Countermeasure",de:"Elektronische Gegenmaßnahme",es:"Contramedida electrónica",fr:"Contre-mesures électroniques",pt:"Contramedida eletrônica",ru:"Радиоэлектр. подавление"},"Heat Sink Launcher":{en:"Heat Sink Launcher",de:"Kühlkörperwerfer",es:"Lanzador de eyector térmico",fr:"Éjecteur de dissipateur thermique",pt:"Lançador de dissipador",ru:"Теплоотводная катапульта"},"Point Defence":{en:"Point Defence",de:"Punktverteidigungsgeschütz",es:"Torreta de defensa de punto",fr:"Tourelle de défense ponctuelle",pt:"Torreta de defesa de ponto",ru:"Турель точечной обороны"},"Cargo Scanner":{en:"Cargo Scanner",de:"Verzeichnisscanner",es:"Escáner de manifiesto",fr:"Détecteur de manifeste",pt:"Scanner de Manifesto",ru:"Сканер содержимого"},"Frame Shift Wake Scanner":{en:"Frame Shift Wake Scanner",de:"FS-Sogwolkenscanner",es:"Escáner de estelas de distorsión",fr:"Détecteur de sillage FSD",pt:"Scanner de rastro de distorção",ru:"Сканер следа FSD"},"Kill Warrant Scanner":{en:"Kill Warrant Scanner",de:"Tötungsbefehl-Scanner",es:"Escáner de registro criminal",fr:"Détecteur d'avis de recherche",pt:"Scanner de registro criminal",ru:"Сканер преступников"},"Shield Booster":{en:"Shield Booster",de:"Schild-Booster",es:"Potenciador de escudos",fr:"Survolteur de bouclier",pt:"Potenciador de escudo",ru:"Усилитель щита"},"Shutdown Field Neutraliser":{en:"Shutdown Field Neutraliser",de:"Abschalt-Feldneutralisator",es:"Neutralizador de campo de desactivación",fr:"Neutralisateur de champ incapacitant",pt:"Neutralizador de Campo de Desativação",ru:"Нейтрализатор отключающего поля"},"Xeno Scanner":{en:"Xeno Scanner",de:"Xeno-Scanner",es:"Escáner Xeno",fr:"Détecteur de xénomorphes",pt:"Scanner Xeno",ru:"Ксено-сканер"},"Enhanced Xeno Scanner":{en:"Enhanced Xeno Scanner",de:"Verbesserter Xeno-Scanner",es:"Escáner Xeno mejorado",fr:"Détecteur de xénomorphes amélioré",pt:"Scanner Xeno aprimorado",ru:"Улучшенный ксеносканер"},"Pulse Wave Analyser":{en:"Pulse Wave Analyser",de:"Impulswellen-Analysator",es:"Analizador de onda de pulsos",fr:"Analyseur à onde pulsée",pt:"Analisador de onda de pulso",ru:"Анализатор импульсных волн"},"Caustic Sink Launcher":{en:"Caustic Sink Launcher",de:"Säure-Absorptionswerfer",es:"Eyector cáustico",fr:"Lanceur de siphon caustique",pt:"Lançador de dissipador cáustico",ru:"Антикоррозийная катапульта"},"Thargoid Pulse Neutraliser":{en:"Thargoid Pulse Neutraliser",de:"Thargoiden-Impuls-Neutralisator",es:"Neutralizador de pulsos Thargoide",fr:"Neutralisateur d'impulsion thargoid",pt:"Neutralizador de pulso Thargoid",ru:"Нейтрализатор таргоидских импульсов"},"Pulse Wave Xeno Scanner":{en:"Pulse Wave Xeno Scanner",de:"Impulswellen-Xeno-Scanner",es:"Xenoescáner de onda de pulsos",fr:"Détecteur de xénomorphes à onde pulsée",pt:"Scanner xeno de onda de pulso",ru:"Ксено-сканер импульсных волн"}}};var MODULE_NAMES=/* @__PURE__ */createDeduplicatedLocalizedNameIndex(module_names_default);function getModuleName(symbol,locale){return getLocalizedName(MODULE_NAMES,symbol,locale,"getModuleName","symbol")}export{getModuleName};//# sourceMappingURL=chunk-QJECDMQQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/i18n/modules.ts"],"names":["getLocalizedName","createDeduplicatedLocalizedNameIndex","module_names_default","MODULE_NAMES","getModuleName","symbol","locale"],"mappings":"O,23qFASA,IAAMG,4BAA+BF,qCACjCC,sBA8BG,SAASE,cAAcC,OAAgBC,QAC1C,OAAON,iBAAiBG,aAAcE,OAAQC,OAAQ,gBAAiB,SAC3E,QAAAF"}
1
+ {"version":3,"sources":["../src/i18n/modules.ts"],"names":["getLocalizedName","createDeduplicatedLocalizedNameIndex","module_names_default","MODULE_NAMES","getModuleName","symbol","locale"],"mappings":"O,2u2FASA,IAAMG,4BAA+BF,qCACjCC,sBAiCG,SAASE,cAAcC,OAAgBC,QAC1C,OAAON,iBAAiBG,aAAcE,OAAQC,OAAQ,gBAAiB,SAC3E,QAAAF"}